Neu {get_category_list} - Kategorieliste im Evo wiederbeleben

Groundhog

Sehr aktives Mitglied
11. Januar 2011
384
32
Austria
Aloha,

Wie ich schon in diversen Beiträgen gelesen habe ist die Funtkion "get_category_list" i mEvo Template nicht mehr enthalten. Kann mir jemand bitte das Codeschnippsel zusammenbasteln das in die functions.php gehört, damit das wieder funktioniert? Ziel soll sein, eigene Landingpages zu erzeugen und dort eben die passenden Kategorielisten auszugeben.

Wäre echt super duper :D

Danke!!
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: fibergirl

Groundhog

Sehr aktives Mitglied
11. Januar 2011
384
32
Austria
@css-umsetzung

get_product_list ist zwar auch spannend, aber ich benötige die Kategorieliste mit Steuerung aus der Wawi. Die Shop Kategorien sind grundsätzlich ja richtig angelegt, ich benötige aber für die gezielte Ansprache über Google Ads, Landingpages die aus den Hauptkategorien nur manche Unterkategorien verwenden. Und das ganz bräuchte ich in einem Plain Drop damit ich es auch innerhalb das Grids aus Dropper raus verwenden kann....darum die Anforderung es direkt in die Functions.php zu schreiben.

Wenn du es aber lösen kannst, gib Bescheid...dann gerne auch über die Kaffeekasse oder einen Auftrag (je nachdem wieviel Aufwand es ist).
 
Zuletzt bearbeitet:

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
6.698
1.611
Berlin
Also nur die Funktion ist ja im 3er noch vorhanden, das muss man ja nur dann in seine eigene function.php im Child Template übernehmen.
Teste das am besten mal aus, wenn es zickt dann kann man ja schauen was zickt.


Code:
$smarty->register_function("get_category_list", "get_category_list");

function get_category_list($params, &$smarty)
{
    require_once(PFAD_ROOT . PFAD_CLASSES . "class.JTL-Shop.Kategorie.php");

    $oKategorie_arr = array();

    if(!isset($params['cKatAttrib']) || strlen($params['cKatAttrib']) == 0)
        return false;

    // Limit
    $cLimit = "";
    if(isset($params['nLimit']) && intval($params['nLimit']) > 0)
        $cLimit = " LIMIT " . intval($params['nLimit']);

    // Assign
    $cAssing = "oCustomKategorie_arr";
    if(isset($params['cAssign']) && strlen($params['cAssign']) > 0)
        $cAssing = $params['cAssign'];

    // Sprache
    $kSprache = 0;
    if(isset($params['kSprache']) && intval($params['kSprache']) > 0)
        $kSprache = intval($params['kSprache']);
    elseif(isset($_SESSION['kSprache']) && intval($_SESSION['kSprache']) > 0)
        $kSprache = intval($_SESSION['kSprache']);
    else
    {
        $oSprache = gibStandardsprache(true);
        $kSprache = $oSprache->kSprache;
    }

    // Kundengruppe
    $kKundengruppe = 0;
    if(isset($params['kKundengruppe']) && intval($params['kKundengruppe']) > 0)
        $kKundengruppe = intval($params['kKundengruppe']);
    elseif(isset($_SESSION['Kundengruppe']->kKundengruppe) && intval($_SESSION['kKundengruppe']->kKundengruppe) > 0)
        $kKundengruppe = intval($_SESSION['kKundengruppe']->kKundengruppe);
    else
        $kKundengruppe = gibStandardKundengruppe();

    $oKat_arr = $GLOBALS['DB']->executeQuery("SELECT tkategorie.kKategorie
                                                FROM tkategorie
                                                JOIN tkategorieattribut ON tkategorieattribut.kKategorie = tkategorie.kKategorie
                                                    AND tkategorieattribut.cName = '" . filterXSS($params['cKatAttrib']) . "'
                                                ORDER BY tkategorie.nSort, tkategorie.cName" . $cLimit, 2);

    if(is_array($oKat_arr) && count($oKat_arr) > 0)
    {
        foreach($oKat_arr as $oKat)
        {
            if($oKat->kKategorie > 0)
                $oKategorie_arr[] = new Kategorie($oKat->kKategorie, $kSprache, $kKundengruppe);
        }
    }

    $smarty->assign($cAssing, $oKategorie_arr);

    if($params['bReturn'])
        return $oKategorie_arr;
}
 

Groundhog

Sehr aktives Mitglied
11. Januar 2011
384
32
Austria
@css-umsetzung

Fettes danke :D

und zickt:

PHP:
{foreach name=Kategorieliste from=$oCategory_arr item=oCategory nLimit=12}" unexpected "nLimit" attribute <-- thrown in /home/spritabs/test.mmtrading.at/includes/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php

Edit: Hab das nLimit Attribut einfach weggelassen....jetzt gehts...soll ich es auch in der functions rausnehmen?
 
Zuletzt bearbeitet:

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
6.698
1.611
Berlin
Das nLimit hat ja in der foreach Schleife nichts verloren, das übergibst du je nach bedarf dem {get_category_list}


{foreach name=Kategorieliste from=$oCategory_arr item=oCategory nLimit=12}
 

Groundhog

Sehr aktives Mitglied
11. Januar 2011
384
32
Austria
Ich habs jetzt im Drop so:

PHP:
{get_category_list cKatAttrib='frontpage' cAssign='oCategory_arr'}
{if $oCategory_arr}
   <ul>
   {foreach name=Kategorieliste from=$oCategory_arr item=oCategory}
      <li>
         <a href="{$oCategory->cURL}">
         <img src="{$oCategory->cBildURL}" alt="" /><br />
         {$oCategory->cName}
         </a>
      </li>
   {/foreach}
   </ul>
{/if}

Damit läufts auch. Die Functions.php hab ich 1:1 von dir (also dem 3er Shop übernommen).

Sowie ich im Drop das nLimit in die Foreach Schleife setze...wie eben auch hier erklärt:
http://docs.jtl-shop.de/de/latest/s...ielisten-erzeugen-und-im-template-integrieren

Bekomm ich den Fehler in der Ausgabe....


das nLimit ist im Prinzip ja sowieso überflüssig oder? Macht ja wenig Sinn das Attribut "frontpage" (oder was auch immer) im Shop abzurufen und dann noch begrenzen zu müssen wieviele Kategorien er holen soll....die Begrenzung kann ich ja mit der Vergabe der Attribute schon in der Wawi abwickeln.
 

Groundhog

Sehr aktives Mitglied
11. Januar 2011
384
32
Austria
Das ist dann in der Doku schon definitv falsch:

Doku:
PHP:
{foreach name=Kategorieliste from=$oCategory_arr item=oCategory nLimit=2}

Stimmt....in der Funktion läufts problemlos :D
Perfekt! Du bist der Hammer :D Kaffeespende, oder BIerspende steht!