PhPepperShop

PhPepperShop Advancedsuche Modul

Inhaltsverzeichnis

Einführung

Die Advanced Artikelsuche ist ein PhPepperShop Modul, welches dynamisch verschiedene Einschränkungskriterien verwenden kann und Informationen selbstständig in Dropdowns abgefüllt zur Auswahl präsentiert.

Modulstruktur

[shop/config.inc.php] (Aktivierung)
 shop/advancedsuche.php
 shop/suchresultat_modul.def.php
 shop/language/html_templates/advancedsuche.tpl.html

Darstellung: Das zugehörige Template findet man in der Datei advancedsuche.tpl.html bei den HTML-Templates. Logik: Die Implementierung der Advancedsuche findet man in der Datei advancedsuche.php. Diese Datei hier wird in USER_ARTIKEL_HANDLING_AUFRUF.php included. Die Datei suchresultat_modul.def.php ermöglicht diverse Zusatzoperationen auf der Suchresultatanzeige (Sortierung, ...). Diese Datei muss nicht konfiguriert werden. Aktivierung: Die Advancedsuche wird erst dann benutzt, wenn man sie in der config.inc.php adäquat aktiviert. Genaueres siehe im Kapitel Aktivierung.

Welche Advancedsuche Modulversion für welche PhPepperShop Version kompatibel ist, findet man ganz unten in der History-Anzeige.

Definition und Benutzung der Advanced Artikelsuche

Man definiert in der Datei shop/advancedsuche.php in der Funktion get_advanced_suche_config() die Felder, nach welchen man die Suche einschraenken koennen soll. Dabei gibt es zwei Kategorien von Feldern: Kategorie-DB-Felder und Artikel-DB-Felder. Die Kategorie-DB-Felder sollte nach Möglichkeit zu Beginn angeordnet werden, direkt nach den Kategoriebaum Feldern (Hauptkat. / Unterkat.). Das erste Feld listet alle Möglichkeiten inkl. Kommentaren zu den einzelnen Feldbestandteilen. Je nach Feld-Typ (Dropdown, String, ...) können im Feldbestandteil 'options' noch spezifische Daten angegeben werden.

Lokalisierung

Damit die Bezeichner vor den Feldern lokalisiert dargestellt werden können, werden Labels eingesetzt. Diese Labels muss man nun in den entsprechenden Uebersetzungsdateien (shop/language/xy/localetext.inc.php) einfügen und den jeweils uebersetzten Begriff dazu definieren. Wenn der Shop keinen übersetzten Begriff findet, zeigt er stattdessen den hier im Label angegebenen Begriff ein.

Installation / Aktivierung

Um die Advanced Artikelsuche zu aktivieren, muss man in der Datei shop/config.inc.php (Konstantendefinitionen) der Konstante mit der Bezeichnung FILENAME_ADVANCED_SEARCH als Wert den Namen dieser Datei zuweisen (Default: advancedsuche.php). Diese Datei muss man ins {shop_root}/shop - Verzeichnis kopieren und das Template-File advancedsuche.tpl.html ins Verzeichnis shop/language/html_templates. Erst jetzt wird die Advanced Artikelsuche vom Shop erkannt und benutzt. Die Standard PhPepperShop Artikelsuche wird nun nicht mehr benutzt. Im Administrationsbereich -> 'Shop Konfiguration ansehen' sieht man nun nach den Konstantendefinitionen das eingebundene Suchmodul inkl. Versionsanzeige.

Technische Einbindung

Customizing

Die Anpassungen für einen jeweiligen Kunden erfolgen ausschliesslich in der Datei advancedsuche.php. Hier editiert man die anzuzeigenden Elemente der Suchmaske in der ersten Funktion: get_advanced_suche_config(). Es gibt in dieser Funktion globale Einstellungen, die von einzelnen dargestellten Elementen unabhängig sind und es gibt die einzeln beschriebenen Elemente der Suchmaske. Um die Umsetzung zu vereinfachen, sollte man unbedingt unten das Tipps-Kapitel gelesen haben (siehe weiter unten, nach den Beispielen).

