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.309
169
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
Statistik - Gewinnermittlung nach Herstellern (Versandkosten?) JTL-Wawi 1.7 3
Neu Wie kann ich mit der Wawi Ebay Rechnungen erstellen und nach ebay hochladen? eBay-Anbindung - Fehler und Bugs 3
Neu Rechnung anders nach Zahlungseingang User helfen Usern - Fragen zu JTL-Wawi 5
Neu OPC geht nicht mehr (nach 5.3.1 Update) JTL-Shop - Fehler und Bugs 2
Gelöst Onepage Composer geht nicht mehr nach Update auf 5.3.1 JTL-Shop - Fehler und Bugs 2
Keine Reaktion nach Anmeldung - Fast 2 Minuten JTL-Wawi 1.8 4
Playbook Funktionstest nach Wiederherstellung? JTL-Wawi 1.8 0
Neu Ust-ID nach Land auf Rechnung anzeigen Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 0
Kaufland Umzug Unicorn nach SCX mit eigenen Produkten - HowTo? kaufland.de - Anbindung (SCX) 1
Neu Sammelbestellungen - Lieferung nach Mindestauftragseingang darstellbar? Arbeitsabläufe in JTL-Wawi 0
"gekauft am"-Spalte im Bereich Versand nach update verschwunden JTL-Wawi 1.8 2
Auswertung POS-Umsätze nach Wochentag und Tageszeit JTL-Wawi 1.7 0
Nach Aufruf von Stored Procedure 'Kunde.spKundeUpdate' schwere Fehler in JTL (z.B. Kundenliste, Workflow-Editor) JTL-Wawi 1.8 2
Finde auch nach 2 Stunden noch keine Doku zur db-struktur :-( JTL-Wawi 1.8 5
Neu Artikel nach Übertragung von JTL auf geplant im Jahr 2030 WooCommerce-Connector 2
Neu Kategorien werden nach Datenimport nicht automatisch abgeglichen Shopware-Connector 0
Neu Nach Fehlermeldung erneut Versenden Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 2
Neu Fehlermeldung nach Bestellabschluss durch Plugin Gelöste Themen in diesem Bereich 7
Rechnungsadresse ändern nach Rechnungserstellung JTL-Wawi 1.8 1
JTL Mahnwesen Workflow- Email nach 30 Tagen noch nicht bezahlt. JTL-Wawi 1.8 2
Verlässlicher Error nach 30 Sekunden temporäre Filter / Filter Artikelsuche JTL-Wawi 1.7 3
Neu Nach Update auf 5.3 funktioniert das Video-Portlet für lokale Videos nicht Gelöste Themen in diesem Bereich 9
Neu Nach Update auf 5.3 fliegen die Produkte aus dem Merchant Center JTL-Shop - Fehler und Bugs 0
Neu Nach Umstellung auf WMS Probleme mit der JTL Ameise Installation von JTL-WMS / JTL-Packtisch+ 0
Passwort nach X Tagen ändern JTL-Wawi 1.8 13
Neu Änderung des Auftrags nach Zahlungseingang Paypal Arbeitsabläufe in JTL-Wawi 7
Neu Falscher Bestand nach Abbruch des Lieferschein-Lösch-Vorgangs JTL-Wawi - Fehler und Bugs 0
Neu Produktfeld "Produktkategorie" von JTL nach Shopify? Shopify-Connector 0
Datenbank-Abfrage per SQL nach Lagermenge pro Artikel & Warenbereich (WMSLager) JTL-Wawi 1.8 1
Neu Greyhound JTL-Connector funktioniert nach Update auf 1.8.12 nicht mehr richtig Technische Fragen zu den JTL-Connectoren 5
Neu Sortierung von Artikel nach Preis absteigend Allgemeine Fragen zu JTL-Shop 4
Neu Kuriosum - Shop 5.1.5 mit Datenbank 5.2.4 Mischbetrieb nach fehlgeschlagenem Update Installation / Updates von JTL-Shop 8
Neu Weiße Seite nach Update Shop 5.1.5. auf 5.2.4 Installation / Updates von JTL-Shop 24
Neu Keine SEO URLs bei Kinderartikeln nach Update Allgemeine Fragen zu JTL-Shop 3
Nach Umtausch Rechnung unbezahlt JTL-Wawi 1.7 0
Neu Kommentar verschwindet nach Wawi-Abgleich JTL-Shop - Fehler und Bugs 3
Störung nach Update JTL-Wawi 1.8 2
Neu JTL-Shop 5.3.0 RC3 Fehler nach Update Portlet Banner, fehlendes Produkt JTL-Shop - Fehler und Bugs 0
Neu Steuerklasse variiert nach Land Arbeitsabläufe in JTL-Wawi 0
Fehlermeldung nach Speichern vom Auftrag in der Wawi JTL-Wawi 1.6 5
Neu Issue SHOP-1348: Sortierung nach Preis unter Umständen fehlerhaft Allgemeine Fragen zu JTL-Shop 0
Neu Ganz neuer Bug? eBay.co.uk Verkauf Lieferung nach Ungarn - falsche Steuer eBay-Anbindung - Fehler und Bugs 2
Neu Strukturierte Daten für VarKombis/Varianten nach Google Ankündigung vom 20.02.2024 JTL-Shop - Ideen, Lob und Kritik 0
Neu Export nach Vorgabe der Artikelnummern JTL Ameise - Eigene Exporte 5
Manuelle Workflowliste nach Update durcheinandergewürfelt JTL-Wawi 1.8 0
Neu Nach Update von 1.5 auf 1.8 Versand in die Schweiz nicht mehr möglich JTL-ShippingLabels - Fehler und Bugs 2
Neu JTL-Search - funktioniert nach Anmeldung als Kunde schlechter als ohne Anmeldung User helfen Usern - Fragen zu JTL-Wawi 0
Neu Links der Startseite funktionieren nach Update mobil nicht Installation / Updates von JTL-Shop 1
Händlerrabatte sind nach Bestellung in JTL Wawi nicht ersichtlich JTL-Wawi 1.8 0
Neu jtl list&label Positionsleiste gruppieren nach sku Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 1

Ähnliche Themen