Neu Nach Merkmal filtern

CarstenKaestner

Neues Mitglied
6. März 2019
1
0
Hallo,

ich versuche gerade mir einen eigene Produktliste nach Merkmalen zu filtern. Leider stoße ich da doch auf einige Probleme. Ich rufe im Template die Funktion get_product_list wie folgt auf:

Code:
{get_product_list cAssign='oProduct_arr' cMerkmalFilter='1;' nLimit=20000}

Leider bekomme ich immer alle Artikel zurück. Des weiteren würde mich interessieren ob man immer nur nach den ID's filtern kann oder nicht auch nach dem Namen des Merkmals? Über Tips und Hinweise wäre ich sehr dankbar.

LG
Carsten
 

david

Administrator
Mitarbeiter
16. Juli 2010
2.310
170
Hey, wenn du alle Artikel mit einem bestimmten Merkmalwert anzeigen lassen möchtest, nutze dafür die Property kMerkmalwert (Primärschlüssel eines Merkmalwerts, siehe Datenbank tmerkmalwert.kMerkmalwert).
Eine Filterung nach lokalisierten Werten/Namen ist aktuell nicht vorgesehen.
 

Tomas

Sehr aktives Mitglied
8. Januar 2018
330
69
Lübeck
Hallo Carsten,

ich hab mir das mal angeschaut und komme zu exakt dem gleichen Ergebnis wie du.

Ich habe mir die get_product_list Funktion einmal genauer angeschaut und einen Bug(?) entdeckt und komme direkt auch mit einem Hotfix.

1. Logge dich per FTP auf deinen Server ein.
2. Wechsle in dein Child-Template.
3. Lege dort die Datei /php/functions.php an.
4. Füge in die functions.php folgenden Code ein:
Code:
<?php
include realpath(__DIR__ . '/../../Evo/php/functions.php');

$smarty->unregisterPlugin('function', 'get_product_list')
    ->registerPlugin('function', 'get_product_list', 'get_product_list_fixed');

/**
 * @param array     $params
 * @param JTLSmarty $smarty
 * @return array
 */
function get_product_list_fixed($params, &$smarty)
{
    $nLimit             = isset($params['nLimit'])
        ? (int)$params['nLimit']
        : 10;
    $nSortierung        = isset($params['nSortierung'])
        ? (int)$params['nSortierung']
        : 0;
    $cAssign            = (isset($params['cAssign']) && strlen($params['cAssign']) > 0)
        ? $params['cAssign']
        : 'oCustomArtikel_arr';
    $cMerkmalFilter_arr = isset($params['cMerkmalFilter'])
        ? setzeMerkmalFilter(explode(';', $params['cMerkmalFilter']))
        : null;

    $cSuchFilter_arr    = isset($params['cSuchFilter'])
        ? setzeSuchFilter(explode(';', $params['cSuchFilter']))
        : null;
    $cTagFilter_arr     = isset($params['cTagFilter'])
        ? setzeTagFilter(explode(';', $params['cTagFilter']))
        : null;

    foreach ($cMerkmalFilter_arr as &$cMerkmalFilter) {
        $cMerkmalFilter = ltrim($cMerkmalFilter, 'mf');
    }

    $cParameter_arr     = [
        'kKategorie'             => isset($params['kKategorie']) ? $params['kKategorie'] : null,
        'kHersteller'            => isset($params['kHersteller']) ? $params['kHersteller'] : null,
        'kArtikel'               => isset($params['kArtikel']) ? $params['kArtikel'] : null,
        'kVariKindArtikel'       => isset($params['kVariKindArtikel']) ? $params['kVariKindArtikel'] : null,
        'kSeite'                 => isset($params['kSeite']) ? $params['kSeite'] : null,
        'kSuchanfrage'           => isset($params['kSuchanfrage']) ? $params['kSuchanfrage'] : null,
        'kMerkmalWert'           => isset($params['kMerkmalWert']) ? $params['kMerkmalWert'] : null,
        'kTag'                   => isset($params['kTag']) ? $params['kTag'] : null,
        'kSuchspecial'           => isset($params['kSuchspecial']) ? $params['kSuchspecial'] : null,
        'kKategorieFilter'       => isset($params['kKategorieFilter']) ? $params['kKategorieFilter'] : null,
        'kHerstellerFilter'      => isset($params['kHerstellerFilter']) ? $params['kHerstellerFilter'] : null,
        'nBewertungSterneFilter' => isset($params['nBewertungSterneFilter']) ? $params['nBewertungSterneFilter'] : null,
        'cPreisspannenFilter'    => isset($params['cPreisspannenFilter']) ? $params['cPreisspannenFilter'] : null,
        'kSuchspecialFilter'     => isset($params['kSuchspecialFilter']) ? $params['kSuchspecialFilter'] : null,
        'nSortierung'            => $nSortierung,
        'MerkmalFilter_arr'      => $cMerkmalFilter_arr,
        'TagFilter_arr'          => $cTagFilter_arr,
        'SuchFilter_arr'         => $cSuchFilter_arr,
        'nArtikelProSeite'       => isset($params['nArtikelProSeite']) ? $params['nArtikelProSeite'] : null,
        'cSuche'                 => isset($params['cSuche']) ? $params['cSuche'] : null,
        'seite'                  => isset($params['seite']) ? $params['seite'] : null
    ];
    
    if ($cParameter_arr['kArtikel'] !== null) {
        $oArtikel_arr = [];
        if (!is_array($cParameter_arr['kArtikel'])) {
            $cParameter_arr['kArtikel'] = [$cParameter_arr['kArtikel']];
        }
        foreach ($cParameter_arr['kArtikel'] as $kArtikel) {
            $article = new Artikel();
            $article->fuelleArtikel($kArtikel, Artikel::getDefaultOptions());
            $oArtikel_arr[] = $article;
        }
    } else {
        // Filter
        $NaviFilter = Shop::buildNaviFilter($cParameter_arr);
        if (isset($NaviFilter->Suche->cSuche) && strlen($NaviFilter->Suche->cSuche) > 0) {
            $NaviFilter->Suche->cSuche     = StringHandler::filterXSS($NaviFilter->Suche->cSuche, 1);
            $NaviFilter->Suche->kSuchCache = bearbeiteSuchCache($NaviFilter);
        }
        // Artikelattribut
        if (isset($cParameter_arr['cArtAttrib']) && strlen($cParameter_arr['cArtAttrib']) > 0) {
            $NaviFilter->ArtikelAttributFilter->cArtAttrib = $cParameter_arr['cArtAttrib'];
        }
        //Filter SQLs Objekte
        $FilterSQL = bauFilterSQL($NaviFilter);
        // Artikelliste
        $oArtikel_arr = gibArtikelKeys($FilterSQL, $nLimit, $NaviFilter, true, null);
    }

    $smarty->assign($cAssign, $oArtikel_arr);

    if (isset($params['bReturn'])) {
        return $oArtikel_arr;
    }
}
5. Lösche den Inhalt deines templates_c Ordners. (Der Ordner deines Child-Themes sollte ausreichend sein)
6. Erfreue dich an der funktionierenden Liste :D