Eigentlich ist es ganz einfach. Man stellt im vorhandenen Array $adv_config['adv_felder'] einfach die benötigten Elemente ein, die in der Advancedsuchemaske angezeigt werden sollen und gibt für jedes Element an, was seine Datenbasis ist, wie es aussehen soll und wie es heissen soll - dies ist grob der Überblick, was zu tun ist. Änderungen dieser Art sollten 80%-90% aller Anforderungen befriedigen können.

Auf das Customizing der globalen Parameter $adv_config['adv_global'] wird hier nicht weiter eingegangen. Im Quelltext steht dazu jeweils ein Infokommentar.

Zusatzfeld als Dropdown darstellen (Einfaches Beispiel)

Meistens wird nur ein Artikelzusatzfeld als Dropdown dargestellt benötigt. Eine mögliche Realisierung sieht man in folgendem kleinen Beispiel aus einem existierenden Projekt:

    $adv_config['adv_felder'][0] = array('label'    => 'artikel_zusatzfeld1',                              // in jeder localetext.inc.php übersetzen
                                        'var_name'  => 'weintyp',                                          // Name der Variable, die ueber POST uebertragen wird
                                        'feldnamen' => LANGUAGE_DB_FIELD_MODE_PREFIX..'zusatzfeld_1',      // Name des Datenbankfeldes (fuer Einschraenkung)
                                        'tabelle'   => 'artikel',                                          // Name der Tabelle wo das DB-Feld vorkommt
                                        'typ'       => 'dropdown',                                         // Darstellungsart = dropdown
                                        'options'   => array('dropdown_parent' => -1,                      // Parent-Dropdown bei verschachtelten Dropdown-Typen (-1 = deaktiviert)
                                                             'feldnamen_auslesen' => LANGUAGE_DB_FIELD_MODE_PREFIX.'zusatzfeld_1',       // Feldname in der Tabelle, welche als Option-Tag Label angezeigt werden
                                                             'feldnamen_einschraenkung' => LANGUAGE_DB_FIELD_MODE_PREFIX.'zusatzfeld_1', // Feldname der bei den Einschränkungen als Vergleich benutzt wird
                                                             'einschraenkungen'=>LANGUAGE_DB_FIELD_MODE_PREFIX.'zusatzfeld_1 != \'\''    // SQL-Einschraenkungen, hier damit keine Leereinträge zur Auswahl angezeigt werden
                                                            ),
                                       );

Darstellungstypen

Es existieren folgende Darstellungstypen (Elemente), welche in Form einer Feldkonfiguration als ein Sucheingabeparameter eines Shopkunden abgefragt und verarbeitet werden kann.

Möglichkeiten (Demoeintrag)

