2011-06-17 18 views
5

guys i tratar de crear un producto personalizado a partir de un módulo con este código:Crear producto de un módulo de prestashop

$defaultLanguage = new Language((int)(Configuration::get('PS_LANG_DEFAULT'))); 
/* Add a new product */ 
$object = new Product(); 
$object->price = 22; 
$object->id_tax_rules_group = 0; 
$object->name = 'test'; 
$object->id_manufacturer = 0; 
$object->id_supplier = 0; 
$object->quantity = 1; 
$object->minimal_quantity = 1; 
$object->additional_shipping_cost = 0; 
$object->wholesale_price = 0; 
$object->ecotax = 0; 
$object->width = 0; 
$object->height = 0; 
$object->depth = 0; 
$object->weight = 0; 
$object->out_of_stock = 0; 
$object->active = 0; 
$object->id_category_default = 18; 
$object->category = 18; 
$object->available_for_order = 0; 
$object->show_price = 1; 
$object->on_sale = 0; 
$object->online_only = 1; 
$object->meta_keywords = 'test'; 
if($object->save()) 
    $object->add(); 
echo "produit ajouté"; 

El código funciona bien, se añadió el producto de la base de datos, pero no se muestran en la oficina administrativa, ¿alguien tiene una idea para resolver este problema?

Respuesta

12

El nombre y el campo de la palabra clave meta son conjuntos de múltiples idiomas. Si nos fijamos en AdminImport.php en admin/pestañas encontrará la definición de una función:

private static function createMultiLangField($field) 

Copiar esta función en su módulo y se puede usar para crear una matriz adecuada para estos campos en varios idiomas si lo llama pasando su texto como el parámetro $field (establecerá el valor para todos los idiomas en la cadena que pase). También debe establecer un valor por defecto para los campos description_short y link_rewrite:

$object->description_short = array((int)(Configuration::get('PS_LANG_DEFAULT')) => ''); 

y

$object->link_rewrite = array((int)(Configuration::get('PS_LANG_DEFAULT')) => ''); 

El segundo punto es que a pesar de que ha establecido la categoría por defecto, también tendrá que establecer explícitamente id_category como una matriz, por ejemplo

$object->category=array(18); 

también creo que usted debe entonces establecer las categorías explícitamente:

$object->updateCategories($object->category, true); 

A continuación, debería aparecer en el catálogo.

0

Puede consultar este ejemplo en el que el autor creó un procedimiento de importación para importar productos.

Custom Product Import

Como se puede ver después de la descarga del ProductImporter.php es que el id_lang se añade a cada propiedad.

-1

para hacer el producto disponible, es necesario cambiar esta situación:

$object->active = 1; // sets the product as active for shop 

-rk-

Cuestiones relacionadas