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: TEMPLATE: Bootstrap4 für Shop 2.x - freies responsive Template

    modse

    • Frisch an Board
    • Beiträge: 83
    Re: TEMPLATE: Bootstrap4 für Shop 2.x - freies responsive Template
    Antwort #1005 am: 15. Oktober 2020, 09:54:01
    Hallo Chris,
    ich vermute, dass hat nichts mit dem Template (zumindest mit den Originaldateien) zu tun, weil ein Html-Gerüst angezeigt, aber nicht befüllt wird.
    Schalte mal probeweise auf ein anders Template um.

    Gruß Karl

    P.S.: Du hast auch noch Dateien des CookieGuard von noRiddle eingebaut - nutzt sie aber nicht.

    Hallo Karl,

    auch bei anderen Templates fehlen die Seitenzahlen :(

    Hast Du einen Rat für mich wie ich wieder durch die Seiten blättern lassen kann, den durchschnittlich 27 Artikel auf einer Seite etwas viel und denke der Kunde verliert sich darin schnell....

    Werde jetzt mal den CookieGuard reaktivieren...

    Vg Chris

    peter111

    • Fördermitglied
    • Beiträge: 163
    • Geschlecht:
    Re: TEMPLATE: Bootstrap4 für Shop 2.x - freies responsive Template
    Antwort #1006 am: 15. Oktober 2020, 10:14:42
    Hallo noRiddle,
    so würde es aussehen, wenn ich das Originalbild zentriere:
    https://www.eifelquilts.de/Patchworkzubehoer/Taschenzubehoer/Clover-D-Ring-Antikgold-20-mm::4023.html

    Gruß Peter

    Karl1

    • Viel Schreiber
    • Beiträge: 872
    Re: TEMPLATE: Bootstrap4 für Shop 2.x - freies responsive Template
    Antwort #1007 am: 15. Oktober 2020, 10:40:02
    Hallo Chris,
    wenn die Seitennavigation auch bei den Standardtemplates weg ist, dann sehe ich eigentlich nur zwei Systemdateien die in Frage kommen.
    Vergleiche mal die folgenden Dateien, ob du da Änderungen vorgenommen hast.
    includes/modules/product_listing.php (achte die Zeilen 68-73)
    includes/classes/split_page_results.php (Zeilen 77-163)

    Theoretisch wäre es auch möglich, dass in irgendeiner Datei, die über das Autoincludesystem ins Produktlisting eingebunden wird, die Smarty-Variable DISPLAY_LINKS überschrieben wird.
    Diese Stelle müsstest du in Dateien in den Ordnern includes/extra/modules/product_listing_... suchen.

    Gruß Karl

    modse

    • Frisch an Board
    • Beiträge: 83
    Re: TEMPLATE: Bootstrap4 für Shop 2.x - freies responsive Template
    Antwort #1008 am: 15. Oktober 2020, 10:48:34
    Servus Karl,

    anbei product_listing.php

    Code: PHP  [Auswählen]
    <?php
    /* -----------------------------------------------------------------------------------------
       $Id: product_listing.php 10462 2016-11-28 10:37:43Z GTB $

       modified eCommerce Shopsoftware
       http://www.modified-shop.org

       Copyright (c) 2009 - 2013 [www.modified-shop.org]
       -----------------------------------------------------------------------------------------
       based on:
       (c) 2000-2001 The Exchange Project  (earlier name of osCommerce)
       (c) 2002-2003 osCommerce(product_listing.php,v 1.42 2003/05/27); www.oscommerce.com
       (c) 2003 nextcommerce (product_listing.php,v 1.19 2003/08/1); www.nextcommerce.org
       (c) 2006 xt:Commerce (product_listing.php 1286 2005-10-07); www.(( Wir dulden keine kommerziellen Werbelinks - Bitte <a href="index.php?topic=3013.0">Forenregeln</a> beachten! ))

       Released under the GNU General Public License
       ---------------------------------------------------------------------------------------*/


    // todo: move to configuration ?
    defined('CATEGORIES_IMAGE_SHOW_NO_IMAGE') OR define('CATEGORIES_IMAGE_SHOW_NO_IMAGE', 'true');
    defined('MANUFACTURER_IMAGE_SHOW_NO_IMAGE') OR define('MANUFACTURER_IMAGE_SHOW_NO_IMAGE', 'false');

    $module_smarty = new Smarty;
    $module_smarty->caching = false;
    $module_smarty->assign('tpl_path', DIR_WS_BASE.'templates/'.CURRENT_TEMPLATE.'/');

    $result = true;

    // include needed functions
    require_once (DIR_FS_INC.'xtc_get_vpe_name.inc.php');

    $max_display_results = (isset($_SESSION['filter_set']) ? (int)$_SESSION['filter_set'] : MAX_DISPLAY_SEARCH_RESULTS);
    if (strpos($PHP_SELF, FILENAME_ADVANCED_SEARCH_RESULT) !== false && defined('MAX_DISPLAY_ADVANCED_SEARCH_RESULTS') && MAX_DISPLAY_ADVANCED_SEARCH_RESULTS != '') {
      $max_display_results = (isset($_SESSION['filter_set']) ? (int)$_SESSION['filter_set'] : MAX_DISPLAY_ADVANCED_SEARCH_RESULTS);
      $module_smarty->assign('SEARCH_RESULT', true);
    }

    $listing_split = new splitPageResults($listing_sql, (isset($_GET['page']) ? (int)$_GET['page'] : 1), $max_display_results, 'p.products_id');

    $module_content = $category = array();
    $image = '';

    if ($listing_split->number_of_rows > 0) {
      if (USE_PAGINATION_LIST == 'false') {
        $module_smarty->assign('NAVIGATION', '<div class="smallText" style="clear:both;">
                                                <div style="float:left;">'
    .$listing_split->display_count(TEXT_DISPLAY_NUMBER_OF_PRODUCTS).'</div>
                                                <div align="right">'
    .TEXT_RESULT_PAGE.' '.$listing_split->display_links(MAX_DISPLAY_PAGE_LINKS, xtc_get_all_get_params(array ('page', 'info', 'x', 'y', 'keywords')).(isset($_GET['keywords'])?'keywords='. urlencode($_GET['keywords']):'')).'</div>
                                              </div>'
    );
      } else {  
        $module_smarty->assign('DISPLAY_COUNT', $listing_split->display_count(TEXT_DISPLAY_NUMBER_OF_PRODUCTS));
        $module_smarty->assign('DISPLAY_LINKS', $listing_split->display_links(MAX_DISPLAY_PAGE_LINKS, xtc_get_all_get_params(array ('page', 'info', 'x', 'y', 'keywords')).(isset($_GET['keywords'])?'keywords='. urlencode($_GET['keywords']):'')));
        $module_smarty->caching = 0;
        $pagination = $module_smarty->fetch(CURRENT_TEMPLATE.'/module/pagination.html');
        $module_smarty->assign('NAVIGATION', $pagination);
        $module_smarty->assign('PAGINATION', $pagination);
      }
     
      if ($current_category_id != '0') {

        $category_query = xtDBquery("SELECT cd.categories_description,
                                            cd.categories_name,
                                            cd.categories_heading_title,
                                            c.listing_template,
                                            c.categories_image
                                       FROM "
    .TABLE_CATEGORIES." c
                                       JOIN "
    .TABLE_CATEGORIES_DESCRIPTION." cd
                                         ON (c.categories_id = cd.categories_id AND cd.language_id = '"
    .(int)$_SESSION['languages_id']."')
                                      WHERE c.categories_id = '"
    .(int)$current_category_id."'
                                            "
    .CATEGORIES_CONDITIONS_C."
                                      LIMIT 1"
    );
        $category = xtc_db_fetch_array($category_query, true);
        if ($category['categories_image'] != '') {
          $image = DIR_WS_IMAGES.'categories/'.$category['categories_image'];
          if (!file_exists(DIR_FS_CATALOG.$image)) {
            if (CATEGORIES_IMAGE_SHOW_NO_IMAGE == 'true') {
              $image = DIR_WS_IMAGES.'categories/noimage.gif';
            } else {
              $image = '';
            }
          }
        }
      }

      if (isset($_GET['manufacturers_id']) && $_GET['manufacturers_id'] > 0) {
        $manufacturers_id = (int)$_GET['manufacturers_id'];
      } elseif (isset($_GET['filter_id']) && $_GET['filter_id'] > 0) {
        $manufacturers_id = (int)$_GET['filter_id'];
      }
     
      if (isset($manufacturers_id) && basename($PHP_SELF) != FILENAME_ADVANCED_SEARCH_RESULT) {
        $manu_query = xtDBquery("SELECT m.manufacturers_id,
                                        m.manufacturers_image,
                                        m.manufacturers_name,
                                        mi.manufacturers_description
                                   FROM "
    .TABLE_MANUFACTURERS." m
                                   JOIN "
    . TABLE_MANUFACTURERS_INFO . " mi
                                        ON (m.manufacturers_id = mi.manufacturers_id
                                            AND mi.languages_id = '"
    . (int)$_SESSION['languages_id'] . "')
                                  WHERE m.manufacturers_id = '"
    .$manufacturers_id."'");
        $manu = xtc_db_fetch_array($manu_query, true);
        if ($manu['manufacturers_image'] != '') {
          $manu_image = DIR_WS_IMAGES.$manu['manufacturers_image'];
          if (!file_exists(DIR_FS_CATALOG.$manu_image)) {
            if (MANUFACTURER_IMAGE_SHOW_NO_IMAGE == 'true') {
              $manu_image = DIR_WS_IMAGES.'manufacturers/noimage.gif';
            } else {
              $manu_image = '';
            }
          }
        }
        if ($current_category_id != '0') {
          $module_smarty->assign('MANUFACTURER_IMAGE', ((isset($manu_image) && $manu_image != '') ? DIR_WS_BASE . $manu_image : ''));
          $module_smarty->assign('MANUFACTURER_NAME', $manu['manufacturers_name']);
          $module_smarty->assign('MANUFACTURER_DESCRIPTION', $manu['manufacturers_description']);
          $module_smarty->assign('MANUFACTURER_LINK', xtc_href_link(FILENAME_DEFAULT, xtc_manufacturer_link($manu['manufacturers_id'], $manu['manufacturers_name'])));
        } else {
          $category['categories_name'] = $manu['manufacturers_name'];
          $category['categories_description'] = $manu['manufacturers_description'];
          $image = ((isset($manu_image) && $manu_image != '') ? $manu_image : '');
        }
      }

      if ($current_category_id == '0' && isset($_GET['keywords'])) {
        $category['categories_name'] = TEXT_SEARCH_TERM . stripslashes(trim(urldecode($_GET['keywords'])));
      }

      if (isset($category['categories_heading_title']) && $category['categories_heading_title'] != '') {
        $list_title = $category['categories_heading_title'];
      } elseif (isset($category['categories_name']) && $category['categories_name'] != '') {
        $list_title = $category['categories_name'];
      }

      $module_smarty->assign('LIST_TITLE',  isset($list_title) ? $list_title : '');
      $module_smarty->assign('CATEGORIES_NAME', isset($category['categories_name']) ? $category['categories_name'] : '');
      $module_smarty->assign('CATEGORIES_HEADING_TITLE', isset($category['categories_heading_title']) ? $category['categories_heading_title'] : '');
      $module_smarty->assign('CATEGORIES_DESCRIPTION', isset($category['categories_description']) ? $category['categories_description'] : '');
      $module_smarty->assign('CATEGORIES_IMAGE', ((isset($image) && $image != '') ? DIR_WS_BASE . $image : ''));

      foreach(auto_include(DIR_FS_CATALOG.'includes/extra/modules/product_listing_begin/','php') as $file) require ($file);

      $listing_query = xtDBquery($listing_split->sql_query);
      while ($listing = xtc_db_fetch_array($listing_query, true)) {
        $module_content[] =  $product->buildDataArray($listing);
      }
    } else {
      // no product found
      $result = false;
    }

    //include Categorie Listing
    include (DIR_WS_MODULES. 'categories_listing.php');

    if ($result != false) {

      // get default template
      if ($category['listing_template'] == '' || $category['listing_template'] == 'default') {
        $files = array_filter(auto_include(DIR_FS_CATALOG.'templates/'.CURRENT_TEMPLATE.'/module/product_listing/','html'), function($file) {
          return false === strpos($file, 'index.html');
        });
        $category['listing_template'] = basename($files[0]);
      }

      include (DIR_WS_MODULES.'listing_filter.php');
     
      $module_smarty->assign('MANUFACTURER_DROPDOWN', (isset($manufacturer_dropdown) ? $manufacturer_dropdown : ''));
     
      $module_smarty->assign('language', $_SESSION['language']);
      $module_smarty->assign('module_content', $module_content);
      // support for own manufacturers template
      $template = CURRENT_TEMPLATE.'/module/product_listing/'.$category['listing_template'];
      if (isset ($_GET['manufacturers_id']) && $_GET['manufacturers_id'] > 0 && strpos($PHP_SELF, FILENAME_ADVANCED_SEARCH_RESULT) === false) {
        if (is_file(DIR_FS_CATALOG.'templates/'.CURRENT_TEMPLATE.'/module/manufacturers_listing.html')) {
          $template = CURRENT_TEMPLATE.'/module/manufacturers_listing.html';
        }
      }
      // set cache ID
       if (!CacheCheck()) {
        $module_smarty->caching = 0;
        $module = $module_smarty->fetch(CURRENT_TEMPLATE.'/module/product_listing/'.$category['listing_template']);
      } else {
        $module_smarty->caching = 1;
        $module_smarty->cache_lifetime = CACHE_LIFETIME;
        $module_smarty->cache_modified_check = CACHE_CHECK;

        //setting/clearing params
        $get_params = isset($_GET['manufacturers_id']) && xtc_not_null($_GET['manufacturers_id']) ? '_'.(int)$_GET['manufacturers_id'] : '';
        $get_params .= isset($_GET['filter_id']) && xtc_not_null($_GET['filter_id']) ? '_'.(int)$_GET['filter_id'] : '';
        $get_params .= isset($_GET['page']) && $_GET['page'] > 0  ? '_'.(int)$_GET['page'] : '';
        $get_params .= isset($_GET['categories_id']) && xtc_not_null($_GET['categories_id']) ? '_'.(int)$_GET['categories_id'] : '';
        $get_params .= isset($_GET['keywords']) && !empty($_GET['keywords']) ? '_'.stripslashes(trim(urldecode($_GET['keywords']))) : '';
        $get_params .= isset($_GET['pfrom']) && !empty($_GET['pfrom']) ? '_'.stripslashes($_GET['pfrom']) : '';
        $get_params .= isset($_GET['pto']) && !empty($_GET['pto']) ? '_'.stripslashes($_GET['pto']) : '';
        $get_params .= isset($_GET['x']) && $_GET['x'] >= 0 ? '_'.(int)$_GET['x'] : '';
        $get_params .= isset($_GET['y']) && $_GET['y'] >= 0 ? '_'.(int)$_GET['y'] : '';

        $cache_id = md5($current_category_id.'_'.$_SESSION['language'].'_'.$_SESSION['customers_status']['customers_status_name'].'_'.$_SESSION['currency'].$get_params);
        $module = $module_smarty->fetch(CURRENT_TEMPLATE.'/module/product_listing/'.$category['listing_template'], $cache_id);
      }
      $smarty->assign('main_content', $module);
    } elseif (isset($current_category_id) && $current_category_id > 0) {
      $category_query = xtDBquery("SELECT c.categories_image,
                                          c.categories_template,
                                          cd.categories_name,
                                          cd.categories_heading_title,
                                          cd.categories_description
                                     FROM "
    .TABLE_CATEGORIES." c
                                     JOIN "
    .TABLE_CATEGORIES_DESCRIPTION." cd
                                          ON cd.categories_id = c.categories_id
                                             AND cd.language_id = '"
    .(int) $_SESSION['languages_id']."'
                                             AND trim(cd.categories_name) != ''
                                             AND trim(cd.categories_description) != ''
                                    WHERE c.categories_status = '1'
                                      AND c.categories_id = '"
    .(int)$current_category_id."'
                                          "
    .CATEGORIES_CONDITIONS_C);
      if (xtc_db_num_rows($category_query, true) > 0) {
        $category = xtc_db_fetch_array($category_query, true);

        $image = '';
        if ($category['categories_image'] != '') {
          $image = DIR_WS_IMAGES.'categories/'.$category['categories_image'];
          if (!file_exists(DIR_FS_CATALOG.$image)) {
            if (CATEGORIES_IMAGE_SHOW_NO_IMAGE == 'true') {
              $image = DIR_WS_IMAGES.'categories/noimage.gif';
            } else {
              $image = '';
            }
          }
        }

        $module_smarty->assign('CATEGORIES_NAME', $category['categories_name']);
        $module_smarty->assign('CATEGORIES_HEADING_TITLE', $category['categories_heading_title']);
        $module_smarty->assign('CATEGORIES_IMAGE', (($image != '') ? DIR_WS_BASE . $image : ''));
        $module_smarty->assign('CATEGORIES_DESCRIPTION', $category['categories_description']);

        foreach(auto_include(DIR_FS_CATALOG.'includes/extra/modules/product_listing_end/','php') as $file) require ($file);

        // get default template
        if ($category['categories_template'] == '' || $category['categories_template'] == 'default') {
          $files = array_filter(auto_include(DIR_FS_CATALOG.'templates/'.CURRENT_TEMPLATE.'/module/categorie_listing/','html'), function($file) {
            return false === strpos($file, 'index.html');
          });
          $category['categories_template'] = basename($files[0]);
        }
       
        $module_smarty->assign('language', $_SESSION['language']);
        $module_smarty->caching = 0;
        $main_content = $module_smarty->fetch(CURRENT_TEMPLATE.'/module/categorie_listing/'.$category['categories_template']);
        $smarty->assign('main_content', $main_content);
      } elseif (isset($_GET['filter_id']) && $_GET['filter_id'] > 0) {
        $site_error = MANUFACTURER_NOT_FOUND;
        include (DIR_WS_MODULES.FILENAME_ERROR_HANDLER);
      } else {
        $site_error = CATEGORIE_NOT_FOUND;
        include (DIR_WS_MODULES.FILENAME_ERROR_HANDLER);
      }
    } elseif (isset($_GET['manufacturers_id']) && $_GET['manufacturers_id'] > 0) {
      $site_error = MANUFACTURER_NOT_FOUND;
      if (isset($_GET['filter_id']) && $_GET['filter_id'] > 0) {
        $site_error = CATEGORIE_NOT_FOUND;  
      }
      include (DIR_WS_MODULES.FILENAME_ERROR_HANDLER);
    } elseif ($current_category_id == '0' && isset($_GET['keywords'])) {
      $site_error = TEXT_PRODUCT_NOT_FOUND;
      include (DIR_WS_MODULES.FILENAME_ERROR_HANDLER);
    } else {
      $site_error = CATEGORIE_NOT_FOUND;
      include (DIR_WS_MODULES.FILENAME_ERROR_HANDLER);
    }
    ?>

    in nachfolgenden die weiteren Dateien die du in Betracht gezogen hast.

    modse

    • Frisch an Board
    • Beiträge: 83
    Re: TEMPLATE: Bootstrap4 für Shop 2.x - freies responsive Template
    Antwort #1009 am: 15. Oktober 2020, 10:49:39
    split_page_results.php

    Code: PHP  [Auswählen]
    <?php
    /* -----------------------------------------------------------------------------------------
       $Id: split_page_results.php 4200 2013-01-10 19:47:11Z Tomcraft1980 $

       modified eCommerce Shopsoftware
       http://www.modified-shop.org

       Copyright (c) 2009 - 2013 [www.modified-shop.org]
       -----------------------------------------------------------------------------------------
       based on:
       (c) 2000-2001 The Exchange Project  (earlier name of osCommerce)
       (c) 2002-2003 osCommerce(split_page_results.php,v 1.14 2003/05/27); www.oscommerce.com
       (c) 2003 nextcommerce (split_page_results.php,v 1.6 2003/08/13); www.nextcommerce.org
       (c) 2006 XT-Commerce (split_page_results.php 1166 2005-08-21)

       Released under the GNU General Public License
       ---------------------------------------------------------------------------------------*/


      class splitPageResults {
        var $sql_query;
        var $number_of_rows;
        var $current_page_number;
        var $number_of_pages;
        var $number_of_rows_per_page;

        // class constructor
        function __construct($query, $page, $max_rows, $count_key = '*') {
          $this->sql_query = $query;

          if (empty($page) || !is_numeric($page) || $page < 0) $page = 1;
          $this->current_page_number = $page;

          $this->number_of_rows_per_page = $max_rows;

          $pos_to = strlen($this->sql_query);
          $pos_from = strpos(strtoupper($this->sql_query), ' FROM', 0);

          $pos_group_by = strpos(strtoupper($this->sql_query), ' GROUP BY', $pos_from);
          if (($pos_group_by < $pos_to) && ($pos_group_by != false)) $pos_to = $pos_group_by;

          $pos_having = strpos(strtoupper($this->sql_query), ' HAVING', $pos_from);
          if (($pos_having < $pos_to) && ($pos_having != false)) $pos_to = $pos_having;

          $pos_order_by = strpos(strtoupper($this->sql_query), ' ORDER BY', $pos_from);
          if (($pos_order_by < $pos_to) && ($pos_order_by != false)) $pos_to = $pos_order_by;

          if (strpos(strtoupper($this->sql_query), 'DISTINCT') || strpos(strtoupper($this->sql_query), 'GROUP BY')) {
            $count_string = 'DISTINCT ' . xtc_db_input($count_key);
            //$count_string = xtc_db_input($count_key);
          } else {
            $count_string = xtc_db_input($count_key);
          }

          //BOF - DokuMan - 2010-08-26 - performance improvement
          //$count_query = xtDBquery($query);
          //$count = xtc_db_num_rows($count_query,true);
          $reviews_count_query = xtc_db_query("select count(" . $count_string . ") as total " . substr($query, $pos_from, ($pos_to - $pos_from)));
          $reviews_count = xtc_db_fetch_array($reviews_count_query);
          $count = $reviews_count['total'];
          //EOF - DokuMan - 2010-08-26 - performance improvement

          $this->number_of_rows = $count;

          //BOF -web28- 2010-08-07 - FIX Division by Zero
          //$this->number_of_pages = ceil($this->number_of_rows / $this->number_of_rows_per_page);
          if ($this->number_of_rows_per_page > 0) {
          $this->number_of_pages = ceil($this->number_of_rows / $this->number_of_rows_per_page);
          } else {
          $this->number_of_pages = 0;
          }
          //EOF -web28- 2010-08-07 - FIX Division by Zero

          if ($this->current_page_number > $this->number_of_pages) {
            $this->current_page_number = $this->number_of_pages;
          }

          $offset = ($this->number_of_rows_per_page * ($this->current_page_number - 1));

          //BOF -web28- 2010-08-07 - FIX possible $offset = -0
          if ($offset < 1) $offset = 0;
          //EOF -web28- 2010-08-07 - FIX possible $offset = -0

          //BOF - DokuMan - 2010-08-26 - limit by highest offset
          //$this->sql_query .= " LIMIT " . $offset . ", " . $this->number_of_rows_per_page;
          $this->sql_query .= " LIMIT " . max((int)$offset, 0) . ", " . $this->number_of_rows_per_page;
          //EOF - DokuMan - 2010-08-26 - limit by highest offset
        }

        // class functions

        // display split-page-number-links
        function display_links($max_page_links, $parameters = '') {
          global $PHP_SELF, $request_type;

          $display_links_string = '';
          $display_links_array = array();

          $class = 'class="pageResults"';

          $parameters = str_replace('&amp;', '&', $parameters);
         
          if (xtc_not_null($parameters) && (substr($parameters, -1) != '&')) {
            $parameters = ltrim($parameters,'&'); //remove left standing '&'
            $parameters .= '&'; //add '&' added to the right
          }
         
         
          // previous button - not displayed on first page
          if ($this->current_page_number > 1) {
            $display_links_array['previous'] = '<a href="' . xtc_href_link(basename($PHP_SELF), $parameters . 'page=' . ($this->current_page_number - 1), $request_type) . '" '.$class.' title="' . PREVNEXT_TITLE_PREVIOUS_PAGE . '">' . PREVNEXT_BUTTON_PREV . '</a>';
            $display_links_string .= $display_links_array['previous'].'&nbsp;&nbsp;';
          }
         
          // check if number_of_pages > $max_page_links
          $cur_window_num = (int)($this->current_page_number / $max_page_links);
          if ($this->current_page_number % $max_page_links) $cur_window_num++;

          $max_window_num = (int)($this->number_of_pages / $max_page_links);
          if ($this->number_of_pages % $max_page_links) $max_window_num++;

          // previous window of pages
          if ($cur_window_num > 1) {
            $display_links_array['previouspages'] = '<a href="' . xtc_href_link(basename($PHP_SELF), $parameters . 'page=' . (($cur_window_num - 1) * $max_page_links), $request_type) . '" '.$class.' title="' . sprintf(PREVNEXT_TITLE_PREV_SET_OF_NO_PAGE, $max_page_links) . '">...</a>';
            $display_links_string .= $display_links_array['previouspages'];
          }
         
          // page nn button
          for ($jump_to_page = 1 + (($cur_window_num - 1) * $max_page_links); ($jump_to_page <= ($cur_window_num * $max_page_links)) && ($jump_to_page <= $this->number_of_pages); $jump_to_page++) {
            if ($jump_to_page == $this->current_page_number) {
              $display_links_array['pages']['current'] = $jump_to_page;
              $display_links_string .= '&nbsp;<strong>' . $jump_to_page . '</strong>&nbsp;';
            } else {
              $display_links_array['pages'][$jump_to_page] = '<a href="' . xtc_href_link(basename($PHP_SELF), $parameters . 'page=' . $jump_to_page, $request_type) . '" '.$class.' title="' . sprintf(PREVNEXT_TITLE_PAGE_NO, $jump_to_page) . '">' . $jump_to_page . '</a>';
              $display_links_string .= '&nbsp;'.$display_links_array['pages'][$jump_to_page].'&nbsp;';
            }
          }

          // next window of pages
          if ($cur_window_num < $max_window_num) {
            $display_links_array['nextpages'] = '<a href="' . xtc_href_link(basename($PHP_SELF), $parameters . 'page=' . (($cur_window_num) * $max_page_links + 1), $request_type) . '" '.$class.' title="' . sprintf(PREVNEXT_TITLE_NEXT_SET_OF_NO_PAGE, $max_page_links) . '">...</a>';
            $display_links_string .= $display_links_array['nextpages'].'&nbsp;';
          }
         
           // next button
          if (($this->current_page_number < $this->number_of_pages) && ($this->number_of_pages != 1)) {
            $display_links_array['next'] = '<a href="' . xtc_href_link(basename($PHP_SELF), $parameters . 'page=' . ($this->current_page_number + 1), $request_type) . '" '.$class.' title="' . PREVNEXT_TITLE_NEXT_PAGE . '">' . PREVNEXT_BUTTON_NEXT . '</a>';
            $display_links_string .= '&nbsp;'.$display_links_array['next'].'&nbsp;';
          }
         
          if (USE_PAGINATION_LIST == 'true') {
            return $display_links_array;
          }
          return $display_links_string;
        }

        // display number of total products found
        function display_count($text_output) {
          $to_num = ($this->number_of_rows_per_page * $this->current_page_number);
          if ($to_num > $this->number_of_rows) $to_num = $this->number_of_rows;

          $from_num = ($this->number_of_rows_per_page * ($this->current_page_number - 1));

          if ($to_num == 0) {
            $from_num = 0;
          } else {
            $from_num++;
          }

          return sprintf($text_output, $from_num, $to_num, $this->number_of_rows);
        }
      }
    ?>

    modse

    • Frisch an Board
    • Beiträge: 83
    Re: TEMPLATE: Bootstrap4 für Shop 2.x - freies responsive Template
    Antwort #1010 am: 15. Oktober 2020, 10:51:56
    die beiden Index.html in includes/extra/modules/product_listing_ sind leere HTML Seiten.

    Vg Chris

    Karl1

    • Viel Schreiber
    • Beiträge: 872
    Re: TEMPLATE: Bootstrap4 für Shop 2.x - freies responsive Template
    Antwort #1011 am: 15. Oktober 2020, 12:06:15
    Hallo Chris,
    du solltest die Dateien nicht posten sondern vergleichen.

    Wenn ich mir die Dateien so ansehe, dann sind die aus einer älteren Shopversion - da stimmt wenig mit den aktuellen überein.
    Wie soll man dir da helfen?
    Du solltest erstmal deine Shopdateien aktualisieren - dann ist der Fehler vermutlich auch weg.

    Gruß Karl

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 10.934
    • Geschlecht:
    Re: TEMPLATE: Bootstrap4 für Shop 2.x - freies responsive Template
    Antwort #1012 am: 15. Oktober 2020, 14:05:07
    Hallo noRiddle,
    so würde es aussehen, wenn ich das Originalbild zentriere:
    https://www.eifelquilts.de/Patchworkzubehoer/Taschenzubehoer/Clover-D-Ring-Antikgold-20-mm::4023.html

    Gruß Peter

    Ich sehe gar keinen Easyzoom-Effekt. Hast du da irgend etwas zerschossen ?

    Da im Moment des Mouseover dem Image im Container div#easyzoom-flyout per Javascript ein left:0 Inline-Style vergeben wird, ist das was du möchtest nicht so einfach mittels CSS zu lösen. Da müsste man wohl in's Javascript eingreifen. Da passe ich dann weil mir die Analyse dazu jetzt zu zeitaufwändig ist.

    Übrigens hast du in der komprimierten tpl_plugins.min.css einen CSS-Fehler:
    Code: CSS  [Auswählen]
    easyzoom {text-align: center  !important;}
    Da fehlt, wenn eine Klasse angesprochen werden soll, der Punkt vor easyzoom.
    In irgendeiner der zu komprimierenden Dateien muß der Fehler zu finden sein.

    Gruß,
    noRiddle

    peter111

    • Fördermitglied
    • Beiträge: 163
    • Geschlecht:
    Re: TEMPLATE: Bootstrap4 für Shop 2.x - freies responsive Template
    Antwort #1013 am: 15. Oktober 2020, 14:22:48
    Danke für die Info.
    Ich habe bereits eingesehen dass solch eine Änderung zu tief ins JS greifen würde - es sind nur einige "Altlasten" und damit den  Aufwand nicht wert.
    Ich hatte die .min.css  quick und dirty modifiziert damit du dir das anschauen kannst ... und den Punkt vergessen  :-(
    Gruß Peter

    hpzeller

    • Experte
    • Beiträge: 3.514
    • Geschlecht:
    Re: TEMPLATE: Bootstrap4 für Shop 2.x - freies responsive Template
    Antwort #1014 am: 15. Oktober 2020, 17:52:21
    Hallo zusammen,
    da ich ProdImages unterschiedlicher Größe habe möchte ich diese in der Artikelansicht zentriert angezeigt bekommen,
    Klappt in der easyzoom.min.css  indem man unter .easyzoom{text-align:center .. einfügt.
    Bei mouse-hover ist die Pracht aber leider vorbei, denn dann hängt das Bild wieder am linken Rand.
    Hat jemand einen Tipp was ich noch ergänzen muss?
    Gruß Peter

    https://www.eifelquilts.de/Patchworkzubehoer/Taschenzubehoer/Clover-D-Ring-Antikgold-20-mm::4023.html

    Also schlimm sieht diese kleine Verschiebung meiner Meinung nach ja nicht aus, aber wenn du sie bestiegt haben willst kannst du folgendes testen, ersetze in der Datei /templates/bootstrap4/javascript/easyzoom.min.js folgende Codesequenz

    Code: Javascript  [Auswählen]
    (d=n-h)<0&&(d=0),(c=r-a)<0&&(c=0)

    mit dieser.

    Code: Javascript  [Auswählen]
    (d=n-h)<0&&(d=-1),(c=r-a)<0&&(c=-1)

    Nachtrag: Obige Codesequenz ist das Äquivalent der folgenden Codezeilen des unkomprimierten JavaScripts.

    Code: Javascript  [Auswählen]
            // For when the zoom image is smaller than the flyout element.
            if (zoomImgOverlapX < 0) zoomImgOverlapX = 0;
            if (zoomImgOverlapY < 0) zoomImgOverlapY = 0;

    Gruss
    Hanspeter

    modse

    • Frisch an Board
    • Beiträge: 83
    Re: TEMPLATE: Bootstrap4 für Shop 2.x - freies responsive Template
    Antwort #1015 am: 15. Oktober 2020, 22:01:16
    Hallo Chris,
    du solltest die Dateien nicht posten sondern vergleichen.

    Wenn ich mir die Dateien so ansehe, dann sind die aus einer älteren Shopversion - da stimmt wenig mit den aktuellen überein.
    Wie soll man dir da helfen?
    Du solltest erstmal deine Shopdateien aktualisieren - dann ist der Fehler vermutlich auch weg.

    Gruß Karl

    Das traue ich mir leider nicht zu ....

    Karl1

    • Viel Schreiber
    • Beiträge: 872
    Re: TEMPLATE: Bootstrap4 für Shop 2.x - freies responsive Template
    Antwort #1016 am: 16. Oktober 2020, 11:04:11
    Hallo Chris,
    du hast Shopdateien, anhand der geposteten Datei vermute ich mal, der Version 2.0.1.0 oder 2.0.2.0 von 2016 oder 2017.
    Jetzt baust du ein Template ein, dass 2019 von mir mit Shopversion 2.0.4.2 entwickelt wurde.
    Du traust dir nicht zu ein Update zu machen, baust aber in mein Template, ohne dass es nötig wäre, ein anderes Cookiescript ein.
    Sorry, aber da fehlt mir das Verständnis!

    Gruß Karl

    peter111

    • Fördermitglied
    • Beiträge: 163
    • Geschlecht:
    Re: TEMPLATE: Bootstrap4 für Shop 2.x - freies responsive Template
    Antwort #1017 am: 16. Oktober 2020, 18:01:43
    @Hanspeter
    Danke für die Hinweise aber wie gesagt - ich habe wohl mit Kanonen auf Spatzen geschossen, denn wenn ich vernünftig große Prod Images einstelle passt es - wenn auch linksbündig.
    Ich hatte übrigens die Änderung zur Zentrierung wieder rausgenommen und deshalb hast du recht -  So schlimm sieht diese kleine Verschiebung nicht aus!
    Hinzu kommt, dass ich (besonders im Hinblick auf Updates) JS ungerne ändere und eigentlich auch keine wirkliche Ahnung davon habe..
    Trotzdem Danke und Gruß
    Peter

    Karl1

    • Viel Schreiber
    • Beiträge: 872
    Re: TEMPLATE: Bootstrap4 für Shop 2.x - freies responsive Template
    Antwort #1018 am: 17. Oktober 2020, 15:29:36
    Hallo Zusammen,
    wer das neue "MODUL: OIL.js Cookie Consent Management" bereits nutzen will, der muss darauf achten, von dort immer die aktuellen Dateien zu nutzen.

    In diesem Paket sind nur die Dateien die in den Templateordner templates/bootstrap4/ gehören enthalten.

    Eventuell eine Sicherung der Templatedateien machen und anschließend diese Dateien in den Templateordner kopieren.
    Bestehende Dateien müssen überschrieben werden.

    Gruß Karl

    [EDIT Tomcraft 17.10.2020: Paket in Beitrag 1 aktualisiert.]

    modse

    • Frisch an Board
    • Beiträge: 83
    Re: TEMPLATE: Bootstrap4 für Shop 2.x - freies responsive Template
    Antwort #1019 am: 17. Oktober 2020, 15:56:30
    Hallo Chris,
    du solltest die Dateien nicht posten sondern vergleichen.

    Wenn ich mir die Dateien so ansehe, dann sind die aus einer älteren Shopversion - da stimmt wenig mit den aktuellen überein.
    Wie soll man dir da helfen?
    Du solltest erstmal deine Shopdateien aktualisieren - dann ist der Fehler vermutlich auch weg.
    [...]

    Funktioniert wieder - warum auch immer - komisch.
    1188 Antworten
    240425 Aufrufe
    21. November 2020, 11:59:35 von Azrael
    1228 Antworten
    496702 Aufrufe
    11. März 2020, 16:11:33 von Baschtl
    1 Antworten
    1681 Aufrufe
    24. April 2018, 09:36:44 von lukass
               
    anything