Was ist alles möglich? -> Es gibt in der Funktion get_advanced_suche_config() am Anfang einen auskommentieren Arrayeintrag ($adv_config['adv_felder'][0]). Dieser Eintrag erläutert alle Möglichkeiten, die es in der aktuell benutzten Advancedsuche Version gibt:

    // Demofeld -> Nach Auskommentieren unbedingt die Nummerierung des adv_felder-Keys korrigieren
    $adv_config['adv_felder'][0] = array('label'     => 'neues_feld', // Label, das angezeigt wird, sollte in jeder localetext.inc.php übersetzen worden sein (hier angegebener Wert = key im Array in localetext.inc.php)
                                         'var_name'  => 'neues_feld', // Name der Variable, die ueber POST übertragen wird, damit man beim Debugging weiss, um was es sich handelt
                                         'feldnamen' => 'neues_feld', // Name des Datenbankfeldes (Datenbasis eines Dropdowns und /oder Vergleichskriterium bei Suchdurchfuehrung), ACHTUNG: Bei LANGUAGE_DB_FIELD_MODE Mehrsprachigkeit, muss man hier die Konstante LANGUAGE_DB_FIELD_MODE_PREFIX vor dem Feldnamen anfuegen!
                                         'tabelle'   => 'artikel',    // Name der Tabelle wo das DB-Feld vorkommt (artikel oder kategorien)
                                         'typ'       => 'string',     // string | dropdown | boolean | von_bis | von_bis_felder | datetime | order (-> Art der Darstellung eines Suchmaskenelements)
                                         'options'   => array('value'            => '',                                                   // string:   Vorausgefuellter Wert eines String-Typs
                                                              'size'             => 20,                                                   // string:   Laenge des Texteingabefelds
                                                              'maxlength'        => 255,                                                  // string:   Max. Textlaenge der Kundeneingaben (Texteingabefeld)
                                                              'boolean_checked'  => true,                                                 // boolean:  Def. ob die Boolean-Checkbox vorausgewaehlt sein soll
                                                              'boolean_true'     => '= \'Y\'',                                            // boolean:  Defaultwert von true bei Boolean-Typen (Operator plus Wert)
                                                              'label_danach'     => 'Zusatzinfos...',                                     // boolean:  Text, der rechts neben der Checkbox dargestellt wird. Falls es ein Label in der aktuellen Uebersetzungsdatei gibt, welches strtolower() dem angegebenen Text entspricht, wird der uebersetzte Text angezeigt. Es wird html_coding::htmlentities() angewendet.
                                                              'von'              => 150,                                                  // von_bis:  Beim Typ von_bis, ab welchem Wert (Voreinstellung)
                                                              'bis'              => 990,                                                  // von_bis:  Beim Typ von_bis, bis zu welchem Wert (Voreinstellung)
                                                              'datetime_values'  => array('label'=>days[int]..)                           // datetime: Hier wird dem Shopkunden ein Dropdown mit den hier angegebenen Werten als Sucheinschraenkung angeboten. Die Werte werden als Array key=>value Paerchen uebergeben. Dabei wird als Key jeweils ein Label uebergeben, z.B. 1 Woche und als value der Wert in Tagen (7) als Integerwert. Das angegebene Label wird in der Uebersetzungsdatei gesucht, falls nicht vorhanden wird der hier angegebene Wert angezeigt. Fuer Werte: Siehe auch Beispiel weiter unten...
                                                              'order_values'     => array('label'=>LANGUAGE_DB_FIELD_MODE_PREFIX.feldname)// order:    Hierbei werden zwei Dropdowns erstellt. Im ersten werden mit Labels angezeigt, nach welchen Feldern die Suchausgabe sortiert ausgegeben werden kann. Die Feldangaben sollten immer einen Tabellennamenprefix haben: a. fuer Tabelle artikel, ak. fuer Tabelle artikel_kategorie, k. fuer Tabelle kategorie, da es sonst unter Umstaenden zu einem ambigues field SQL-Fehler kommen kann. Im zweiten Dropdown kann man auf- oder absteigend waehlen. (Bei Feldnamen LANGUAGE_DB_FIELD_MODE_PREFIX nicht vergessen!)
                                                              'dropdown_parent'  => -1,                                                   // dropdown: Parent-Dropdown bei verschachtelten Dropdown-Typen (-1, wenn es keine Abhängigkeiten gibt, ansonsten wird hier die Feld-Nr. des Suchelements angegeben, von dessen Werten dieses Dropdown abhängt)
                                                              'dropdown_reload'  => true,                                                 // dropdown: Wenn Dropdowns miteinander verknuepft sind (dropdown_parent), so ist es oft sinnvoll, wenn nach dem Aendern eines Wertes gleich ein Reload geschieht, so dass die abhaengigen Dropdowns gleich mit weiteren Einschraenkungskriterien neu geladen werden. Hier kann man dieses Verhalten steuern: true = sofort nach jeder Aenderung neu nachladen, false = nicht nachladen (Default ist true). Diese Einstellung kann auch fuer den Typ datetime verwendet werden.
                                                              'dropdown_order'   => LANGUAGE_DB_FIELD_MODE_PREFIX.'neues_feld ASC',       // dropdown: Feldnamen fuer die Sortierung der Werte im Dropdown, die den globalen Wert dropdown_order und das Sortierfeld neues_fled ueberschreibt
                                                              'feldnamen_auslesen' => LANGUAGE_DB_FIELD_MODE_PREFIX.'zusatzfeld_1',       // dropdown: Feldname in der Tabelle, welche als Option-Tag Label angezeigt werden
                                                              'feldnamen_einschraenkung' => LANGUAGE_DB_FIELD_MODE_PREFIX.'zusatzfeld_1', // dropdown: Feldname der bei den Einschraenkungen als Vergleich benutzt wird (String) oder als Array (Key: Feld-Nr, Value: Name des Einschraenkungsfeldes (pro Dropdown einstellbar)). Wenn der Wert '*none*' angegeben wird, so wird die Einschraenkung fuer das Dropdown mit der angegebenen Feld-Nr. nicht mehr verwendet!
                                                              'einschraenkungen' =>'',                                                    // dropdown: Ev. gibt es noch SQL-Einschraenkungen... (Beispiel: Siehe Demo-Implemenentierungen Felder 0-2), Achtung: Werte hier muessen schon geaddslashed angegeben werden.
                                                              'dropdown_ignore_if_parent_value_set' => false,                             // dropdown: Moegliche Werte: true|false: Wenn dieses Flag auf true gesetzt wird, ignoriert dieses Feld, ob der Parent zuvor in der Suchmaske ausgewaehlt worden ist. Das Dropdown wird dann somit nicht disabled.
                                                              'dropdown_decode_values'=>'',                                               // dropdown: Wenn pro ausgelesenes Feld mehrere zu decodierende Werte enhalten sind, so wird hier die Methode der Dekodierung angegeben oder ein Zeichen, welches als Wertedelimiter gilt. ACHTUNG: Wenn dieses Element benutzt wird, generiert die Suche SQL-Elemente mit LIKE '%string%'
                                                              'dropdown_sort_decode_values'=>'',                                          // dropdown: Wenn pro ausgelesenes Feld mehrere zu decodierende Werte enhalten sind, kann hier eine PHP-Arraysortierungsfunktion angegeben werden um die neu erfassten Daten zu sortieren. Diese Einstellung macht nur in Zusammenhang mit dropdown_decode_values Sinn. Beispielfunktionen: natsort, natcasesort, sort, rsort
                                                              'dropdown_filters' =>'',                                                    // dropdown: Wenn die Dropdown-Werte vor der Verwendung und Anzeige gefiltert werden sollen, kann man hier Komma-separiert die Filter-Funktionsnamen angeben (z.B. trim,strtoupper - bitte kein Komma am Ende stehen lassen!). ACHTUNG: Wenn dieses Element benutzt wird, generiert die Suche SQL-Elemente mit LIKE '%string%'
                                                              'dropdown_width'   =>'800px',                                               // dropdown: Angabe der fixen Breite eines Dropdowns. Der Wert wird als CSS-Styleangabe verarbeitet
                                                              'dropdown_additional_values'=> array(array('label'=>'label1','value'=>'value1'),array('label'=>'label2','value'=>'value2'),...,array('label'=>'label_n','value'=>'value_n')) // dropdown: Vordefinierte, zusaeztliche Werte (je ein Label und ein Wert) definieren. Diese ergaenzen das Set der ausgelesenen Werte und koennen mit SQL-Like Operationen zusaetzliche Auswahlmoeglichkeiten erschaffen, welche mit direkten Werten nicht so einfach moeglich sind, z.B. alle Werte mit Zeichenfolge xyz => %xyz%. Wenn das Label als key eines Uebersetzten Wertes in localetext.inc.php vorhanden ist, wird der uebersetzte Wert angezeigt.
                                                              'feldnamen_bis'    => LANGUAGE_DB_FIELD_MODE_PREFIX.'zusatzfeld_1',         // von_bis_felder: Feldnamen fuer den Maximalwert auf den die Abfrage geprueft wird
                                                              'string_cmp_op'    => 'LIKE' oder '='                                       // string:   Welcher Vergleichsoperator soll verwendet werden? LIKE oder der = Operator?
                                                              'string_like_pattern'=> '{string}', '%{string}', '{string}%', '%{string}%'  // string:   Falls der string_cmp_op = LIKE ist, kann man hier noch optional ein Pattern definieren, welches eine unscharfe Suche erlaubt. Das %-Zeichen steht fuer alle moeglichen Zeichen vor / nach dem Suchtstring ({string}).
                                                             ), // Optionen
                                        );

