gelöst Anzeige "Zurück-Link" nur bei interner Seiten-Aufruf ...

Thema wurde von Marias Einkaufsparadies, 7. November 2022 erstellt.

  1. Marias Einkaufsparadies

    Marias Einkaufsparadies Erfahrener Benutzer

    Registriert seit:
    12. Dezember 2021
    Beiträge:
    323
    Danke erhalten:
    126
    Danke vergeben:
    66
    Hallo.

    Ich habe mir für meine Produktseite einen Zurück-Link in die "Breadcrumb-Leiste" eingebunden. Dazu habe ich für die "layout_breadcrumb_content.html" den entsprechenden Block eine Anpassung in GambioCustom angelegt.

    Code:
        {block name="layout_breadcrumb_content_norichsnippets"}
            <div id="breadcrumb_navi">
            {if ""|detect_page == "ProductInfo"}<span class="breadcrumbEntry go_back">< <a href="#" onclick="history.back(); return false">Zurück</a></span><span class="breadcrumbSeparator"> | </span>{/if}
                {foreach from=$breadcrumb_array item=value_array name=crumbs}
                    <span class="breadcrumbEntry">
                            {if $value_array.link}
                                <a href="{$value_array.link}" class="headerNavigation">
                                    <span>{$value_array.title}</span>
                                </a>
                            {else}
                                <span>{$value_array.title}</span>
                            {/if}
                        </span>
                    {if $smarty.foreach.crumbs.last}{else}<span class="breadcrumbSeparator"> | </span>{/if}
                {/foreach}
            </div>
        {/block}
    Ich habe auch schon rausgefunden, wie ist das hingekomme, dass nur der "Zurück-Link" auf der Artikel-Seite angezeigt wird.

    Die mache ich mit:

    Code:
    {if ""|detect_page == "ProductInfo"}
    Jetzt möchte ich aber noch, dass der "Zurück-Link" nur angezeigt wird, wenn ein Besucher über eine interne Seite gekommen ist. Sprich, z.B.: von der Startseite, Suchseite oder Kategorie. Nicht angezeigt werden soll der "Zurück-Link", wenn der Besucher von Extern, z.B. Google, kommt.

    Hat da einer eine Idee, wie ich dies lösen kann?
     
  2. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    18. August 2021
    Beiträge:
    380
    Danke erhalten:
    33
    Danke vergeben:
    156
    #2 Anonymous, 7. November 2022
    Zuletzt bearbeitet: 7. November 2022
    Ich hatte damals auch überlegt mir so was zu machen, war auch dabei, habe das dann aber verworfen, weiß nicht mehr warum.

    War dabei, das so zu lösen:

    {assign "referer" {$smarty.server.HTTP_REFERER}|lower}
    {assign "domain" "/gambio/"|lower}
    {assign "vergleich" strpos($referer, $domain) }
    {if $vergleich != false && is_numeric($vergleich)}
    <style>
    .page-product-info #zurueck_button {
    display: block;
    color: #424242;
    padding-right: 18px;
    }
    </style>
    {/if}

    <div id="zurueck_button">
    <img id="bild_arrow" src="{$theme_path}images/arrow.svg" title="Zur&uuml;ck">
    <a id="zurueck_text" href="javascript:history.back(0)" title="Seite Zur&uuml;ck">Zur&uuml;ck</a>
    </div>

    Der Button wurde über "display: block" gesteuert. Anstelle von {assign "domain" "/gambio/"|lower} müsste in deinem Fall {assign "/marias-einkaufsparadies"/ |lower} stehen.

    Das ganze habe ich erstmal so als Entwurf geschrieben, ist sicherlich nicht so professionell. Wie gesagt, habe mich hinsichtlich Details nicht mehr drum gekümmert. $theme_path ist auch nicht richtig; solltest, wenn Du einen Pfeil zusätzlich nimmst, in das image/ Verzeichnis legen.

    Einiges, gerade die true Abfrage würde ich etwas anders machen, display: block würde ich dann wohl auf display: none setzen, und das Style natürlich auf block anpassen.

    Den Vergleich dann von $vergleich != false auf $vergleich = false ändern.

    Das Ganze hier ist nur als Denkanstoß gedacht, die Umsetzung kann man sicherlich eleganter realisieren.

    @Edit:

    Fällt mir gerade ein: Habe das dann doch noch mit JQuery umgeschrieben, war eleganter.

    /* Steuerung des Zurueckbuttons */
    /* if (document.querySelector(".page-product-info") != null) { */

    var referrer = document.referrer.toLowerCase();
    var teil_domain = String("gambio");
    if (referrer.indexOf(teil_domain) >-1) {
    document.getElementById("zurueck_text").style.display = "block";
    }

    /* } */
    /* ENDE Steuerung des Zurueckbuttons */

    Aber wie gesagt, das war alles nur in der Entwicklung, weiß nicht mehr, was wirklich funktioniert hat - ist also wirklich nur als Denkanstoß gedacht.
     
  3. Marias Einkaufsparadies

    Marias Einkaufsparadies Erfahrener Benutzer

    Registriert seit:
    12. Dezember 2021
    Beiträge:
    323
    Danke erhalten:
    126
    Danke vergeben:
    66
    @Bernd uusk Danke nochmals für deine Hilfe. Leider hat deine "Idee" nicht geklappt, beide nicht, aber diese war ein Denkanstoß. Ich habe es jetzt so gelöst:

    Code:
        {block name="layout_breadcrumb_content_norichsnippets"}
            <div id="breadcrumb_navi">
            {if ""|detect_page == "ProductInfo" && isset($smarty.server.HTTP_REFERER) && strpos($smarty.server.HTTP_REFERER, $smarty.server.HTTP_HOST) != false}<span class="breadcrumbEntry go_back">< <a href="#" onclick="history.back(); return false">Zurück</a></span><span class="breadcrumbSeparator"> | </span>{/if}
                {foreach from=$breadcrumb_array item=value_array name=crumbs}
                    <span class="breadcrumbEntry">
                            {if $value_array.link}
                                <a href="{$value_array.link}" class="headerNavigation">
                                    <span>{$value_array.title}</span>
                                </a>
                            {else}
                                <span>{$value_array.title}</span>
                            {/if}
                        </span>
                    {if $smarty.foreach.crumbs.last}{else}<span class="breadcrumbSeparator"> | </span>{/if}
                {/foreach}
            </div>
        {/block}
    Also genau mit:

    Code:
    ....{if ""|detect_page == "ProductInfo" && isset($smarty.server.HTTP_REFERER) && strpos($smarty.server.HTTP_REFERER, $smarty.server.HTTP_HOST) != false}....
     
  4. Marias Einkaufsparadies

    Marias Einkaufsparadies Erfahrener Benutzer

    Registriert seit:
    12. Dezember 2021
    Beiträge:
    323
    Danke erhalten:
    126
    Danke vergeben:
    66
    #4 Marias Einkaufsparadies, 9. November 2022
    Zuletzt bearbeitet: 9. November 2022
    Und hier nochmal zwei Bilder zur Veranschauung.

    Anzeige des Zurück-Links bei einer internen Verlinkung. z.B. Seitenaufruf von der Startseite aus:

    FireShot Capture 017.jpg

    oder hier ohne bei Verlinkung von einer externen Seite. z.B. Google-Suche:

    FireShot Capture 018.jpg
     
  5. Marias Einkaufsparadies

    Marias Einkaufsparadies Erfahrener Benutzer

    Registriert seit:
    12. Dezember 2021
    Beiträge:
    323
    Danke erhalten:
    126
    Danke vergeben:
    66
    So, habe jetzt auch für die Content-Seiten, die Kontakt-Seite und Callback-Service-Seite ebenfalls ein Customer .html angelegt, damit auch hier die Zurück-Button unten nur dann angezeigt werden, wenn der Verweis von einer internen Seite kommt.

    Einfach in der eigenen /GambioModuls/Eigene_Bereich/Modul/Shop/Themes/All

    für Content-Seite die HTML-Datei "content.html" mit Inhalt:

    Code:
                        {block name="content_buttons_back"}
                            {if isset($smarty.server.HTTP_REFERER) && strpos($smarty.server.HTTP_REFERER, $smarty.server.HTTP_HOST) != false}
                                <a class="btn btn-default btn-block history-back" href="{page_url}#" title="{$button.back}">
                                    {$button.back}
                                </a>
                            {/if}
                        {/block}
    für die Kontakt-Seite die HTML-Datei "contact.html" mit Inhalt:

    Code:
                                    {block name="contact_buttons_back"}
                                        {if isset($smarty.server.HTTP_REFERER) && strpos($smarty.server.HTTP_REFERER, $smarty.server.HTTP_HOST) != false}
                                            <a class="btn btn-default btn-block history-back" href="{page_url}#" title="{$button.back}">
                                                {$button.back}
                                            </a>
                                        {/if}
                                    {/block}
    und für die Callback-Service-Seite die HTML-Datei "callback_service.html" mit Inhalt:

    Code:
                        {block name="callback_service_buttons_back"}
                            {if isset($smarty.server.HTTP_REFERER) && strpos($smarty.server.HTTP_REFERER, $smarty.server.HTTP_HOST) != false}
                                <a class="btn btn-default btn-block history-back" href="{page_url}#" title="{$button.back}">
                                    {$button.back}
                                </a>
                            {/if}
                        {/block}
    
    jeweils anlgen.
     
  6. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    18. August 2021
    Beiträge:
    380
    Danke erhalten:
    33
    Danke vergeben:
    156
    #6 Anonymous, 9. November 2022
    Zuletzt bearbeitet: 9. November 2022
    Hallo Dirk,

    danke für Deine Rückmeldung.

    Ja, das hast Du professionell gemacht.

    Ich hatte damals, wie schon gesagt, auch den Gedanken mit dem Zurück-Button und auch auch nur, wenn man von intern kommt

    Ich wollte diesen aber nur in der Mobile-Ansicht haben, da es schwierig war, in der mobilen Artikelansicht einen Schritt zurück zu gehen. Naja, über den Zurück"Knopf" vom Smartphone wäre es gegangen, aber ein Zurückbutton auf dem Display ist schöner.

    Ich habe dann aber in der mobilen Ansicht die Breadcrumb eingefügt, mit der man dann auch elegant zurück gehen kann - und sieht zudem auch schön aus, wie ich meine.

    Viele Grüße

    Bernd
     
  7. Klaiber Michaela

    Klaiber Michaela Erfahrener Benutzer

    Registriert seit:
    5. Mai 2022
    Beiträge:
    577
    Danke erhalten:
    170
    Danke vergeben:
    87
    darf ich fragen wie du das gemacht hast? Ich vermute aber fast, dass das im Cloudshop nicht geht, oder? :)
     
  8. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    18. August 2021
    Beiträge:
    380
    Danke erhalten:
    33
    Danke vergeben:
    156
    #8 Anonymous, 9. November 2022
    Zuletzt bearbeitet: 9. November 2022
    Ist nur CSS - ich meine, es funktioniert auch im Cloudshop, bin mir aber nicht 100% sicher.

    Hier mein Code in meiner CSS ungefiltert:

    // Breadcrumb nach links eingerueckt Abstand der Breadcrumbzeilen

    #wrapper #breadcrumb_navi {
    padding-left: 0px !important;
    line-height: 21px;
    }

    // Abstand der Breadcrumbzeilen wegen SEO vergroessert

    @media (max-width: 767px) {
    #wrapper #breadcrumb_navi {
    padding-bottom: 4px;
    line-height: 28px;
    }
    }

    // Breadcrumb Doppelpfeile farblich angepasst Schrift in SE Allgemein Farben (eingestellt #999999)

    #breadcrumb_navi > span.breadcrumbSeparator {
    color: #666666;
    }

    // Breadcrumb Mobile sichtbar aber gekuerzt - weiter unten

    @media screen and (max-width: 767px) {
    #breadcrumb_navi {
    display: block;
    }

    // Breadcrumb Mobile letzten Navigationspunkt und letzten (vorletzten) Doppelpfeil unsichtbar gemacht

    .page-product-info #breadcrumb_navi > span.breadcrumbEntry:nth-last-child(-n+2), .page-product-info #breadcrumb_navi > span.breadcrumbSeparator:nth-last-child(-n+2) {
    display: none;
    }
    }

    Wichtig ist auch der Abstand wegen SEO (siehe Kommentar oben), wird sonst von Google angemeckert, wegen zu nah beieinander liegenden Links.

    Den letzten Navigationspunkt habe ich ausgeblendet. Er ist unsinnig, da darunter sowieso der Artikelname erscheint, würde sonst doppelt untereinander stehen.
     
  9. Klaiber Michaela

    Klaiber Michaela Erfahrener Benutzer

    Registriert seit:
    5. Mai 2022
    Beiträge:
    577
    Danke erhalten:
    170
    Danke vergeben:
    87
    Perfekt. Danke dir. :) Das schaue ich mir morgen genauer an. :)
     
  10. Klaiber Michaela

    Klaiber Michaela Erfahrener Benutzer

    Registriert seit:
    5. Mai 2022
    Beiträge:
    577
    Danke erhalten:
    170
    Danke vergeben:
    87
    @Bernd uusk darf ich mir das in deinem Shop anschauen. Wo finde ich deinen Shop?
     
  11. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    18. August 2021
    Beiträge:
    380
    Danke erhalten:
    33
    Danke vergeben:
    156
    Meinen Shop hatte ich unter: "Mit der Bitte um ein Feedback" vorgestellt.
     
  12. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    6. Dezember 2016
    Beiträge:
    292
    Danke erhalten:
    168
    Danke vergeben:
    109
    @Marias Einkaufsparadies - Genial! Habe deinen Code übernommen und funktioniert super. Gerade wenn jemand von Google auf die Seite kommt, wird er nicht wieder durch den Button zurück auf die Suchmaschine geleitet und bleibt im Shop.
    Danke für deine Arbeit.