Jump to content
xt:Commerce Community Forum

Master/Slave Master "products_id" für Backlinks herausfinden


Diakon

Recommended Posts

Hallo,

das ist für Alle, die selbst etwas an ihrem Shop basteln möchen.

Soll/Ziel: legt der Kunde ein Slave-Produkt in den Warenkorb und klickt dieses aus dem Warenkorb heraus an führt dies auf die Produktseite des Slave-Produkts. Ziel ist es nun auf der Seite des Slaveprodukts einen Link zum Master zu setzen.

Im Templates "products" steht einem nur das master_model zu Verfügung um nun die products_id des Masters heraus zu finden fügt man in:

Installierte Plugins -> Master / Slave -> Hookpoints -> class.product.php:BuildData_bottom

folgenden Code ein:

global $db;

if ($this->data['products_master_flag']=='1') {
$this->data['allow_add_cart'] = 'false';
}

if ($this->data['products_master_model']!='') {

$custom_master = $db->Execute("SELECT products_id FROM ".TABLE_PRODUCTS." WHERE products_model='".$this->data['products_master_model']."' LIMIT 0,1");

$this->data['custom_product_master_id'] = $custom_master->fields[products_id];

}[/PHP]

Nun kann man in templates/siau_sass/xtCore/pages/product/product.html

die Variable {$custom_master} benutzen.

Link to comment
Share on other sites

  • 4 weeks later...

Dann sollte man aber auch: {$custom_product_master_id} benutzen, statt {$custom_master}

Ich habe das ganze sinnvollerweise {$products_master_id} genannt.

Nun kann man hier noch ein bisschen weiter tricksen und eine Abfrage in das Template bauen, wodurch die Seite direkt zum Master Artikel springt um die Slaves gar nicht anzeigen zu müssen.

Hat da schon jemand was fertiges?

Link to comment
Share on other sites

Für alle die es interessiert:

Link zum Masterartikel statt zum Slave:

in obigen Code eine neue Variable definieren und diese mit der Methode _xtLink und der Master ID befüllen lassen.

Im Template dann eine Abfrage ob die neue Var befüllt ist, dann diese ausgeben, anosnten den vorhandenen Link.

Wer mehr wissen will, kann mich ruhig anschreiben.

Link to comment
Share on other sites

Dann sollte man aber auch: {$custom_product_master_id} benutzen, statt {$custom_master}

Ich habe das ganze sinnvollerweise {$products_master_id} genannt.

Nun kann man hier noch ein bisschen weiter tricksen und eine Abfrage in das Template bauen, wodurch die Seite direkt zum Master Artikel springt um die Slaves gar nicht anzeigen zu müssen.

Hat da schon jemand was fertiges?

Naja man sollte, "eigene" Variablen immer speziell kennzeichnen sonst hast du immer das potentielle Problem das eventuell xt-Programmierer auch eine solche Variable ein arbeiten und dann weißt du nicht mehr woher etwaige seiteneffekte kommen.

Daher ist das schon sinnig diese durch "custom" oder was anderes zu kennzeichnen.

Zu deiner Frage: Na klar habe ich da was fertiges, das ist ja der Sinn dieser Variable solche Verhaltensweisen steuern zu können.

Nur das Wäre, wenn man schon nach Sinn und Unsinn fragt ja nun zu einfach das direkt zu posten.

Aber als Tip:

Mit Smarty Funktionen einfach abfragen, ob das Produkt eine (in deinem Fall) "{$products_master_id}" hat. Denn das haben nur Slaves ;-).

//edit hast es dir ja parallel schon selbst beantwortet.

//edit2 man brauch dazu keine neue Variable, diese da "oben" ist ja schon die neue Variable

Link to comment
Share on other sites

  • 1 month later...

Hallo zusammen,

um den Link im WK auf die Masterartikel zu verbiegen könnte man folgenden Trick anwenden:

in class.product.php

 if ($this->data['products_master_model']!='') {

// ID abfragen
$custom_master = $db->Execute("SELECT products_id FROM ".TABLE_PRODUCTS." WHERE products_model='".$this->data['products_master_model']."' LIMIT 0,1");

$this->data['custom_product_master_id'] = $custom_master->fields[products_id];


// Link gleich auf den Master verbiegen
$link_array = array('page'=> 'product', 'type'=>'product', 'name'=>$this->data['products_name'], 'id'=>$this->data['custom_product_master_id'],'seo_url'=>FALSE);
}

// Ansonsten den normalen Liunk generieren
else {
$link_array = array('page'=> 'product', 'type'=>'product', 'name'=>$this->data['products_name'], 'id'=>$this->data['products_id'],'seo_url'=>$this->data['url_text']);
} [/PHP]

Diese Veränderung würde dann Systemweit nur noch Masterartikel anzeigen.

Allerdings nicht mehr mit SEO-URLs sondern mit ID's, was aber aus dem WK auch unerheblich ist.

Link to comment
Share on other sites

Oh ich seh hier gibt es M/S Spezialisten. Kurze Frage ich ändere gerade das Plugin bestseller_products dahingehend ab, dass mir artikel angezeigt werden die bestand(products_quantity) größer null haben, leider werden mir nur die Masterartikel angezeigt. Weiss jemand, wie ich die lieferbaren Slaves anzeigen lassen kann?

LG

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...