@david Es werden als Parameter die MerkmalWerte mit dem Präfix "mf" übergeben. Das scheint hier zu Problemen zu führen. Wenn man das Präfix entfernt funktioniert es wieder perfekt.
Kannst du das bestätigen?
Magst du das evtl. als Issue aufnehmen?


VG
Tomas
 
Ähnliche Themen
Titel Forum Antworten Datum
eBay-Merkmal wird nach Ameise-Import nicht übernommen (Wawi 1.10.11.0) JTL-Wawi 1.10 2
Steuer Einstellung bei Sonderpreis und nach OSS Landauswahl JTL-Wawi 1.10 0
JTL-Wawi App (1.11.x) – Lizenz angeblich belegt nach Löschen aller App-Registrierungen / kein Reset möglich JTL-Wawi App 2
Neu JTL-Wawi 1.11.4 – Vaterartikel lässt sich nach Entfernen eines Kindartikels nicht mehr speichern JTL-Wawi - Fehler und Bugs 3
Neu POS doppelte Artikel und Kategorien nach Update Einrichtung / Updates von JTL-POS 0
Neu Bons werden nach Wechsel auf neue Kasse nicht mehr signiert Allgemeine Fragen zu JTL-POS 0
Neu Downloadmodul – Keine Reiter "Downloads" und keine Download nach Bestellung möglich Technische Fragen zu Plugins und Templates 6
Neu Nach Update auf JTL Shop 5.6.1 - Play/Pause Buttons im Layout!? Installation / Updates von JTL-Shop 6
Nach Update auf 1.11.4 (von 10.13.1) werden keine Artikel unter F2 Artikel mehr angezeigt, sind aber da! JTL-Wawi 1.11 0
Neu Artikel werden nach Löschung in Shopify nicht neu aus der WaWi übertragen Shopify-Connector 2
Neu Nach Lieferantennummer suchen User helfen Usern - Fragen zu JTL-Wawi 3
Neu Nach Update komme ich nicht mehr auf die Shop Seite Installation / Updates von JTL-Shop 6
Neu REST API - POST /customers - Response 401 / 502 nach gewisser Zeit? Schnittstellen Import / Export 2
Kleiner Bug > Wareneingang > Tastenbeschriftung ändert sich nach einmaligem Klicken JTL-Wawi 1.11 0
Neu Workflow zum automatischen Stornieren einer Rechnung nach Versand User helfen Usern - Fragen zu JTL-Wawi 4
Nach Update 1.11.4: Keine Zahlungen mehr sichtbar JTL-Wawi 1.11 0
Problem nach dem Update. JTL-Wawi 1.11 2
seit 1.11 wird Druck ausgeführt nach JTL-POS Vorgang JTL-Wawi 1.11 0
Issue angelegt [WAWI-86213] Kartonagen nicht mehr über Workflow auswählbar nach Update auf 1.11.3 JTL-Workflows - Ideen, Lob und Kritik 1
Neu Nach Update auf 2.4.0 kein Bestell- & Artikeldatentransfer mehr möglich WooCommerce-Connector 0
Neu JTL-POS Absturz nach Benutzeranmeldung JTL-POS - Fehler und Bugs 0
Neu OPC-Bilder werden nach Update auf 5.6.0 nicht mehr generiert JTL-Shop - Fehler und Bugs 3
Neu Nach Update auf neueste Shop-Version – Datenbank plötzlich leer / Wie weiter? Backup, Rollback oder neu aufsetzen? JTL-Shop - Fehler und Bugs 9
Neu URL Weiterleitungen / SEO URLs nach Umzug User helfen Usern - Fragen zu JTL-Wawi 0
Neu Plugin: DITH Mengenrabatt – Warenkorbrabatte nach Stückzahl (mix + match), ohne Preisänderung am Artikel Plugins für JTL-Shop 0
Sporadischer Absturz beim Bearbeiten eines Artikel - nach Klick auf speichern JTL-Wawi 1.11 7
Nach Auftragsabschluss falsche Artikelbestände im Shop JTL-Wawi 1.9 0
Bug in Version 1.11.2 – Alle Drucker-Einstellungen gehen nach Neustart verloren JTL-Wawi 1.11 19
Packplatzwaage geht nur einmalig nach Zuweisung JTL-Wawi 1.11 10
Wawi friert nach wählen eines beliebigen Menüpunktes ein JTL-Wawi 1.11 5
Neu alte blogbilder nach wechsel immer noch sichtbar Allgemeine Fragen zu JTL-Shop 1
Zugriff auf Artikel und Bestellungen nach Update nicht möglich JTL-Wawi 1.11 0
Kassenanbindung funktioniert nach Update auf 1.11 nicht mehr JTL-Wawi 1.11 2
Neu Probleme nach Shop Update auf V5.6 Onlineshop-Anbindung 3
Neu Rechnungsvorlage nach Zahlarten Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 4
Neu Auftrag automatisch nach Bestellung geht nicht Arbeitsabläufe in JTL-Wawi 2
Neu PayPal lädt nicht mehr nach Update auf 5.6 (Child theme Checkout index.tpl Bug) Installation / Updates von JTL-Shop 0
WMS Mobiler Server startet nach Update nicht mehr JTL-Wawi 1.11 12
Neu DPD Etikettendruck ohne Adresse nach Update JTL-ShippingLabels - Fehler und Bugs 0
Neu Nach Update auf 1.10.14.1 - Zahlungsart wird beim Auftrag erstellen nicht mit übernommen + Sepa Eingänge JTL-Wawi - Fehler und Bugs 0
Wawi macht keinen Abgleich mehr nach Shop Update JTL-Wawi 1.10 0
Beantwortet Template update nach Shop update auf Installation / Updates von JTL-Shop 4
Neu Mindestbestellwerte nach verschiedenen Lieferarten mit dem Plugin Lieferslot Allgemeine Fragen zu JTL-Shop 1
Beschreibung 2 nicht sichtbar oder wieder aufrufbar nach Eingabe JTL-Wawi 1.10 2
Neu Plattformabgleich => Amazon funktioniert nicht mehr nach aufgehobener Kontosperrung Amazon-Anbindung - Fehler und Bugs 0
Neu Nach Update crasht Backend, child läuft nicht Installation / Updates von JTL-Shop 10
Neu Plugin: Mengenrabatt im Warenkorb nach Artikelanzahl Plugins für JTL-Shop 0
Dubios: Nach Update auf 553 Einbruch um 30% Einrichtung JTL-Shop5 3
Neu Nach Update von 1.8.10.0 auf 1.10.14.1 werden Rechnungen nicht mehr zu Amazon hochgeladen!!! Amazon-Anbindung - Fehler und Bugs 5
Neu Nach Import der Angebote sind alle versandarten auf kostenlosen Standardversand gesetzt worden Amazon-Lister - Ideen, Lob und Kritik 2

Ähnliche Themen