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
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: <?phpclass 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> '; $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 .= ' <strong>' . $t_page_numbers_array[$i]['TEXT'] . '</strong> '; } 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> '; } } 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_PAGE_NO, $t_page_numbers_array[$i]['PAGE']) . ' ">' . $t_page_numbers_array[$i]['TEXT'] . '</a> '; } } // next button if (($this->current_page_number < $this->number_of_pages) && ($this->number_of_pages != 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_NEXT_PAGE . ' ">' . PREVNEXT_BUTTON_NEXT . '</a> '; 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.
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
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
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: <?phpclass 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=.*?&/', '', $parameters, 1); // 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> '; $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 .= ' <strong>' . $t_page_numbers_array[$i]['TEXT'] . '</strong> '; } 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> '; } } 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_PAGE_NO, $t_page_numbers_array[$i]['PAGE']) . ' ">' . $t_page_numbers_array[$i]['TEXT'] . '</a> '; } } // next button if (($this->current_page_number < $this->number_of_pages) && ($this->number_of_pages != 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_NEXT_PAGE . ' ">' . PREVNEXT_BUTTON_NEXT . '</a> '; return $display_links_string; }} Das hat gerade funktioniert, ohne dass der Fehler auftritt.
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
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.
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
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.)
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! Danke und Grüße aus Hamburg! Klaus