Einige Optionseinstellungen gelten nur im Zusammenhang des gewählten Typs (typ). Man muss immer den Kommentar hinter der Option lesen, um deren Bedeutung korrekt zu verstehen.

Demo Implementierungen / fertige Beispiele

Weiter helfen folgende Beispiele um komplexere Zusammenhänge zu visualisieren.

    $adv_config['adv_felder'][0] = array('label'    => 'Hauptkategorie',
                                        'var_name'  => 'hkat_Name',
                                        'feldnamen' => 'Kategorie_ID',
                                        'tabelle'   => 'kategorien',
                                        'typ'       => 'dropdown',
                                        'options'   => array('value'           => '',
                                                             'dropdown_parent' => -1,   // Parent-Dropdown bei verschachtelten Dropdown-Typen
                                                             'feldnamen_auslesen' => LANGUAGE_DB_FIELD_MODE_PREFIX.'name', // Feldname in der Tabelle, welche als Option-Tag Label angezeigt werden
                                                             'feldnamen_einschraenkung' => array(1=>'Parent_ID',2=>'*none*'), // Feld-Nr -> Name des Einschraenkungsfeldes (pro Dropdown einstellbar)
                                                             'einschraenkungen'=>'kategorien.Parent_ID = 0' // Bei Dropdown: Ev. gibt es noch SQL-Einschraenkungen...
                                                            ),
                                       );

    $adv_config['adv_felder'][1] = array('label'    => 'Unterkategorie 1',
                                        'var_name'  => 'ukat1_Name',
                                        'feldnamen' => 'Kategorie_ID',
                                        'tabelle'   => 'kategorien',
                                        'typ'       => 'dropdown',
                                        'options'   => array('value'           => '',
                                                             'dropdown_parent' => 0,   // Parent-Dropdown bei verschachtelten Dropdown-Typen
                                                             'feldnamen_auslesen' => LANGUAGE_DB_FIELD_MODE_PREFIX.'name', // Feldname in der Tabelle, welche als Option-Tag Label angezeigt werden
                                                             'feldnamen_einschraenkung' => array(2=>'Parent_ID'), // Feld-Nr -> Name des Einschraenkungsfeldes (pro Dropdown einstellbar)
                                                             'einschraenkungen'=>'kategorien.Parent_ID > 0', // Bei Dropdown: Ev. gibt es noch SQL-Einschraenkungen...
                                                            ),
                                       );

    $adv_config['adv_felder'][2] = array('label'    => 'Unterkategorie 2',
                                        'var_name'  => 'ukat2_Name',
                                        'feldnamen' => 'Kategorie_ID',
                                        'tabelle'   => 'kategorien',
                                        'typ'       => 'dropdown',
                                        'options'   => array('value'           => '',
                                                             'dropdown_parent' => 1,   // Parent-Dropdown bei verschachtelten Dropdown-Typen
                                                             'feldnamen_auslesen' => LANGUAGE_DB_FIELD_MODE_PREFIX.'name', // Feldname in der Tabelle, welche als Option-Tag Label angezeigt werden
                                                             'einschraenkungen'=>'kategorien.Parent_ID > 0', // Bei Dropdown: Ev. gibt es noch SQL-Einschraenkungen...
                                                            ),
                                       );

    $adv_config['adv_felder'][3] = array('label'    => 'preis',
                                        'var_name'  => 'preis',
                                        'feldnamen' => 'Preis',
                                        'tabelle'   => 'artikel',
                                        'typ'       => 'von_bis',
                                        'options'   => array('value'           => '',
                                                             'von'             => 0, // Beim Typ von_bis, ab welchem Wert
                                                             'bis'             => 0, // Beim Typ von_bis, bis zu welchem Wert
                                                             'size'            => 9, // Laenge des Texteingabefelds
                                                             'maxlength'       => 9, // Max. Textlaenge der Kundeneingaben (Texteingabefeld)
                                                            ),
                                       );

    $adv_config['adv_felder'][4] = array('label'    => 'promo',
                                        'var_name'  => 'promo',
                                        'feldnamen' => 'promo',
                                        'tabelle'   => 'artikel',
                                        'typ'       => 'boolean',
                                        'options'   => array('value'           => '',
                                                             'boolean_checked' => false,     // Def. ob die Boolean-Checkbox vorausgewaehlt sein soll
                                                             'boolean_true'    => '= \'Y\'', // Def. von true bei Boolean-Typen
                                                            ),
                                       );

    $adv_config['adv_felder'][5] = array('label'    => 'knallerangebot',
                                        'var_name'  => 'knallerangebot',
                                        'feldnamen' => LANGUAGE_DB_FIELD_MODE_PREFIX.'zusatzfeld_4',
                                        'tabelle'   => 'artikel',
                                        'typ'       => 'string',
                                        'options'   => array('value'     => '',
                                                             'size'      => 16,
                                                             'maxlength' => 255
                                                            ),
                                       );

    $adv_config['adv_felder'][6] = array('label'    => 'ab_lager_lieferbar',
                                        'var_name'  => 'ab_lager_lieferbar',
                                        'feldnamen' => 'Lagerbestand',
                                        'tabelle'   => 'artikel',
                                        'typ'       => 'boolean',
                                        'options'   => array('value'           => '',
                                                             'boolean_checked' => false, // Def. ob die Boolean-Checkbox vorausgewaehlt sein soll
                                                             'boolean_true'    => '> 0',  // Def. von true bei Boolean-Typen
                                                            ),
                                       );

    $adv_config['adv_felder'][7] = array('label'    => 'farbe',
                                        'var_name'  => 'farbe',
                                        'feldnamen' => LANGUAGE_DB_FIELD_MODE_PREFIX.'zusatzfeld_8',
                                        'tabelle'   => 'artikel',
                                        'typ'       => 'dropdown',
                                        'options'   => array('value'           => '',
                                                             'dropdown_parent' => -1, // Parent-Dropdown bei verschachtelten Dropdown-Typen
                                                             'dropdown_reload' => false, // Nicht nach jeder Aenderung der Auswahl im Dropdown durch den Shopkunden sofort die Suchmaske neu nachladen
                                                             'einschraenkungen'=> LANGUAGE_DB_FIELD_MODE_PREFIX.'zusatzfeld_8 <> \'\'',
                                                             'dropdown_decode_values'=>',',
                                                             'dropdown_sort_decode_values'=>'sort',
                                                             'dropdown_filters'=> 'trim'
                                                            ),
                                       );

    $adv_config['adv_felder'][8] = array('label'    => 'Im Shop seit',
                                        'var_name'  => 'datum',
                                        'feldnamen' => 'erstellt',
                                        'tabelle'   => 'artikel',
                                        'typ'       => 'datetime',
                                        'options'   => array('value'           => '', // Vorausgewaehltes Element
                                                             'datetime_values' => array('egal'=>-1,'heute'=>0,'gestern'=>1,'1 '.£('woche')=>7,'2 '.£('wochen')=>14,'3 '.£('wochen')=>21,'1 '.£('monat')=>30,'6 '.£('monate')=>180,'1 '.£('jahr')=>365), // Label (wird uebersetzt) und Anzahl Tage in der Vergangenheit
                                                             'dropdown_reload' => false, // Nicht nach jeder Aenderung der Auswahl im Dropdown durch den Shopkunden sofort die Suchmaske neu nachladen
                                                            ),
                                       );

    $adv_config['adv_felder'][9] = array('label'    => 'sortierung',
                                        'var_name'  => 'order',
                                        'typ'       => 'order',
                                        'options'   => array('value'           => '', // Vorausgewaehltes Element
                                                             'order_values'    => array('artikelname'=>'a.'.LANGUAGE_DB_FIELD_MODE_PREFIX.'Name','preis'=>'a.Preis','artikel_zusatzfeld1'=>'a.'.LANGUAGE_DB_FIELD_MODE_PREFIX.'zusatzfeld_1'), // Label (wird uebersetzt) und Feldname inkl. Tabellenreferenz (a. = artikel, ak. = artikel_kategorie, k. = kategorien), Lokalisierte Feldnamen mit LANGUAGE_DB_FIELD_MODE_PREFIX. versehen.
                                                             'dropdown_reload' => false, // Nicht nach jeder Aenderung der Auswahl im Dropdown durch den Shopkunden sofort die Suchmaske neu nachladen
                                                            ),
                                       );

    $adv_config['adv_felder'][10] = array('label'    => 'Hersteller Artikel-Nr.',
                                        'var_name'  => 'hersteller_artikel_nr',
                                        'feldnamen' => 'hersteller_artikel_nr',
                                        'tabelle'   => 'artikel',
                                        'typ'       => 'dropdown',
                                        'options'   => array('value'           => '',
                                                             'dropdown_parent' => 1, // Parent-Dropdown bei verschachtelten Dropdown-Typen
                                                             'einschraenkungen'=>LANGUAGE_DB_FIELD_MODE_PREFIX.'zusatzfeld_1 <> \'\'', // Einschraenkungen selbst addslashen
                                                             'dropdown_ignore_if_parent_value_set'=>true, // Dropdown nicht disablen, bloss weil noch keine Hauptkategorie gewaehlt worden ist..
                                                            ),
                                       );

