PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : product item codes (isbn, upc, mpn, jan) im Frontend anzeigen lassen + Suche



foxfoobar
21.07.2017, 22:31
Servus!

Ich hab' mich jetzt eine weile mit diesem ***** rumgeschlagen, weil ich es für einen Bekannten für GX3 3.5.1.2 umsetzen sollte. Wollte daher mal posten, wie ich es umgesetzt habe, da nämlich alle Tutorials im Netz entweder veraltet sind, oder bei GX3 nicht funktionieren (oder ich bin zu blöd zum suchen). Getestet mit GX3 3.5.1.2, 3.5.2.0 und 3.5.3.0, also am besten vorher auf die aktuelle Version updaten. Das anzeigen der product_item_codes ist halbwegs update-sicher, die suche nach dessen allerdings nicht. Vielleicht findet sich ja einer, der das overloaded/adaptiert/nachreicht/whateva.

1. Eine Datei erstellen mit dem Namen itm_codes_ProductInfoContentView.inc unter /<shoproot>/GXUserComponents/overloads/ProductInfoContentView/ mit dem folgenden Inhalt:



<?php
class itm_codes_ProductInfoContentView extends itm_codes_ProductInfoContentView_parent
{
protected function _assignProductData()
{

if (isset ($_GET['info'])) {
$site = explode('_', $_GET['info']);
if(substr_wrapper($site[0], 0, 1) == 'p')
{
$pID = $site[0];
$actual_products_id = (int) str_replace('p', '', $pID);
$sql = xtc_db_query("SELECT * FROM products_item_codes WHERE products_id = '$actual_products_id'");
while ($products_item_codes = xtc_db_fetch_array($sql))
{
$this->set_content_data('PRODUCTS_ISBN', $products_item_codes['code_isbn']);
$this->set_content_data('PRODUCTS_UPC', $products_item_codes['code_upc']);
$this->set_content_data('PRODUCTS_MPN', $products_item_codes['code_mpn']);
$this->set_content_data('PRODUCTS_JAN', $products_item_codes['code_jan']);
}
return parent::_assignProductData();
}
}
elseif (isset($_GET['products_id'])) {
$actual_products_id = (int) $_GET['products_id'];
$sql = xtc_db_query("SELECT * FROM products_item_codes WHERE products_id = '$actual_products_id'");
while ($products_item_codes = xtc_db_fetch_array($sql))
{
$this->set_content_data('PRODUCTS_ISBN', $products_item_codes['code_isbn']);
$this->set_content_data('PRODUCTS_UPC', $products_item_codes['code_upc']);
$this->set_content_data('PRODUCTS_MPN', $products_item_codes['code_mpn']);
$this->set_content_data('PRODUCTS_JAN', $products_item_codes['code_jan']);
}
return parent::_assignProductData();
}
}
}
?>


2. Die Datei templates/Honeygrid/module/product_info/standard.html (evtl. USERMOD) wie folgt editieren (item codes, die nicht angezeigt werden sollen, einfach weglassen):


{if $PRODUCTS_MODEL !='' || $SHOW_PRODUCTS_MODEL || $SHIPPING_NAME || $SHOW_SHIPPING_TIME || $PRODUCTS_QUANTITY || $SHOW_PRODUCTS_QUANTITY || $additional_fields}
<dl class="dl-horizontal">
{include file="get_usermod:{$tpl_path}snippets/product_info/model.html"}
{if $PRODUCTS_EAN || $SHOW_PRODUCTS_EAN}<dt class="col-xs-4 text-left">{$txt.text_ean}</dt><dd class="col-xs-8"><span class="products-ean-value">{$PRODUCTS_EAN}</span></dd>{/if}
{if $PRODUCTS_ISBN || $SHOW_PRODUCTS_ISBN}<dt class="col-xs-4 text-left">{$txt.text_isbn}</dt><dd class="col-xs-8"><span class="products-ean-value">{$PRODUCTS_ISBN}</span></dd>{/if}
{if $PRODUCTS_UPC || $SHOW_PRODUCTS_UPC}<dt class="col-xs-4 text-left">{$txt.text_upc}</dt><dd class="col-xs-8"><span class="products-ean-value">{$PRODUCTS_UPC}</span></dd>{/if}
{if $PRODUCTS_MPN || $SHOW_PRODUCTS_MPN}<dt class="col-xs-4 text-left">{$txt.text_mpn}</dt><dd class="col-xs-8"><span class="products-ean-value">{$PRODUCTS_MPN}</span></dd>{/if}
{if $PRODUCTS_JAN || $SHOW_PRODUCTS_JAN}<dt class="col-xs-4 text-left">{$txt.text_jan}</dt><dd class="col-xs-8"><span class="products-ean-value">{$PRODUCTS_JAN}</span></dd>{/if}
{include file="get_usermod:{$tpl_path}snippets/product_info/shipping_time.html"}
{include file="get_usermod:{$tpl_path}snippets/product_info/stock.html"}


3. In den Dateien product_info.lang.inc.php unter /<shoproot>lang/english/user_sections/ und /<shoproot>/lang/german/user_sections/ wie folgt editieren.
English:


$t_language_text_section_content_array = array
(
'text_ean' => 'EAN No.:',
'text_isbn' => 'ISBN No.:',
'text_upc' => 'UPC No.:',
'text_mpn' => 'MPN No.:',
'text_jan' => 'JAN No.:',
);

Deutsch:


$t_language_text_section_content_array = array
(
'text_ean' => 'EAN-Nr.:',
'text_isbn' => 'ISBN-Nr.:',
'text_upc' => 'UPC-Nr.:',
'text_mpn' => 'MPN-Nr.:',
'text_jan' => 'JAN-Nr.:',
);


Das war es auch schon für das Anzeigen der products_item_codes. Nicht vergessen Caches zu löschen.

Zu erklären, wie das alles in die Suche zu implementieren ist, wäre mir jetzt ein bisschen zu aufwendig und langwierig, daher hab' ich auch alles als zip-Datei angehängt. Einfach ein diff zwischen originalen und editierten Dateien drüberlaufen lassen oder manuell nach products_item_codes UND isbn, oder upc, oder mpn, oder jan in den Zeilen der jeweiligen Dateien suchen und in eure originalen Dateien einfügen. Die modifizierte Datei der LiveSearchAjaxHandler.inc.php ist auch im zip, somit funktioniert auch der Live Search. Wie erwähnt, vielleicht findet sich jemand, der das alles updatesicher hinbekommt (einige scheinen ja bei bei sowas regelrecht Hitzewallungen zu bekommen, siehe 'ne gewisse Dame im offiziellen gambio-forum) :), mir hat das so jedenfalls gereicht!

Cheers,
fox

KlausK
23.07.2017, 10:51
Vielen Dank für die Anleitung :)
Vielleicht könntest du das angehängte Archiv nochmal austauschen!? Die Verzeichnisstruktur darin ist kaputt!

foxfoobar
23.07.2017, 13:08
Oops! Sorry, hatte ich vergessen, ist nur meine eigene kaputte Art, damit ich im terminal schneller cp&pasten kann. Hier das zip-File mit normaler Verzeichnisstruktur.