xt:Commerce Webshop Shop Support

xt:Commerce Webshop Shop Support (http://www.xt-commerce.com/forum/)
-   Template System (http://www.xt-commerce.com/forum/template-system/)
-   -   Master/Slave Master "products_id" für Backlinks herausfinden (http://www.xt-commerce.com/forum/template-system/76367-master-slave-master-products_id-f-r-backlinks-herausfinden.html)

Diakon 25.01.2010 20:12

Master/Slave Master "products_id" für Backlinks herausfinden
 
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:

PHP-Code:

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];

        } 

Nun kann man in templates/siau_sass/xtCore/pages/product/product.html
die Variable {$custom_master} benutzen.

o_kiki_o 20.02.2010 20:05

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?

o_kiki_o 20.02.2010 22:27

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.

Diakon 20.02.2010 22:30

Zitat:

Zitat von o_kiki_o (Beitrag 353930)
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

MiStahmann 01.04.2010 08:14

Kleine Vereinfachung
 
Hallo zusammen,

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

in class.product.php

PHP-Code:

 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']);
        } 

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.

objekt 01.04.2010 11:32

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


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:24 Uhr.

Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Copyright xt:Commerce GmbH


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54