So einfach ist das nicht! Richtig ist das bei Unterkatekorien das CatListing greift und auch hier funktioniert das mit dem [2KAT2]!!! ABER... Gewünscht ist folgrnde Reihenfolge: 1. Katbeschreibung 1. Teil 2. Unterkategorien 3. Artikel 4. Katbeschreibung Teil 2 Anzeigen tut er: 1. Katbeschreibung 1. Teil 2. Unterkategorien 3. Katbeschreibung Teil 2 4. Artikel Ich habe das gelöst indem ich gewisse Abfragen imolementiert habe wo auch die Session eine Rolle spielt. Beispiel: http://www.1a-gebrauchte-drucker.de/Gebrauchte-Laserdrucker/
CategoryListingContentView lässt sich nicht sauber überladen. Das prepare_data greift nicht weil die gesamte logic in get_html() steckt.
Hier stellt sich wieder mal die grundsätzliche Frage: Was ist updatesicherer: 1. Anpassung von CategoryListingContentView 2. Erstellen einer Sub-Klasse / kopieren der gesamten get_html() inkl. der eigenen Änderungen! Beides ziemlich schrottig
In solchen Fällen (also wenn man Template-Daten aus einem Overload in einem anderen Template braucht) habe ich diese Daten in "$_POST" abgespeichert... Denn mit "$smarty.post" komme ich in dem anderen Template an diese Daten heran... Die "Katbeschreibung Teil 2" würde ich daher in ein "$_POST" legen. Nicht sehr schön, aber einfach und wirkungsvoll.
Aus unerklärlichen gründen funktioniert das bei mir nicht: Beispiel: wenn ich in meiner überladenen ProductsListingContentView folgendes mache: Code: $_POST['dasisteintest'] = 'true'; var_dump($_POST); dann zeigt mir var_dump, dass der wert korrekt gesetzt ist. Versuche ich den Wert nun in categorie_listing mittels smarty auszugeben: Code: product listing: {$smarty.post.dasisteintest} Dann ist der Wert leer!
Hier meine Lösung für die 2. Kategoriebeschreibung für GX2 ab V2.1.0.0 Ich hab das über die $_SESSION gelößt! Das ist zwar genau so "unschön" aber das funzt.... 1 . in /user_classes/overloads/ den Ordner CategoryListingContentView anlegen und die angehängte AS_VategoryDescriptionTwo.php reinkopieren. 2 . in /user_classes/overloads/ den Ordner ProductListingContentView anlegen und die angehängte AS_VategoryDescriptionTwo.inc.php reinkopieren. 3 . in /templates/EyeCandy/module/categorie_listing/ die angehängte categorie_listing-USERMOD.html reinkopieren. 4 . in /templates/EyeCandy/module/product_listing/ die angehängte product_listing_v1-USERMOD-USERMOD.html reinkopieren. 5. Im Kat-Text das mit [2KAT2] die Trennung der Katbeschreibung setzen. Ich habe fertig........
Danke! Aber schön ist die Lösung wirklich nicht. - Ich würde das am liebsten ohne Session hinbekommen. Aber fürs erste genügt mir das
So richtig sauber wird es erst wenn man die 2.Kat´beschreibung trennt von der 1. Das heist das man im Admin wie im Frontend beides trennt.
Ich sehe gerade dass die Lösung nicht vollständig ist! D.h. wenn man innerhalb von einer Kategorie nur Unterkategorien (und keine Artikel!) anzeigt, dann wird auch die 2. Kategoriebeschreibung nicht angezeigt. Und genau dass ist ja die Schwierigkeit. Deine Lösung lässt sich auch mit Hilfe von $_POST wie von Avenger beschrieben ohne Verwendung der Session realisieren.
Dann frag doch ab ob die Artikel mit angezeigt werden, wenn Unterkats da sind! Das sind doch Parameter die vorhanden sind und wenn keine Artikel angezeigt werden übergibst du die 2. KB eben dem Categorie_listing und nicht dem product_listing.... Ich sehe da kein wirkliches Problem das zu machen!
Hallo, das ganze kann auch eleganter mit einem Smarty-Plugin gelöst werden: PHP: <?php /* -------------------------------------------------------------- modifier.get_part.php 2015-04-26 mb Gambio GmbH http://www.gambio.de Copyright (c) 2015 Gambio GmbH Released under the GNU General Public License (Version 2) [http://www.gnu.org/licenses/gpl-2.0.html] -------------------------------------------------------------- */ /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * Smarty get_part modifier plugin * * Type: modifier<br> * Name: get_part<br> * Purpose: explode string by given delimiter and return requested part * * @param string $p_string * @param string $p_explodeDelimiter * @param int $p_returnPart 1 = first part, 2 = second part, ... * * @return string */ function smarty_modifier_get_part($p_string, $p_explodeDelimiter, $p_returnPart = 1) { $string = (string)$p_string; $delimiter = (string)$p_explodeDelimiter; $part = (int)$p_returnPart - 1; if($string !== '' && $delimiter !== '') { $explodedString = explode($delimiter, $string); if(array_key_exists($part, $explodedString)) { $string = $explodedString[$part]; } elseif($part !== 0) { $string = ''; } } return $string; } Im Template kommt man so an den ersten und zweiten Teil: Code: {$CATEGORIES_DESCRIPTION|get_part:"[2KAT2]":1} {$CATEGORIES_DESCRIPTION|get_part:"[2KAT2]":2} Damit spart man sich das Überladen von PHP-Code. Viel Spaß damit .
Habs jetzt meine eigene Logik implementiert: Die Schwierigkeit war es zu ermitteln ob in HTML: categorie_listing.html lediglich Subkategorien anzeigt werden, oder zusätzlich auch Produkte. In der Überladenen CategoryListingContentView einfach eine neue Smarty Variable setzen: Code: $this->set_content_data('SHOW_SUB_PRODUCTS', $category['show_sub_products']); und in der categories_listing.html eintsprechend abfragen. Code: {if (isset($smarty.post.CATEGORIES_DESCRIPTION_SECOND) && !($SHOW_SUB_PRODUCTS))} {$smarty.post.CATEGORIES_DESCRIPTION_SECOND} {/if} Damit bin ich glücklich. Die SESSION wird nicht angerührt
Diese Möglichkeit hab ich gar nicht in Betracht gezogen! Das ermöglicht überall das splitten von Smartyvariablen! Klasse!!!!
Hi Steffen, kann es sein, daß Du Dich oben verschrieben hast? Punkt 1: in /user_classes/overloads/ den Ordner CategoryListingContentView anlegen und die angehängte AS_VategoryDescriptionTwo.php reinkopieren. - Die Datei hängt gar nicht dran - da soll wohl die AS_categoryDescriptionTwo.inc.php rein, oder???? Punkt2! ....in /user_classes/overloads/ den Ordner ProductListingContentView anlegen und die angehängte AS_VategoryDescriptionTwo.inc.php reinkopieren??? Soll da vielleicht die IS_ProductListingContentView.inc.php rein??? Gestern hatte ichs schon mal probiert, da hats nicht gefunzt, aber da hing auch iwie eine Datei weniger dran, kann das sein? lg Martina
Hallo Martina, ich habe das jetzt zwar icht getestet, aber ich denke es müsste so gehen: lege in /user_classes/overloads/ den Ordner CategoryListingContentView an und lade da die AS_CategoryDescriptionTwo.inc.php hineien. lege dann in /user_classes/overloads/ den Ordner ProductListingContentView an und lade da die IS_ProductListingContentView.inc.php hinein. Und dann kannst Du die anderen Änderungen wie in der Anleitung beschreiben machen. Cache leeren nicht vergessen
jepp, genau so hatte ich mir das auch erschlossen, erschien mir logisch - waren ja nicht mehr Dateien zur Auswahl da! Funktioniert aber irgendwie nicht.... In der Kategorienbeschreibung steht jetzt einfach [2KAT2] :-(