Domanda

Ragazzi, provo a creare un prodotto personalizzato da un modulo con questo codice:

$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é";

Il codice funziona bene, il prodotto è stato aggiunto al database ma non è stato visualizzato nel back office, qualcuno ha un'idea di risolvere questo problema?

È stato utile?

Soluzione

Il campo Nome e Meta Key Word sono entrambi array multi-linguaggio. Se guardi adminimport.php in admin/tabs troverai la definizione per una funzione:

private static function createMultiLangField($field) 

Copia questa funzione nel tuo modulo e puoi usarla per creare un array adatto per questi campi multi-lingua se la chiami passando il testo come il $field parametro (imposterà il valore per tutte le lingue sulla stringa in cui si passa). Dovresti anche impostare un valore predefinito per il description_short e link_rewrite campi:

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

e

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

Il secondo punto è che sebbene tu abbia impostato la categoria predefinita, dovrai anche impostare esplicitamente ID_Category come array EG

$object->category=array(18);

Penso anche che dovresti quindi impostare esplicitamente le categorie:

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

Dovrebbe quindi apparire nel catalogo.

Altri suggerimenti

È possibile fare riferimento a questo esempio in cui l'autore ha creato una procedura di importazione per importare prodotti.

Importazione del prodotto personalizzata

Come puoi vedere dopo il download il productimporter.php è che l'ID_LANG viene aggiunto a ciascuna proprietà.

Per rendere disponibile il prodotto, devi cambiare questo:

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

-rk-

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top