Modul 2. Kategoriebeschreibung für GX2 ab V2.1.0.0

Thema wurde von Steffen (indiv-style.de), 16. Februar 2015 erstellt.

  1. Anonymous

    Anonymous Erfahrener Benutzer

    müsste man dafür nicht einfach nur CategoryListingContentView.inc.php überschreiben?
     
  2. Steffen (indiv-style.de)

    Steffen (indiv-style.de) G-WARD 2013/14/15/16

    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/
     
  3. Anonymous

    Anonymous Erfahrener Benutzer

    CategoryListingContentView lässt sich nicht sauber überladen. Das prepare_data greift nicht weil die gesamte logic in get_html() steckt.
     
  4. Anonymous

    Anonymous Erfahrener Benutzer

    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
     
  5. Avenger

    Avenger G-WARD 2012/13/14/15

  6. Avenger

    Avenger G-WARD 2012/13/14/15

    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.
     
  7. Anonymous

    Anonymous Erfahrener Benutzer

    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!
     
  8. Steffen (indiv-style.de)

    Steffen (indiv-style.de) G-WARD 2013/14/15/16

    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........ ;) ;) ;)
     

    Anhänge:

    Zuletzt bearbeitet: 26. April 2015
  9. Anonymous

    Anonymous Erfahrener Benutzer

    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
     
  10. Steffen (indiv-style.de)

    Steffen (indiv-style.de) G-WARD 2013/14/15/16

    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.
     
  11. Anonymous

    Anonymous Erfahrener Benutzer

    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.
     
  12. Steffen (indiv-style.de)

    Steffen (indiv-style.de) G-WARD 2013/14/15/16

    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!
     
  13. Moritz (Gambio)

    Moritz (Gambio) Administrator

    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 :).
     

    Anhänge:

  14. Anonymous

    Anonymous Erfahrener Benutzer

    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
     
  15. Steffen (indiv-style.de)

    Steffen (indiv-style.de) G-WARD 2013/14/15/16

    Diese Möglichkeit hab ich gar nicht in Betracht gezogen! Das ermöglicht überall das splitten von Smartyvariablen! Klasse!!!!
     
  16. Martina Korte

    Martina Korte Erfahrener Benutzer

    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
     
  17. Martina Korte

    Martina Korte Erfahrener Benutzer

    hm... jetzt nochmal probiert - geht aber iwie nicht...

    lg
     
  18. barbara

    barbara G-WARD 2014-2020

    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 :)
     
  19. Martina Korte

    Martina Korte Erfahrener Benutzer

    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] :-(
     
  20. barbara

    barbara G-WARD 2014-2020

    Und Seine Shopversion ist 2.2.0, bzw. 2.1.x?