Marktplatz - Eine große Auswahl an neuen und hilfreichen Modulen sowie modernen Templates für die modified eCommerce Shopsoftware
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: Alle Artikel einer bestimmten Kategorie auf Startseite anzeigen

    UIaLMFdVA

    • Neu im Forum
    • Beiträge: 39
    Hallo liebe Community,
    ich bin auf der Suche nach einer Möglichkeit, alle Produkte einer bestimmten Kategorie auf der Startseite unter der Begrüßung anzeigen zu lassen.
    Hat jemand einen unkomplizierten Ansatz oder ist dies doch etwas aufwändiger?

    Danke im Voraus,
    Philipp

    EDIT: Ich verwende die modified Version 1.06 SP2

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

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.838
    • Geschlecht:
    Einfach im Backend auf TOP (= auf Startseite anzeigen) setzen ?
    (Dabei darauf achten, daß unter
    Backend => Konfiguration => Maximum Werte => "Neue Artikel Anzeigemodul"
    eine genügend hohe Anzahl eingetragen ist.)

    Gruß,
    noRiddle

    peter111

    • Fördermitglied
    • Beiträge: 257
    • Geschlecht:
    Etwas aufwendiger aber sehr komfortabel mit vielen Möglichkeiten ist die ProductList von Gunnart:
    http://www.gunnart.de/tipps-und-tricks/smarty-function-gunnartproductslist-fuer-xtcommerce/

    UIaLMFdVA

    • Neu im Forum
    • Beiträge: 39
    Hallo noRiddle,
    danke für die schnelle Antwort.
    Ich habe gerade gemerkt, dass meine Frage sehr unpräzise ausgefallen ist.

    Ziel ist es unterschiedliche Startseiten zu haben, auf denen jeweils unterschiedliche Produkte angezeigt werden.

    Die Sache ist die, dass man so lange ein User nicht eingeloggt ist, nicht feststellen kann, welcher Kundengruppe er angehört. Mir kam gerade die Idee über "strstr ($smarty.server.PHP_SELF, 'index(xx)')" zu entziffern auf welcher Seite der User ist und so unterschiedliche Produkte auf der Startseite anzuzeigen je nachdem über welchen Link (index.php, indexx.php, indexxx.) man den Shop erreicht.

    Nachfolgend ein Beispiel:
    Erreicht der User den Shop über index.php so sollen Produkte der Kategorie mit ID 1 angezeigt werden.
    Erreicht der User den Shop über indexx.php so sollen Produkte der Kategorie mit ID 5 angezeigt werden.
    Erreicht der User den Shop über indexxx.php so sollen Produkte der Kategorie mit ID 7 angezeigt werden.

    Die Namenswahl der index(xx).php dient erstmal nur der Veranschaulichung.

    Ist es sehr unelegant, wenn ich mir nun alle Produkte aus den Kategorien mit den IDs 1,5,7 als TOP markiere und die root/templates/MeinTemplate/module/new_products_default.html vornehme.
    Dort direkt auf "strstr ($smarty.server.PHP_SELF, 'index(xx)')" prüfe und anschließend Produkte anzeige, die zu der Startseite und der dazugehörigen Kategorie gehören?

    Dann müsste ich nur noch irgendwo eine Variable für die Kategorie-ID einbauen, wahrscheinlich in die root/classes/product.php (ein JOIN mit products_category?) und in root/module/product_info.php, oder?

    Gibt es einen besseren Weg?

    Gruß
    Philipp

    EDIT: Danke auch an Peter, ich werd mir mal den Vorschlag anschauen. Das kommt dem schon sehr nahe

    EDIT2: Ich sehe grad, das diese Erweiterung (http://www.gunnart.de/tipps-und-tricks/smarty-function-gunnartproductslist-fuer-xtcommerce/) für den alten Shop erstellt wurde (Datum von 2009)... Aber ich bastel mal ein bisschen rum. Falls ich es zum laufen bekomme, sag ich nochmal Bescheid.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.838
    • Geschlecht:
    Mmh, ich weiß nicht wie du es umsetzen möchtest verschiedene Startseiten im Shop zu haben.
    Vielleicht sagst du mal genauer was du machen möchtest und was der Hintergrund ist. Evtl. gibt es dann eine einfachere/bessere Lösung als die bislang von dir durchdachten.

    Zur Info:
    Die Datei in der die Query für Artikel auf der Startseite gemacht wird ist die /includes/modules/new_products.php und dort die erste $new_products_query-Query (WHERE ... AND p.products_startpage = '1').
    Mit einem JOIN auf die Tabelle products_to_categories könntest du dort jedenfalls Produkte einer bestimmten Kategorie rausfiltern, evtl. eben mit diversen Queries, je nachdem was $PHP_SELF gerade ausgibt.

    By the way:
    Benutze nicht $smarty.server.PHP_SELF, das ist unsicher, benutze statt dessen $smarty.const.PHP_SELF, die ist in der /includes/application_top.php gesetzt und über die Funktion set_php_self() sanitized.
    Quatsch, ich Vollheini, $_PHP_SELF ist ja gar keine Konstante...  :doh:

    Gruß,
    noRiddle

    UIaLMFdVA

    • Neu im Forum
    • Beiträge: 39
    Ok, ich hab es jetzt erstmal geschafft, jedoch mit einer kleinen Einschränkung. Da der Shop noch nicht online ist, kann ich noch keinen Link veröffentlichen.

    Ich verweise von einer externen Seite auf entweder

    • meinShop.de/index.php
    • meinShop.de/index_bereich1.php
    • meinShop.de/index_bereich2.php

    diese verweisen jeweils auf die Index-Datei im templateOrdner

    • index.html
    • index_bereich1.html
    • index_bereich2.html

    In der root/templates/meinTemplate/module/main_content.html habe ich folgendes hinzugefügt:

    Code: PHP  [Auswählen]
    {if strstr ($smarty.server.PHP_SELF, 'index_bereich1') || strstr ($smarty.server.PHP_SELF, 'index_bereich2')}

            {if strstr ($smarty.server.PHP_SELF, 'index_bereich1')}
                    {gunnartProductsList to=Liste cat=35}
                    <h1>Artikel aus unserem index_bereich1</h1>            
            {else}
                    {gunnartProductsList to=Liste cat=42}  
                    <h1>Artikel aus unserem index_bereich2</h1>            
            {/if}
           
            <table class="productPreview" width="100%" border="0" cellspacing="0" cellpadding="0">
                    {foreach item=module_data from=$Liste.PRODUCTS}
                    <tr>
                    <td align="center" class="productPreviewImage">{if $module_data.PRODUCTS_IMAGE!=''}<a href="{$module_data.PRODUCTS_LINK}"><img src="{$module_data.PRODUCTS_IMAGE}" alt="{$module_data.PRODUCTS_NAME}" class="productImageBorder" /></a>{else}&nbsp;{/if}</td>
                    <td class="productPreviewContent">
                            <h2><a href="{$module_data.PRODUCTS_LINK}">{$module_data.PRODUCTS_NAME}</a></h2>
                            <p>{$module_data.PRODUCTS_SHORT_DESCRIPTION}</p>
                            <p class="price">{$module_data.PRODUCTS_PRICE}</p><p class="taxandshippinginfo">( {$module_data.PRODUCTS_TAX_INFO}{$module_data.PRODUCTS_SHIPPING_LINK} )</p>
                            {if $module_data.PRODUCTS_VPE}<p class="vpe">{$module_data.PRODUCTS_VPE}</p>{/if}
                            {if $module_data.PRODUCTS_SHIPPING_NAME}<p class="shippingtime">{#text_shippingtime#}{if $module_data.PRODUCTS_SHIPPING_IMAGE}<img src="{$module_data.PRODUCTS_SHIPPING_IMAGE}" alt="{$module_data.PRODUCTS_SHIPPING_NAME}" />{/if}
                                    {$module_data.PRODUCTS_SHIPPING_NAME_LINK}</p>
                            {/if}
                           
                            <p>{$module_data.PRODUCTS_BUTTON_BUY_NOW}&nbsp;<a href="{$module_data.PRODUCTS_LINK}"><img src="{$tpl_path}buttons/{$language}/button_product_more.gif" alt="Details" border="0" /></a></p>
                    </td>
                    </tr>
                    <tr>
                    <td align="center" colspan="2">
                    <div class="hrproductpreview"></div>
                    </td>
                    </tr>
                    {/foreach}
            </table>       
    {/if}

    Dabei bezieht sich "{gunnartProductsList to=Liste cat=35}" auf die Datei von http://www.gunnart.de/tipps-und-tricks/smarty-function-gunnartproductslist-fuer-xtcommerce/

    Nachteil ist, dass wenn man anschließend auf einen Link des Shops klickt und wieder zurück zur Startseite (über den Button) möchte, die normale index.php aufgerufen wird.

    Mir geht es aber primär darum, dass die Kunden welche den betreffenden Link (index.php, index_bereich1, index_bereich2) klicken und zum ersten mal im Shop landen, auf der Anfangsseite Artikel aus dem jeweiligen Bereich/Kategorie vorgeschlagen bekommen, auf den Sie geklickt habe.

    Natürlich könnte man auch direkt in die Kategorie verlinken, aber dann hat man den Willkommenstext nicht obendrüber.

    Falls jemand eine bessere Lösung hat, würde ich meinen Vorschlag gern dahingehend optimieren, jedoch ist es für mich auch erstmal auf die oben genannte Art und Weise ausreichend.

    Danke fürs Mitdenken und eure Mitarbeit :)

    Fakrae

    • Viel Schreiber
    • Beiträge: 997
    Ist das nicht ein klassicher Fall für sogenannte "Landing-Pages"? Dafür gibt es sowohl kommerzielle als auch freie Module, die eine relativ einfache Konfiguration ermöglichen müssten.

    hendrik

    • Experte
    • Beiträge: 2.038
    Hier ein anderer Ansatz.

    Da gibts schon einen Programmteil der etwas ganz ähnliches macht. Er zeigt auf der Hauptseite die Artikel mit dem Startpage-Marker. Wenn man dessen SQL-Abfrage ändert zeigt er eine Artikelauswahl nach anderen Kriterien.

    Relevante Dateien:
    includes/modules/new_products.php
    templates/xtc5/module/new_products_default.html

    Die SQL-Abfrage ist in new_products.php. Zeile 40 ungefähr.

    Code: PHP  [Auswählen]
        $new_products_query = "SELECT *
                                 FROM "
    .TABLE_PRODUCTS." p,
                                      "
    .TABLE_PRODUCTS_DESCRIPTION." pd
                                WHERE p.products_id = pd.products_id
                                  AND p.products_startpage = '1'
                                      "
    .$group_check."
                                      "
    .$fsk_lock."
                                  AND p.products_status = '1'
                                  AND pd.language_id = '"
    .(int) $_SESSION['languages_id']."'
                             ORDER BY p.products_startpage_sort ASC
                                LIMIT "
    .MAX_DISPLAY_NEW_PRODUCTS;
    }
     

    Hier werden Artikeldaten heraus gesucht die den Startpage-Marker tragen. Das kann man umformulieren auf eine Suche nach Artikeln einer fixen Kategorie.

    Code: PHP  [Auswählen]
    $new_products_query = "SELECT *
                               FROM "
    .TABLE_PRODUCTS." p,
                                    "
    .TABLE_PRODUCTS_DESCRIPTION." pd,
                                    "
    .TABLE_PRODUCTS_TO_CATEGORIES." p2c
                              WHERE
                                xxxxx ..$meine_startseite_kategorie_id.....
    }

    In $meine_startseite_kategorie_id definierst du vorher die categories_id.

    Anmerkung zum Verständnis des Codes. Das Modul ist ein bischen verwirrend weil es in 2 Modi arbeitet. Für Startseite mit Startseite-Artikeln und für Unterkategorien mit neuen Artikeln. Nur die Codeteile bei UNgültigkeit der Variable $new_products_category_id (!isset OR ==0) ausgeführt werden sind relevant für die Startseite.

    Jetzt zum index indexx indexxx.php-Problem. Die erwähnte Variable $meine_startseite_kategorie_id definierst du in deiner jeweiligen index.php (indexx, indexxx).
    Jetzt bekommst du jedesmal Artikel aus einer anderen Kategorie gelistet.

    Habs jetzt nicht programmiert und ausprobiert. Bin mir aber sicher, daß das im Konzept funktioniert.

    Gruß
    Hen

    Neo-drexx

    • Frisch an Board
    • Beiträge: 93
    • Geschlecht:
    Zitat
    Natürlich könnte man auch direkt in die Kategorie verlinken, aber dann hat man den Willkommenstext nicht obendrüber.

    Dann verlinke doch auf die Kategorie direkt und prüfe beim product listing darauf ob der Kunde grade frisch online ist im shop. Wenn ja hau den startseitentext raus :)

    Und das beste an dieser Lösung ist, all das findest du schon irgendwo im code und kann zusammenkopiert werden :D

    UIaLMFdVA

    • Neu im Forum
    • Beiträge: 39
    Ja, landingpages. Ein Begriff, der mir noch unbekannt war. Der Vorteil ist wohl, dass man somit noch eine oder mehr Seiten für ne Suchmaschine zur Verfügung stellt und sich eventuell das Rating verbessert? Aber so wie ich es verstanden habe, müssen diese teilweise, je nach Programm neu generiert werden, wenn man Änderungen an den Artikeln vornimmt...

    Aber die Ansätze von hendrik und Neo-drexx sind auch interessant. Danke dafür. Ich werde mal beide Varianten ausprobieren.

    @hendrik Momentan scheue ich mich noch etwas vor dem definieren neuer Variablen, weil ich mir noch recht unsicher bin wo ich dies mache, damit diese möglichst überall dort zur Verfügung steht wo ich sie benötige.
    Ein kleiner Nachteil, welcher ggf. auch ein Vorteil sein kann ist, dass die Artikel mit "TOP" markiert werden müssen. So darf man bei neuen Artikeln den Marker nicht vergessen und ihn bei allen bisherigen Artikeln (eventuell über die DB) setzen. Vorteil: Man kann die Artikel in der Kategorie nochmals bezüglich des Anzeigens differenzieren.

    Vielen Dank an alle.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.838
    • Geschlecht:
    @hendrik
    Genau deinen Ansatz hatte ich doch bereits benannt.
    Über strpos($PHP_SELF, 'WAS_WEISS_ICH') kann man außerdem die Queries so strukturieren, daß man leicht nach der von dir so genannten $meine_startseite_kategorie_id filtern kann.
    Oder man setzt einen GET-Parameter für die betreffende Kategorie für die diversen index-Seiten, liest ihn aus in der Query (natürlich gegen SQL-Injection geschützt) und macht ihn unsichtbar nämlich mittels htaccess und shopstat_functions.inc.php zu einer SEO-URL.

    Gruß,
    noRiddle

    hendrik

    • Experte
    • Beiträge: 2.038
    @NoRiddle
    Ist richtig. Urheberschaft ist deine. ;-) Konnte es nicht lassen meinen Senf zuzugeben. Das mit "anderer Ansatz" bezog sich auf die Gunnart-Sache.

    Gruß
    Hen
    Templateshop - Eine große Auswahl an neuen und modernen Templates für die modified eCommerce Shopsoftware
    0 Antworten
    1970 Aufrufe
    18. Februar 2013, 13:28:32 von heini88
    1 Antworten
    2680 Aufrufe
    07. September 2011, 01:08:07 von Tomcraft
    17 Antworten
    13166 Aufrufe
    27. Oktober 2012, 16:37:31 von keineLustmehr
    4 Antworten
    2034 Aufrufe
    22. Mai 2017, 17:20:22 von awids