Pregunta

I Chicos, trato de crear un producto personalizado a partir de un módulo con este código:

$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, el producto se agregó a la base de datos, pero no se mostró en la oficina administrativa, ¿alguien tiene una idea para resolver este problema?

¿Fue útil?

Solución

El nombre y el campo de palabras clave meta son matrices de varios idiomas. Si observa AdminImport.php en Admin/Tabs, encontrará la definición de una función:

private static function createMultiLangField($field) 

Copie esta función en su módulo y puede usarla para crear una matriz adecuada para estos campos de varios idiomas si lo llama pasando su texto como el $field Parámetro (establecerá el valor de todos los idiomas en la cadena que pasa). También debe establecer un valor predeterminado para el description_short y link_rewrite campos:

$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 aunque ha establecido la categoría predeterminada, también tendrá que establecer explícitamente ID_Category como una matriz, por ejemplo,

$object->category=array(18);

También creo que deberías establecer las categorías explícitamente con:

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

Luego debería aparecer en el catálogo.

Otros consejos

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

Importación de productos personalizados

Como puede ver después de descargar el ProductImporter.php es que el ID_LANG se agrega a cada propiedad.

Para que el producto esté disponible, debe cambiar esto:

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

-rk-

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top