Jump to content

Mittels API Daten ins Prestashop einlesen


dashmir

Recommended Posts

Hallo zusammen

Ich habe eine Webseite mit Prestashop, unser Lieferant stellt  mittels einer API alle Daten zur Verfügung damit wir diese Daten in unserem Shop einlesen können. ( Bilder der Produkte, Preise, Lagerbestand, Beschreibung ect.)

Viel Berührung hatte ich mit Prestashop nicht, habe ich es trotzdem geschafft mittels einem Tool die Verbindung zu dieser API herzustellen. Das bedeutet, dass die Verbindung zu diesem Server soweit funktioniert. 

Das Ganze muss ich jetzt noch im Prestashop einbinden. Wo in Prestashop muss ich das einrichten, dass die Daten mittels dieser API geholt werden und auf unserem Shop angezeigt werden? 

Ich habe mich im Internet durch gelesen, sehe auch etwas mit Webservice (PSWebServiceLibrary.php), aber ob ich auf dem richtigen Weg bin weiss ich nicht wirklich.

Hat da jemand Erfahrung oder schon mal gemacht? Vielleicht hat auch jemand eine Idee mit welcher Anleitung es am besten geht. 

als Info: vom Lieferanten haben wir die URL auf die wir zugreifen können und auch ein Token.

Herzlichen Dank für eure Zeit und lieben Gruss

Dashmir

Link to comment
Share on other sites

  • 2 months later...

hallo zusammen, 

 

wie heisst es so schön, gestern standen wir vor dem Abgrund, heute sind wir ein Schritt weiter :-)

Ich bin erheblich weitergekommen mit meinem Script, habe aber noch ein paar Fragen und hoffe dass Ihr mir da weiterhelfen könnt.

1. Ich kann die Daten in die Datenbank einlesen und die Produkte werden auch im AdminPanel angezeigt, leider aber nicht im Frontend. Sobald ich ein Produkt dass ich über den Script eingelesen habe im AdminPanel aufmache um zu editieren und auf speichern drücke (ohne irgendwelche Veränderungen vorgenommen zu haben) wird das Produkt im Frontend angezeigt. 

Diesen Script verwende ich um die Produkte einzufügen:

dirname(__FILE__);
include_once 'config/config.inc.php';
include(dirname(__FILE__).'/init.php');



$defaultLanguage = new Language((int)(Configuration::get('PS_LANG_DEFAULT')));  
//Add a new product 
$object = new Product();
$object->price = $productPreis;
$object->id_tax_rules_group = 1;
$object->name[Configuration::get('PS_LANG_DEFAULT')] = $productName;
$object->description = $htmlDescription_long;
$object->description_short = 'short_description';
$object->reference= $productId;
$object->quantity = $productquantity;
$object->id_manufacturer = 4;
$object->id_supplier = 0;
$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 = 1;
$object->link_rewrite = array((int)Configuration::get('PS_LANG_DEFAULT'));
$object->id_category_default = $categoryId;
$object->category = $categoryId;
$object->available_for_order = 1;
$object->show_price = 1;
$object->on_sale = 0;
$object->online_only = 1;
$object->meta_keywords = 'test';
$object->images=$images_orginal;
//$object->add();

//$object->save();
$object->Add();
//$object->update();

    $object->addToCategories(array($categoryId));
    StockAvailable::setQuantity($product->id,'',$productquantity);


    //Add  main product image
	echo "<br>--------------------------ADD IMAGE------------------------------------------------------------------------------------------- <br>";
    echo "id_product: " . $id_product = $product->id . "<br>";
    echo "image URL: " . $url = $images_orginal . "<br>";
	echo "<br>--------------------------ADD IMAGE------------------------------------------------------------------------------------------- <br>";
    $shops = Shop::getShops(true, null, true);    
    $image = new Image();
    $image->id_product = $id_product;
    $image->position = Image::getHighestPosition($id_product) + 1;
    $image->cover = true; // or false;
    if (($image->validateFields(false, true)) === true &&
    ($image->validateFieldsLang(false, true)) === true && $image->add())
    {
        $image->associateTo($shops);
        if (!AdminImportController::copyImg($id_product, $image->id, $url))
        {
            $image->delete();
        }
    }

Kann es sein, dass in meinem Script noch etwas fehlt, dass in diesem "Abspeichern Prozess"  vorhanden ist?

 

2.  im gleichen Script ist auch die Funktion "add new image()" . die URL des Bildes stimmt es wird aber trotzdem kein Bild eingefügt. 

Hier ein Printscreen von dem obigen Code (echo's)

ausgabe_echo_prestashop_products.png.89ef4e5cedf3132e8f2617b03d15e357.png

 

 

Ich stehe mit dem Rücken an der Wand und komme nicht weiter.. 

 

Danke im Voraus für eure wertvolle Unterstützung.

 

Gruss

Dashmir

Link to comment
Share on other sites

Ich habe im Script auch noch folgendes drin:

 

Tools::clearSmartyCache();
Tools::clearXMLCache();
Media::clearCache();
Tools::generateIndex();

 

Wenn dies überhaupt stimmt? auf jeden Fall hat es keine Auswirkung.... es ist effektiv so, nachdem ich auf Speichern klicke, erscheint es im Frontend...

 

Link to comment
Share on other sites

  • 3 weeks later...

hallo

 

ich muss mich nochmals hier wenden, im englischen Forum sind alle ausgestorben oder mit der WM beschäftigt.. auf jeden Fall hab ich keine Antwort und benötige dringend Unterstützung. 

 

Ich bin Dankbar um jede Hilfe

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...