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
70
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
Neu Druck nach jeder Position JTL-POS - Fragen zu Hardware 1
Neu Nach Umstellung DHL Versenden 4.0 wird Kleinpaket nun auf DHL Paket Labeldrucker ausgegeben statt auf Kleinpaketdrucker JTL-ShippingLabels - Fehler und Bugs 1
Inaktive Verkaufskanäle lassen sich nicht löschen – erscheinen nach Löschen und Speichern erneut JTL-Wawi 1.11 0
Nach Update auf 2.01 kein Worker mehr JTL-Wawi 2.0 4
Neu JTL Pos liest keine Verkäufe mehr ein nach Update Einrichtung / Updates von JTL-POS 0
Nach Update auf Wawi 2.0.X, API v1 Fehler JTL-Wawi 2.0 7
Neu SQL-Server geht eine Stunde nach Allgemeine Fragen zu JTL-Shop 4
Neu eBay-Vorlage übernimmt alten Artikelnamen nach Duplizieren – Bug oder Bedienfehler? JTL-Wawi - Fehler und Bugs 2
Login Zeiten nach User in Wawi 1.6 JTL-Wawi 1.6 0
Neu Problem nach Update auf Shop 5.6.1 - Impressum JTL-Shop - Fehler und Bugs 2
Neu Fehlermeldung nach der Umstellung von DHL Versenden 4.0 JTL-Track&Trace - Fehler und Bugs 0
Neu Refresh nach Abgleich User helfen Usern - Fragen zu JTL-Wawi 0
Neu Artikel letzte 10 Versanddaten, sortiert nach Datum mit Plattform Eigene Übersichten in der JTL-Wawi 4
Neu Stücklisten nach Artikelkopie nicht mehr direkt änderbar – Bug oder gewollte Änderung? JTL-Wawi - Fehler und Bugs 1
Neu Strukturierte Daten vom Typ "Produkt" werden nach Update auf JTL Shop 5.6.1 nur fehlerhaft erkannt JTL-Shop - Fehler und Bugs 3
Neu JTL POS - nach Gerätetausch - Standard-Datenbank hinterlegen Einrichtung / Updates von JTL-POS 1
Neu Pickliste nach Teillieferung automatisch löschen Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 0
Neu Was genau passiert nach dem zurücksetzen? WooCommerce-Connector 0
Neu DSGVO – Automatisierte Löschung von Kundendaten nach 10 Jahren (JTL-Wawi / JTL-Shop) User helfen Usern - Fragen zu JTL-Wawi 2
Neu nach Update nicht alle Rechnungen mehr an Amazon Amazon-Anbindung - Fehler und Bugs 0
Neu OPC friert beim speichern von Änderungen ein nach JTL-Shop Update von Version 5.1.5 auf 5.6.1 JTL-Shop - Fehler und Bugs 6
Neu Sortierung nach Produkt Kategorie Arbeitsabläufe in JTL-Wawi 0
Export Zahlungen Amazon marketplace bei Kombi OSS und FBA erfolgt nach JTL2DATEV unvollständig JTL-Wawi 1.9 0
Neu Nach Shopupdate http error 500 JTL-Shop - Fehler und Bugs 9
Neu Abfrage Pakete nach Gewicht, Menge und durchschnittliches Gewicht Eigene Übersichten in der JTL-Wawi 0
Serienmails aus dem Shop nach Kundenimport Einrichtung JTL-Shop5 0
Neu POS-Server startet nicht mehr nach WaWi-update auf Version 1.11.6.0 JTL-POS - Fehler und Bugs 1
Nach Update auf 1.11.6 werden die Preisänderung nicht mehr von der Wawi an Amazon übertragen JTL-Wawi 1.11 0
Bankverbindung in der xml ZugFerd ändern je nach Zahlungsart JTL-Wawi 1.11 5
Ein Schritt vor, drei zurück – warum gehen nach Updates immer wieder Grundfunktionen kaputt? JTL-Wawi 1.11 2
Artikel kaputt nach Inventur JTL-Wawi 1.7 0
Neu Couponfeld nach Eingabe eines coupons automatisch ausblenden lassen Allgemeine Fragen zu JTL-Shop 4
Neu Kunden nach Onlineshop aktiv filtern? User helfen Usern - Fragen zu JTL-Wawi 2
Neu Karussell gehen auf der Startseite nach Update auf 5.6.1 nicht mehr Betrieb / Pflege von JTL-Shop 8
Neu Übergabe von Pickliste nach Packtisch User helfen Usern - Fragen zu JTL-Wawi 7
Neu Variationsartikel nicht in den Warenkorb legbar – unterschiedliches Verhalten je nach Auswahlweg JTL-Shop - Fehler und Bugs 5
Neu Artikel nach Storno weiterhin reserviert User helfen Usern - Fragen zu JTL-Wawi 2
Artikel Gehen nicht aus In Aufträge raus nach Versand JTL-Wawi 1.11 1

Ähnliche Themen