Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: ANLEITUNG: Artikelanzahl pro Seite als Dropdown

    luckybaron

    • Mitglied
    • Beiträge: 168
    Da hier schon oft die Frage gestellt wurde wie man Artikel pro Seite als Dropdown anzeigt habe ich hier mal eine Anleitung.

    /includes/application_top.php

    Suche:

    Code: PHP  [Auswählen]
    // verify the IP address if the feature is enabled
        if (SESSION_CHECK_IP_ADDRESS == 'True') {
          $ip_address = xtc_get_ip_address();
          if (!isset ($_SESSION['SESSION_IP_ADDRESS'])) {
             $_SESSION['SESSION_IP_ADDRESS'] = $ip_address;
          }

          if ($_SESSION['SESSION_IP_ADDRESS'] != $ip_address) {
            session_destroy();
            xtc_redirect(xtc_href_link(FILENAME_LOGIN));
          }
        }

    und füge danach ein:

    Code: PHP  [Auswählen]
    // --- prlistlen beginn --------------------------------------
        if (isset($_POST['prllset'])) {
          $_SESSION['prllset'] = intval($_POST['prllset']);
        }
        if( $_SESSION['prllset']==0 || $_SESSION['prllset']=='') {
          $_SESSION['prllset']=10000; //define here max. Products to be listet
        }
    // --- prlistlen end --------------------------------------

    /includes/modules/product_listing.php

    Suche:

    Code: PHP  [Auswählen]
     $listing_split = new splitPageResults($listing_sql, (int)$_GET['page'], MAX_DISPLAY_SEARCH_RESULTS, 'p.products_id');

    Ersetze das durch:

    Code: PHP  [Auswählen]
    $listing_split = new splitPageResults($listing_sql, (isset($_GET['page']) ? (int)$_GET['page'] : 1), (isset($_SESSION['prllset']) ? (int)$_SESSION['prllset'] : ''), MAX_DISPLAY_SEARCH_RESULTS, 'p.products_id');

    Suche:

    Code: PHP  [Auswählen]
    // get default template
        if ($category['listing_template'] == '' or $category['listing_template'] == 'default') {
          $files = array ();
          if ($dir = opendir(DIR_FS_CATALOG.'templates/'.CURRENT_TEMPLATE.'/module/product_listing/'))

    {

    und setze davor:

    Code: PHP  [Auswählen]
    //BOF - Markus - 2010-08-25 - Anzahl Artikel je Seite
    //prll_dropdown BEGINS
    // Abfrage ob die Sortieranzeige im normalen Katalog ist, oder in der Suche - Abhängig davon wird der aufzurufende Dateiname
    // geändert bei Formularauslösung. Diese Version ist nicht sauber, eigentlich muss das Dropdown mit der Seitenanzahl aus dem
    // Produktlisting ausgegliedert werden!

    $prll_sort = array(array('text' => PRLL_STANDARD));
    $prll_sort[] = array('id' => '5', 'text' => PRLL_5);
    $prll_sort[] = array('id' => '10', 'text' => PRLL_10);
    $prll_sort[] = array('id' => '20', 'text' => PRLL_20);
    $prll_sort[] = array('id' => '40', 'text' => PRLL_40);
    $prll_sort[] = array('id' => '100', 'text' => PRLL_100);
    $prll_sort[] = array('id' => '500', 'text' => PRLL_500);

    $prll_dropdown = xtc_draw_form('prll_links', xtc_href_link(basename($PHP_SELF), xtc_get_all_get_params()), 'post');
    $prll_dropdown .= xtc_draw_pull_down_menu('prllset', $prll_sort, isset($_SESSION['prllset']) ? $_SESSION['prllset']:'', 'onchange="this.form.submit()" style="width: 200px;"');
    $prll_dropdown .= '</form>';
    $module_smarty->assign('PRLL_LINKS', $prll_dropdown);
    //prll_dropdown END Anzahl Artikel je Seite

    /templates/xtc5/module/product_listing/product_listing_v1.html

    An angewünschter Stelle den Smarty Tag einfügen:

    Code: PHP  [Auswählen]
    {$PRLL_LINKS}

    lang/german/german.php:

    das hier am Ende einfügen:

    Code: PHP  [Auswählen]
    define('PRLL_STANDARD', 'Alle Artikel anzeigen');
    define('PRLL_5', '5 Artikel je Seite');
    define('PRLL_10', '10 Artikel je Seite');
    define('PRLL_20', '20 Artikel je Seite');
    define('PRLL_40', '40 Artikel je Seite');
    define('PRLL_100', '100 Artikel je Seite');
    define('PRLL_500', '500 Artikel je Seite');

    lang/english/english.php:

    das hier am Ende einfügen:

    Code: PHP  [Auswählen]
    define('PRLL_STANDARD', 'show all items');
    define('PRLL_5', '5 items per page');
    define('PRLL_10', '10 items per page');
    define('PRLL_20', '20 items per page');
    define('PRLL_40', '40 items per page');
    define('PRLL_100', '100 items per page');
    define('PRLL_500', '500 items per page');

    Die Anleitung stammt von hier: Länge der Produktliste einstellbar, hab gedacht ich trage es hier mal zusammen, da einige ja keine Freunde der Suche sind.

    [ Für Gäste sind keine Dateianhänge sichtbar ]

    [EDIT GTB 20.04.2011: Code modifiziert.]
    [EDIT GTB 21.04.2011: Code komplett überarbeitet und Mehrsprachigkeit ergänzt.]
    [EDIT GTB 30.05.2011: Code korrigiert.]

    Linkback: https://www.modified-shop.org/forum/index.php?topic=12444.0

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    Re: ANLEITUNG: Artikelanzahl pro Seite als Dropdown
    Antwort #1 am: 20. April 2011, 14:41:59
    Ja super! :thx:

    Wenn das jetzt noch durch Sprachdateien mehrsprachig gemacht wird, dann ist es perfekt. ;-)

    Da sehe ich auf dem Screenshot ja auch noch die Galerie-/Listenansicht, schick! Das wird unser Ziel für das standard xtc5 Template sein. ;-)

    Grüße

    Torsten

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.306
    • Geschlecht:
    Re: ANLEITUNG: Artikelanzahl pro Seite als Dropdown
    Antwort #2 am: 20. April 2011, 15:48:11
    feine Sache, aber verwende bitte KEIN $_SERVER[PHP_SELF] !

    Stattdessen verwende einfach nur $PHP_SELF. Diese Variable wird in der application_top definiert.

    Im aktuellen Trunk wurde $_SERVER[PHP_SELF] aus Sicherheitsgründen komplett entfernt.

    Danke Gerhard

    luckybaron

    • Mitglied
    • Beiträge: 168
    Re: ANLEITUNG: Artikelanzahl pro Seite als Dropdown
    Antwort #3 am: 20. April 2011, 16:06:29
    [...] Das wird unser Ziel für das standard xtc5 Template sein. ;-)
    [...]

    Das hoffe ich doch!

    Sorry GTB, das wusste ich nicht. Wie gesagt es ist auch nur aus diesem Länge der Produktliste einstellbar Beitrag zusammengetragen. Sollte natürlich gefixt werden. Es funktioniert auch, wenn man aus $_SERVER[PHP_SELF] einfach $PHP_SELF macht.

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.306
    • Geschlecht:
    Re: ANLEITUNG: Artikelanzahl pro Seite als Dropdown
    Antwort #4 am: 20. April 2011, 16:11:37
    Danke, habe es ersetzt.

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    Re: ANLEITUNG: Artikelanzahl pro Seite als Dropdown
    Antwort #5 am: 20. April 2011, 18:14:19
    @luckybaron:
    Wenn im April noch ein verregneter Tag kommt, dann kannst du dich ja vielleicht mal an die Mehrsprachigkeit des Moduls machen. :)

    Grüße

    Torsten

    speedy

    • Viel Schreiber
    • Beiträge: 3.214
    Re: ANLEITUNG: Artikelanzahl pro Seite als Dropdown
    Antwort #6 am: 20. April 2011, 19:34:55
    Vielen Dank an luckybaron für's posten. Feine Sache.
    Dachte erst das Grundmodul "Länge der Produktliste einstellbar" gäbe es auch mehrsprachig hier, aber das war wohl nur "MODUL: Artikel-Sortierung mehrsprachig".

     :thx:

    speedy

    • Viel Schreiber
    • Beiträge: 3.214
    Re: ANLEITUNG: Artikelanzahl pro Seite als Dropdown
    Antwort #7 am: 20. April 2011, 20:55:07
    Also im Trunk funktioniert es jetzt nicht.
    Da wird immer index.php?cPath... an den Kategorielink angehängt.

    Anbei noch die mehrsprachige Version:

    Einfügen am Ende in lang/german/german.php:

    Code: PHP  [Auswählen]
    define('PRLL_STANDARD', 'Artikel je Seite');
    define('PRLL_5', '5 Artikel je Seite');
    define('PRLL_10', '10 Artikel je Seite');
    define('PRLL_20', '20 Artikel je Seite');
    define('PRLL_40', '40 Artikel je Seite');
    define('PRLL_100', '100 Artikel je Seite');
    define('PRLL_500', '500 Artikel je Seite');
     
    in der includes/modules/product_listing.php diese Zeilen ersetzen mit:

    Code: PHP  [Auswählen]
    $prll_sort = array(array('text' => PRLL_STANDARD));
    $prll_sort[] = array('id' => '5', 'text' => PRLL_5);
    $prll_sort[] = array('id' => '10', 'text' => PRLL_10);
    $prll_sort[] = array('id' => '20', 'text' => PRLL_20);
    $prll_sort[] = array('id' => '40', 'text' => PRLL_40);
    $prll_sort[] = array('id' => '100', 'text' => PRLL_100);
    $prll_sort[] = array('id' => '500', 'text' => PRLL_500);
     

    speedy

    • Viel Schreiber
    • Beiträge: 3.214
    Re: ANLEITUNG: Artikelanzahl pro Seite als Dropdown
    Antwort #8 am: 20. April 2011, 23:49:37
    Dieser Code vom 1. Beitrag

    Code: PHP  [Auswählen]
    $prll_dropdown.= '' . "\n";
    muss auch noch ersetzt werden mit

    Code: PHP  [Auswählen]
    $prll_dropdown.= '</form>' . "\n";
    da das schließende form-Tag fehlte.

    Achja und bei diesen Zeilen muss das GET / get geschrieben werden. Gibt sonst Validierungsfehler

    Code: PHP  [Auswählen]
    if(basename($PHP_SELF)==FILENAME_DEFAULT){$prll_dropdown = xtc_draw_form('prll_links', FILENAME_DEFAULT, 'get') . ' ';}
    if(basename($PHP_SELF)==FILENAME_ADVANCED_SEARCH_RESULT){$prll_dropdown = xtc_draw_form('prll_links', FILENAME_ADVANCED_SEARCH_RESULT, 'get') . ' ';}
     
    Funktioniert im Trunk aber trotzdem nicht.
    v1.05 weiß ich nicht. Mache so Scherze nur mit dem Trunk, um beim normalen Arbeiten Fehler zu finden.

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.306
    • Geschlecht:
    Re: ANLEITUNG: Artikelanzahl pro Seite als Dropdown
    Antwort #9 am: 21. April 2011, 06:46:19
    Ich werde mir das auch mal anschauen. Diese ganze IF Abfragen stören schon sehr.

    Dafür gibt es eine wunderbare Funktion.

    Gruß Gerhard

    Thomas

    • Fördermitglied
    • Beiträge: 1.587
    Re: ANLEITUNG: Artikelanzahl pro Seite als Dropdown
    Antwort #10 am: 21. April 2011, 06:53:26
    Guten morgen,  :coffee:

    dann warte ich mal noch ein wenig mit dem Einbau bis Ihr das vollständig angepasst habt, versteh eh nur die hälfte vom dem was hier postet, aber das Ergebniss find ich für den Kunden schon sehr angenehm. Wäre schön wenn am Ende wieder Beitrag 1 angepasst wird, bzw. das ganze Zusammengefasst wird.

    Grüße

    jannemann

    • modified Team
    • Beiträge: 6.275
    • Geschlecht:
    Re: ANLEITUNG: Artikelanzahl pro Seite als Dropdown
    Antwort #11 am: 21. April 2011, 07:10:56
    Hi,

    hier noch die Übersetzung für die englische Sprache.

    Code: PHP  [Auswählen]
    define('PRLL_STANDARD', 'items per page');
    define('PRLL_5', '5 items per page');
    define('PRLL_10', '10 items per page');
    define('PRLL_20', '20 items per page');
    define('PRLL_40', '40 items per page');
    define('PRLL_100', '100 items per page');
    define('PRLL_500', '500 items per page');
    Scöne Grüße,
    Jan

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.306
    • Geschlecht:
    Re: ANLEITUNG: Artikelanzahl pro Seite als Dropdown
    Antwort #12 am: 21. April 2011, 08:51:09
    also, ich habe mir das nochmals genau angeschaut und zu folgendem Ergebnis gekommen:

    in der /includes/modules/product_listing.php

    reicht das hier:

    Code: PHP  [Auswählen]
    $prll_sort = array(array('id' => '0', 'text' => 'Artikel je Seite'));
    $prll_sort[] = array('id' => '1', 'text' => '1 Artikel je Seite');
    $prll_sort[] = array('id' => '2', 'text' => '2 Artikel je Seite');
    $prll_sort[] = array('id' => '3', 'text' => '3 Artikel je Seite');
    $prll_sort[] = array('id' => '4', 'text' => '4 Artikel je Seite');
    $prll_sort[] = array('id' => '5', 'text' => '5 Artikel je Seite');
    $prll_sort[] = array('id' => '500', 'text' => '500 Artikel je Seite');

    $prll_dropdown = xtc_draw_form('prll_links', xtc_href_link(basename($PHP_SELF), xtc_get_all_get_params()), 'get');
    $prll_dropdown.= xtc_draw_pull_down_menu('prllset', $prll_sort, isset($_SESSION['prllset']) ? $_SESSION['prllset']:'', 'onchange="this.form.submit()" style="width: 200px;"');
    $prll_dropdown.= '</form>';
    $module_smarty->assign('PRLL_LINKS', $prll_dropdown);
     
    zudem muss das hier noch abgesichert werden, also diese Zeile hier einfügen:

    Code: PHP  [Auswählen]
    $listing_split = new splitPageResults($listing_sql, (isset($_GET['page']) ? (int)$_GET['page'] : 1), (isset($_SESSION['prllset']) ? (int)$_SESSION['prllset'] : ''), MAX_DISPLAY_SEARCH_RESULTS, 'p.products_id');
     
    damit ist das Ganze auch noch Session sicher, was vorher auch nicht der Fall war.

    Ich werde die Anleitung in Beitrag 1 überarbeiten.

    Gruss Gerhard

    speedy

    • Viel Schreiber
    • Beiträge: 3.214
    Re: ANLEITUNG: Artikelanzahl pro Seite als Dropdown
    Antwort #13 am: 21. April 2011, 09:34:09
    Funktioniert bestens, vielen Dank.
    Bitte übernehme dann noch die Mehrsprachigkeit aus meinem Post und dem von Jan.

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.306
    • Geschlecht:
    Re: ANLEITUNG: Artikelanzahl pro Seite als Dropdown
    Antwort #14 am: 21. April 2011, 09:42:29
    So Leute, bitte ALLE die den bisherigen Code Schnipsel eingebaut hatten mit dem jetzigen in Beitrag 1 ersetzen.

    Der Code wurde von mir komplett überarbeitet und Session sicher gemacht.

    @speedy
    auch im Trunk funktioniert das bestens, du musst nur den SSEQ Filter erweitern, dass auch die Post Variable prllset akzeptiert wird.

    Gruss Gerhard

    0 Antworten
    2562 Aufrufe
    23. Mai 2011, 11:52:50 von Thomas
    0 Antworten
    4049 Aufrufe
    24. Juli 2017, 08:48:36 von Tomcraft
    38 Antworten
    19990 Aufrufe
    07. März 2021, 15:50:43 von RobtheTop