//     $adv_config['adv_felder'][11] = array('label'    => 'Alter',
//                                         'var_name'  => 'alter',
//                                         'feldnamen' => 'zusatzfeld_2',
//                                         'tabelle'   => 'artikel',
//                                         'typ'       => 'von_bis_felder',
//                                         'options'   => array('von'              => 0,
//                                                              'bis'              => 99,
//                                                              'size'             => 2,
//                                                              'maxlength'        => 2,
//                                                              'feldnamen_bis' => 'zusatzfeld_3',
//                                                             ),
//                                        );

    global $my_session;
    if (intval($my_session->get_session_var('kat_aktiv')) > 0) {
        $adv_config['adv_felder'][]  = array('label'    => 'Nur in aktueller Kategorie suchen',
                                            'var_name'  => 'nur_aktuelle_kategorie',
                                            'feldnamen' => 'Kategorie_ID',
                                            'tabelle'   => 'kategorien',
                                            'typ'       => 'boolean',
                                            'options'   => array('value'           => '',
                                                                 'boolean_checked' => false,     // Def. ob die Boolean-Checkbox vorausgewaehlt sein soll
                                                                 'boolean_true'    => '= '.intval($my_session->get_session_var('kat_aktiv')), // Def. von true bei Boolean-Typen
                                                                 'label_danach'    => ' (es werden keine Unterkategorien berücksichtigt)'
                                                                ),
                                           );
    }

Tipps

Mehrsprachigkeit

History

Die Version des eingesetzten Advancedsuche Moduls sieht man in der Funktion get_advanced_suche_config(), z.B. $adv_config['adv_global']['version'] = '2.1'; für v.2.1.

Todo


--fjo 18:55, 9. Juli 2014 - nach oben gehen