Anker beim Blättern in der Produktliste

Thema wurde von tgmartens, 4. März 2016 erstellt.

  1. tgmartens

    tgmartens Aktives Mitglied

    Registriert seit:
    31. August 2014
    Beiträge:
    35
    Danke erhalten:
    2
    Danke vergeben:
    6
    Hallo,

    wir haben für die Subkategorien Kategoriebilder angelegt die etwas größer sind. Klickt ein Kunde auf die Hauptkategorie werden ihm alle Produkte auch aus den Subkategorien angezeigt und er muss doch schon ein wenig nach unten scrollen um die ersten Artikel zu sehen. Wenn er jetzt in der Hauptkategorie bleibt und auf die nächste Seite blättert, muss er erstmal wieder nach unten scrollen.

    Gibt es eine Möglichkeit einen Anker zu setzen das er nach dem Blättern wieder auf Höhe der Blätterfunktion ist?

    Wäre schön wenn da einer eine Idee hat. Ich finde auch die Datei nicht in der die Blätterfunktion enthalten ist.

    Grüße Patrick
     
  2. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    Mach doch die Bilder (Anzeige) der Sub-Kategorien kleiner.
     
  3. tgmartens

    tgmartens Aktives Mitglied

    Registriert seit:
    31. August 2014
    Beiträge:
    35
    Danke erhalten:
    2
    Danke vergeben:
    6
    Moin Barbara,

    die Bilder sollen so bleiben
     
  4. tgmartens

    tgmartens Aktives Mitglied

    Registriert seit:
    31. August 2014
    Beiträge:
    35
    Danke erhalten:
    2
    Danke vergeben:
    6
    Kann mir keiner helfen? Ich weiß grad leider nicht wie ich das machen könnte... :(
     
  5. Torben Wark

    Torben Wark Gambio GmbH

    Registriert seit:
    15. Juli 2014
    Beiträge:
    2.581
    Danke erhalten:
    1.178
    Danke vergeben:
    399
    Moin Patrick,

    das ganze erfordert ein bisschen Codegefrickel:

    Zuerst kopierst du dir die templates/Honeygrid/snippets/product_listing/product_listing_filter.html und nennst die Kopie product_listing_filter-USERMOD.html.
    In dieser Datei suchst du dann nach folgendem Code:

    HTML:
    <div class="productlisting-filter-container" data-gambio-widget="product_listing_filter" data-product_listing_filter-target=".productlist-viewmode">
    und machst da folgendes draus:

    HTML:
    <div {if $formname === "panel"}id="pagination"{/if} class="productlisting-filter-container" data-gambio-widget="product_listing_filter" data-product_listing_filter-target=".productlist-viewmode">
    Die auf diesem Weg hinzugefügte ID brauchen wir als Anker für später.

    Anschließend brauchst du einen Overload der includes/classes/split_page_results.php. Dafür legst du im Ordner user_classes/overloads einen Ordner splitPageResults an. WICHTIG: Der Ordner muss genau so heißen, damit der Autoloader des Shops den Overload zuordnen kann.
    In diesem Ordner legst du eine PHP-Datei mit beliebigen Namen an, in meinem Beispiel ist es die AnchorPagination.inc.php.

    In dieser Datei fügst du dann folgendes ein:
    PHP:
    <?php

    class AnchorPagination extends AnchorPagination_parent
    {
        
    // display split-page-number-links
        
    function display_links($max_page_links$parameters '') {
           
            
    parent::display_links($max_page_links$parameters '');
           
            
    // previous button - not displayed on first page
            
    if ($this->current_page_number 1$display_links_string .= '<a href="' xtc_href_link($t_href_link_base$parameters 'page=' . ($this->current_page_number 1), $request_type) . '#pagination" class="pageResults" title=" ' PREVNEXT_TITLE_PREVIOUS_PAGE ' ">' PREVNEXT_BUTTON_PREV '</a>&nbsp;&nbsp;';
           
            
    $t_page_numbers_array $this->get_page_numbers_array($this->current_page_number$max_page_links$this->number_of_pages);
           
            for(
    $i 0$i count($t_page_numbers_array); $i++)
            {
                if((int)
    $t_page_numbers_array[$i]['PAGE'] == $this->current_page_number)
                {
                    
    $display_links_string .= '&nbsp;<strong>' $t_page_numbers_array[$i]['TEXT'] . '</strong>&nbsp;';
                }
                elseif(
    $t_page_numbers_array[$i]['TEXT'] == '...')
                {
                    if(
    $i == 1)
                    {
                        
    $display_links_string .= '<a href="' xtc_href_link($t_href_link_base$parameters 'page=' $t_page_numbers_array[$i]['PAGE'], $request_type) . '#pagination" class="pageResults" title=" ' sprintf(PREVNEXT_TITLE_PREV_SET_OF_NO_PAGE$max_page_links) . ' ">...</a>';
                    }
                    else
                    {
                        
    $display_links_string .= '<a href="' xtc_href_link($t_href_link_base$parameters 'page=' $t_page_numbers_array[$i]['PAGE'], $request_type) . '#pagination" class="pageResults" title=" ' sprintf(PREVNEXT_TITLE_NEXT_SET_OF_NO_PAGE$max_page_links) . ' ">...</a>&nbsp;';
                    }
                }
                else
                {
                    
    $display_links_string .= '&nbsp;<a href="' xtc_href_link($t_href_link_base$parameters 'page=' $t_page_numbers_array[$i]['PAGE'], $request_type) . '#pagination" class="pageResults" title=" ' sprintf(PREVNEXT_TITLE_PAGE_NO$t_page_numbers_array[$i]['PAGE']) . ' ">' $t_page_numbers_array[$i]['TEXT'] . '</a>&nbsp;';
                }
            }
           
            
    // next button
            
    if (($this->current_page_number $this->number_of_pages) && ($this->number_of_pages != 1)) $display_links_string .= '&nbsp;<a href="' xtc_href_link($t_href_link_base$parameters 'page=' . ($this->current_page_number 1), $request_type) . '#pagination" class="pageResults" title=" ' PREVNEXT_TITLE_NEXT_PAGE ' ">' PREVNEXT_BUTTON_NEXT '</a>&nbsp;';
           
            return 
    $display_links_string;
        }
    }
    Wichtig ist, dass die Klasse genau so heißen muss, wie die Datei. Diese Änderung sollte dafür sorgen, dass die Links der Pagination um den String "#pagination" erweitert werden, wodurch die Links mit einem Anker auf die Pagination der Seite aufgerufen werden.

    Ein Problem was sich aber nur bei der Darstellung mit dem fixierten Kopfbereich des Templates ergibt ist, dass die Pagination durch den fixierten Header überdeckt wird. Wenn der Header nicht fixiert ist, sollte es keine Probleme geben.

    Ich hoffe das hilft dir weiter.
     
  6. tgmartens

    tgmartens Aktives Mitglied

    Registriert seit:
    31. August 2014
    Beiträge:
    35
    Danke erhalten:
    2
    Danke vergeben:
    6
    Moin Torben,

    super Danke :)

    Die Änderungen habe ich gemacht, wenn ich jetzt auf eine Kategorie mit mehreren Artikeln klicke erscheint eine Fehlermeldung

    Error!

    Unable to determine connection method on a link!

    Known methods: NONSSL SSL

     
  7. Torben Wark

    Torben Wark Gambio GmbH

    Registriert seit:
    15. Juli 2014
    Beiträge:
    2.581
    Danke erhalten:
    1.178
    Danke vergeben:
    399
    Hast du den Cache geleert, nachdem du die Änderungen gemacht hast? Notfalls einmal den cache und templates_c ordner leeren bis auf die .htaccess und index.html
     
  8. Anonymous

    Anonymous Erfahrener Benutzer
    Mitarbeiter

    Registriert seit:
    22. Juni 2011
    Beiträge:
    4.760
    Danke erhalten:
    1.748
    Danke vergeben:
    137
    Vielleicht seh ich es nur gerade nicht: Wo wird $request_type definiert?
     
  9. tgmartens

    tgmartens Aktives Mitglied

    Registriert seit:
    31. August 2014
    Beiträge:
    35
    Danke erhalten:
    2
    Danke vergeben:
    6
    @Torben (Gambio) => Die beiden Ordner habe ich geleert.. Der Fehler bleibt leider
     
  10. Torben Wark

    Torben Wark Gambio GmbH

    Registriert seit:
    15. Juli 2014
    Beiträge:
    2.581
    Danke erhalten:
    1.178
    Danke vergeben:
    399
    Scheinbar funktioniert das bei dir mit dem parent::display_links($max_page_links, $parameters = ''); nicht richtig, was es bei meinen internen Tests getan hat. Ich war gerade mal eben auf deinem Server und habe die Datei angepasst indem ich den vorderen Teil der überladenen Funktion ergänzt habe. Die Datei sieht dann wie folgt aus:
    PHP:
    <?php

    class AnchorPagination extends AnchorPagination_parent
    {
        
    // display split-page-number-links
        
    function display_links($max_page_links$parameters '') {
          
            global 
    $PHP_SELF$request_type;

            
    $coo_seo_boost MainFactory::create_object('GMSEOBoost');

            
    $t_href_link_base '';

            if(
    $coo_seo_boost->boost_categories == true && strpos_wrapper(gm_get_env_info('SCRIPT_NAME'), 'index.php') !== false) {
                
    # use boost url for splitting urls
                
    $t_href_link_base $coo_seo_boost->get_current_boost_url();
            }
            else if (
    strpos($PHP_SELF'shop.php') > -1) {
                
    $t_href_link_base 'index.php'// Use the default "index.php" file for the links instead of "shop.php".
                
    $parameters preg_replace('/do=.*?&/'''$parameters1); // Remove the "do" GET parameter because it is not needed.
            
    }
            else {
                
    # use default url for splitting urls
                
    $t_href_link_base basename($PHP_SELF);
            }


            
    $display_links_string '';

            
    $class 'class="pageResults"';

            if (
    xtc_not_null($parameters) && (substr_wrapper($parameters, -1) != '&')) $parameters .= '&';
          
            
    // previous button - not displayed on first page
            
    if ($this->current_page_number 1$display_links_string .= '<a href="' xtc_href_link($t_href_link_base$parameters 'page=' . ($this->current_page_number 1), $request_type) . '#pagination" class="pageResults" title=" ' PREVNEXT_TITLE_PREVIOUS_PAGE ' ">' PREVNEXT_BUTTON_PREV '</a>&nbsp;&nbsp;';
          
            
    $t_page_numbers_array $this->get_page_numbers_array($this->current_page_number$max_page_links$this->number_of_pages);
          
            for(
    $i 0$i count($t_page_numbers_array); $i++)
            {
                if((int)
    $t_page_numbers_array[$i]['PAGE'] == $this->current_page_number)
                {
                    
    $display_links_string .= '&nbsp;<strong>' $t_page_numbers_array[$i]['TEXT'] . '</strong>&nbsp;';
                }
                elseif(
    $t_page_numbers_array[$i]['TEXT'] == '...')
                {
                    if(
    $i == 1)
                    {
                        
    $display_links_string .= '<a href="' xtc_href_link($t_href_link_base$parameters 'page=' $t_page_numbers_array[$i]['PAGE'], $request_type) . '#pagination" class="pageResults" title=" ' sprintf(PREVNEXT_TITLE_PREV_SET_OF_NO_PAGE$max_page_links) . ' ">...</a>';
                    }
                    else
                    {
                        
    $display_links_string .= '<a href="' xtc_href_link($t_href_link_base$parameters 'page=' $t_page_numbers_array[$i]['PAGE'], $request_type) . '#pagination" class="pageResults" title=" ' sprintf(PREVNEXT_TITLE_NEXT_SET_OF_NO_PAGE$max_page_links) . ' ">...</a>&nbsp;';
                    }
                }
                else
                {
                    
    $display_links_string .= '&nbsp;<a href="' xtc_href_link($t_href_link_base$parameters 'page=' $t_page_numbers_array[$i]['PAGE'], $request_type) . '#pagination" class="pageResults" title=" ' sprintf(PREVNEXT_TITLE_PAGE_NO$t_page_numbers_array[$i]['PAGE']) . ' ">' $t_page_numbers_array[$i]['TEXT'] . '</a>&nbsp;';
                }
            }
          
            
    // next button
            
    if (($this->current_page_number $this->number_of_pages) && ($this->number_of_pages != 1)) $display_links_string .= '&nbsp;<a href="' xtc_href_link($t_href_link_base$parameters 'page=' . ($this->current_page_number 1), $request_type) . '#pagination" class="pageResults" title=" ' PREVNEXT_TITLE_NEXT_PAGE ' ">' PREVNEXT_BUTTON_NEXT '</a>&nbsp;';
          
            return 
    $display_links_string;
        }
    }
    Das hat gerade funktioniert, ohne dass der Fehler auftritt.
     
  11. tgmartens

    tgmartens Aktives Mitglied

    Registriert seit:
    31. August 2014
    Beiträge:
    35
    Danke erhalten:
    2
    Danke vergeben:
    6
    Sauber... läuft...vielen Dank :)
     
  12. Anonymous

    Anonymous Mitglied

    Registriert seit:
    29. März 2016
    Beiträge:
    10
    Danke erhalten:
    0
    Danke vergeben:
    4
     
  13. Anonymous

    Anonymous Mitglied

    Registriert seit:
    29. März 2016
    Beiträge:
    10
    Danke erhalten:
    0
    Danke vergeben:
    4
    Sorry, falsch geklickt.

    Meine Unklarheit zum Thema "Anker" ist eine andere.

    Möchte von Seite X auf einen Text auf einer anderen Seite des Shops Y) verlinken. Bekomme das allerdings nicht hin. Also genau genommen von einer kleinen Grafik (X) auf einen Text auf der Seite Y verlinken.

    Was muß ich da machen? Es gibt doch sicher einen einfachen script mit entsprechenden Befehlen, oder muß man da an Dateien des Shops etwas ändern.

    Danke vorab!

    Gruß
    Klaus aus Hamburg
     
  14. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    16. Januar 2016
    Beiträge:
    656
    Danke erhalten:
    115
    Danke vergeben:
    20

    Die Grafik oder was auch immer auf der Seite (X) als Link hinterlegen und auf die Seite (Y#id) verweisen, also z.B.:
    "<a href="seite-y#mein-text" target="_self">"

    Auf der Seite (Y) hinterlegst du nun einen Text z.B. in der Form:


    Das Ganze kannst du auch über den CKEditor im Quellcode Modus realisieren.
     
  15. Anonymous

    Anonymous Mitglied

    Registriert seit:
    29. März 2016
    Beiträge:
    10
    Danke erhalten:
    0
    Danke vergeben:
    4
    Hallo Monevo,

    erstmal danke für die Erklärung. Ich habe folgende Idee gehabt. Habe eine Seite erstellt im Shop mit Wetterdaten eines jeden Bundeslandes und das Bundesland über die Wetteransicht /frame) geschrieben. Zu jedem Bundesland, also Hamburg z.B., habe ich einen Anker gesetzt und diesen bezeichnet. Bei Hamburg "HHwetter".

    Wenn ich mir deine Erklärung so ansehe, benötige ich die gesetzten Anker nicht, oder?

    Wenn du mal schauen magst. http://www.solarreiniger-deutschland.de/shop_content.php?coID=82 (Zielseite)

    Verlinkung z.B. von dieser Seite mit dem kleinen Wetter-Button. (Ausgangsseite)
    http://www.solarreiniger-deutschland.de/index.php?cat=c8_Hamburg-Solarreiniger-in-Hamburg.html

    Habe im Quellcodemodi von CK-Editor schon so einiges versucht, aber es hat bislang nicht gepasst. Kam stehts nur die
    ganze Seite oder eine Fehlermeldung.

    Vielen Dank, wenn du Dir nochmals die Zeit nehmen magst.

    Grüße aus Hamburg
    Klaus
     
  16. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    16. Januar 2016
    Beiträge:
    656
    Danke erhalten:
    115
    Danke vergeben:
    20

    Du musst zu dem Link von deiner Ausgangsseite den Anker (#) übergeben.
    Also zum Beispiel:
    HTML:
    <a href="http://www.solarreiniger-deutschland.de/shop_content.php?coID=82#HHwetter"><img alt="" src="images/wetter.JPG" style="width: 49px; height: 24px;"></a>

    Soweit ich es sehe sind bei deiner Zielseite bereits "IDs" vergeben mit den gleichen Anker-Bezeichnungen.

    Wie das ganze dann am Ende aussehen wird, kannst du selber prüfen indem du auf deiner Zielseite den Anker (#) am Ende der URL setzt, also z.B. (Link nur für registrierte Nutzer sichtbar.)
     
  17. Anonymous

    Anonymous Mitglied

    Registriert seit:
    29. März 2016
    Beiträge:
    10
    Danke erhalten:
    0
    Danke vergeben:
    4
    Moin Monevo,

    ganz großes Danke an Dich. Werde das nun mal angehen und hoffe ich bekomme die weiteren Anker auch korrekt gesetzt.

    Mal wieder ist das Forum in sachen Erläuterung besser als der Support von Gambio. Obgleich auch dort ein Mitarbeiter eine sehr ausfühliche Erklärung im Ticket hinterlegt hat. Deine auf jeden fall funzt und ist verständlich.

    Wie auch immer Ihr Profi*s das erlent habt, ich ziehe den Hut!:cool:

    Danke und Grüße aus Hamburg!
    Klaus
     
  18. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    11. Februar 2015
    Beiträge:
    1.291
    Danke erhalten:
    398
    Danke vergeben:
    237
    Hallo Klaus, mir ist noch das hier aufgefallen (bei allen Bundesländern):

    printscreen.jpg