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: Wie kann Kunde zu alternativer product_listing Darstellung wechseln?

    nickibaer

    • Neu im Forum
    • Beiträge: 27
    Hallo,

    ich habe folgendes Problem:

    Um meinen Kunden eine Wahl zwischen einer Galerie und einer Listenansicht zu ermöglichen möchte ich gerne zwei verschiedene product_listing Templates bzw. Dateien anlegen. So weit so gut ...

    Nur wie ermögliche ich es dem Kunden zwischen diesen beiden hin und her zu schalten?

    Vielen Dank für den rettenden Tip!

    Grüsse,

    Nicole



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

    hendrik

    • Experte
    • Beiträge: 2.038
    Es gibt ein Modul welches eine ganz ähnliche Funktion hinzufügt: Länge der Produktliste einstellbar

    Dort kann der Benutzer die Listenlänge selbst wählen. Es werden eine Reihe Funktionslinks hinzugefügt welche die Information (Listenlänge) in die Sessiondaten sichert( -> reftext, product_listing.php, 2. Abschnitt). Beim Aufruf einer Artikelliste wird anstelle eines konstanten Werts (Listenlänge) dieser aus den Sessiondaten entnommen (reftext, product_listing.php, 1. Abschnitt).

    Das kann man leicht umschreiben. Anstelle der Information "Listenlänge" wird der Name des Listentemplates in den Sessiondaten gespeichert. In product_listing.php müsste der Abschnitt "// get default template" angepasst werden. Wenn Name Listingtemplate in Sessiondaten vorliegt dann nehme dieses Template, andernfalls unverändert.

    Gruß
    Hen

    Elexyr

    • Neu im Forum
    • Beiträge: 26
    ... dank Hendriks Erklärung hab ich mich mal dran versucht. ;)

    In der /includes/application_top.php nach:

    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));
        }
    }
     
    folgendes einfügen:

    Code: PHP  [Auswählen]
    // --- Gallery beginn --------------------------------------

    if (isset($_GET['gallset'])) {
        $_SESSION['gallset'] = $_GET['gallset'];
    }

    if ($_SESSION['gallset'] == 0) {
        $_SESSION['gallset'] = 'product_listing_v1.html';
    }
    // --- Gallery end --------------------------------------
    in der /includes/modules/product_listing.php folgendes suchen:

    Code: PHP  [Auswählen]
    //   get default template
    und davor folgendes einfügen:

    Code: PHP  [Auswählen]
    // --- Gallery beginn --------------------------------------

      $gallery = 'product_listing_v1.html';
      $list = 'product_listing_v2.html';

      $gall_llval_arr = array($gallery, $list);
      $gall_links = array();

      $selffile = basename($PHP_SELF);
      $parameter = xtc_get_all_get_params(array('gallset'));

    foreach ($gall_llval_arr as $gll_val) {
        $gall_links[] = array('href' => xtc_href_link($selffile, $parameter . "gallset=$gll_val"), 'text' => $gll_val);
    }

      $module_smarty->assign('GALL_LINKS', $gall_links);
    // --- Gallery end --------------------------------------
    danach in der Abfrage von //get default template:

    Code: PHP  [Auswählen]
    $category['listing_template'] = $files[0];
    ersetzen gegen:

    Code: PHP  [Auswählen]
              if(isset($_GET["gallset"])) {
                    $_SESSION["gallset"] = $_GET["gallset"];
              }
              if(isset($_SESSION["gallset"]) && file_exists(DIR_FS_CATALOG."templates/" . CURRENT_TEMPLATE . "/module/product_listing/".$_SESSION["gallset"])) {
                    $category['listing_template'] = $_SESSION["gallset"];
              } else {
                    $category['listing_template'] = $files[0];
              }
    Im template Verzeichnis muss man nun zwei verschiedene Vorlagen erstellen - in dem Beispiel oben wären es product_listing_v1.html und product_listing_v2.html.

    In die beiden listings muss jeweils folgender Code zur Auswahl der Ansicht:

    Code: PHP  [Auswählen]
    {* --- galistlen beginn ---------------------------- *}
    <br />
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td>
          {#gall_pretext#}
         {foreach name=aussen item=gall_data from=$GALL_LINKS}
            <a href="{$gall_data.href}">[{$gall_data.text}]</a>
          {/foreach}
        </td>
      </tr>
    </table>
    {* --- galistlen end ---------------------------- *}
    Innerhalb einer Kategorie funktioniert das schonmal - auch mit weiterblättern und Filterfunktionen. Sobald eine neue Kategorie gewählt wird spring das listing auf den default wert zurück - ich weiß leider noch nicht genau wie ich das verhindere. Im Moment werden zur Auswahl der Ansichten auch noch die Dateinamen angezeigt, das kann man aber auch noch ändern gegen ein Bild oder einen Text.

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.289
    • Geschlecht:
    Ach herje... wieso hatte ich denn dieses Thema hier übersehen?!

    Da hast du dir die ganze Arbeit doch umsonst gemacht, wir haben dafür doch schon eine fertige Lösung: MODUL: Umschalten zwischen Galerie- und Listenansicht in product_listing

    Das ist doch sicherlich eleganter als über getrennte Template-Dateien. ;-)

    Grüße

    Torsten

    phodana

    • Frisch an Board
    • Gravatar
    • Beiträge: 76
    • Geschlecht:
    Ich muss gestehen, dass ich die Lösung von Elexyr eleganter finde. Mann kein einfach über die einzelnen Templates das Design bestimmen. Mit der jQuery Lösung ist das nicht mal eben gemacht, da viel am DOM manipuliert wird.

    @Elexyr: Hast du da 'ne finale Version fertig. Ein Kunde von mir möchte sowas jetzt auch in seinem Shop haben. Anderen Falls muss ich mir das mal genauer anschauen. :)

    [EDIT Tomcraft 06.07.2011: Full-Quote entfernt, siehe: FAQ: Full-Quotes und Groß-/Kleinschreibung - mit anderen Worten Netiquette!]

    nickibaer

    • Neu im Forum
    • Beiträge: 27
    Hallo Elexyr,

    ich habe Deine Antwort leider erst jetzt gesehen.

    Habe den Code eingebaut und funktioniert super! Vielen Dank! genau das was ich gesucht habe.

    Eine Frage hätte ich bitte noch: Kann man anstatt der Text Links auch unterschiedliche Icons anzeigen lassen? Ich hätte da zwei Icons ("list.png" und "gallery.png") die ich gerne zum wechseln der Ansicht verwenden würde.

    Grüsse,

    Nicole

    nickibaer

    • Neu im Forum
    • Beiträge: 27
    Leider habe ich das Problem immer noch und wollte fragen, ob vielleicht bitte jemand eine Lösung hat? Danke und Grüsse, Nicole
    2 Antworten
    2286 Aufrufe
    21. November 2013, 19:08:38 von Hartmut F.
    4 Antworten
    3124 Aufrufe
    11. Dezember 2010, 16:45:18 von knecht2020
    1 Antworten
    1593 Aufrufe
    16. Dezember 2012, 22:03:02 von Haustier-Laden