Автор Тема: nbr-product-page.tpl что-то поменять  (Прочитано 2053 раз)

14 Август 2014, 14:48:19
  • Новичок
  • *
  • Сообщений: 31
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Нужна помощь в том,есть магазин. При нажатии на сортировку в пагинации хочешь не хочешь будет показана одна страница.
хотя "Отображать по 10, 18, 20, 50" по умолчанию стоит 18. например выбираешь фильтр где допустим 100 товаров, все равно покажет 1 страницу в пагинации. но как только нажал на любую из 10,18,20,50 отображается сразу все хорошо и как надо.
Я так понял, ссылка изначально выглядет так http://stereoheadnew.dev/ru/20-naushniki , а при принудительном нажатии на отображать по приписывается решетка и отображается все отлично. http://stereoheadnew.dev/ru/20-naushniki#/
вообщем надо как-то сделать так, чтоб с самого начала была эта решетка.
если что-то непонятно, протестить можно тут
http://stereohead.com.ua
14 Август 2014, 15:34:08
Ответ #1
  • Новичок
  • *
  • Сообщений: 31
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля

Вот так выглядит nbr-product-page.tpl 
<div class="filter-holder">
            <div class="text-wrap">
                <span>{l s='Show'}:</span>

                <ul id="nb_item">
                   
                    {foreach from=$nArray item=nValue}
                        {if $lastnValue <= $nb_products}
                            <li {if $n == $nValue}class="active"{/if}>
                                {*<a href="{if !is_array($requestNb)}{$requestNb}{else}{$requestNb.requestUrl}{/if}?n={$nValue|escape:'htmlall':'UTF-8'}">{$nValue|escape:'htmlall':'UTF-8'}</a>*}
                                <a href="#" data-nb="{$nValue|escape:'htmlall':'UTF-8'}">{$nValue|escape:'htmlall':'UTF-8'}</a>
                            </li>

                        {/if}
                        {assign var="lastnValue" value=$nValue}
                    {/foreach}
                </ul>
                <input type="hidden" name="n" class="nb_item" value="{$nValue|escape:'htmlall':'UTF-8'}" />
            </div>

         <!--   <span class="displaying">Показано 20 из 65 товаров</span>   -->
        </div>

он изменялся
я понял что если убрать строчку
<input type="hidden" name="n" class="nb_item" value="{$nValue|escape:'htmlall':'UTF-8'}" />пагинация работает как надо. но при нажатии на 10,18,20,50 ничего не меняется, т.е. товаров на страницу всега 18 (по умолчанию)
14 Август 2014, 15:34:24
Ответ #2
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Сортировка товаров и количество страниц настраивается в:
Панель управления >> Настройки >> Товары
Нумерация страниц:
Товаров на странице: ...
Сортировать товары: ...
Сортировка:...
14 Август 2014, 15:37:06
Ответ #3
  • Новичок
  • *
  • Сообщений: 31
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Сортировка товаров и количество страниц настраивается в:
Панель управления >> Настройки >> Товары
Нумерация страниц:
Товаров на странице: ...
Сортировать товары: ...
Сортировка:...
ПОнятно, это как выставить значение по умолчанию. но мне полюбому в код лезть надо. tpl-ки не раз изменялись, что-то я менял, но не все. поэтому не могу разобраться
14 Август 2014, 15:38:12
Ответ #4
  • Новичок
  • *
  • Сообщений: 31
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Ну это ничего не меняет, сделал например по умолчанию 20, но история конечно же та же
14 Август 2014, 15:40:43
Ответ #5
  • Новичок
  • *
  • Сообщений: 31
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Сортировка товаров и количество страниц настраивается в:
Панель управления >> Настройки >> Товары
Нумерация страниц:
Товаров на странице: ...
Сортировать товары: ...
Сортировка:...
еще раз очень коротко опишу проблему.
при нажатии на любой фильтр в пагинации всегда показывается 1 страница. хотя товаров намного больше и при нажатии на любую кнопку из "Отображать по 10,20,50" пагинация сразу делается как надо. т.е. все сколько страниц должно быть столько и появляется
14 Август 2014, 15:49:07
Ответ #6
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
В модуле многоуровневой навигации нужну смотреть.
/themes/default-bootstrap/js/modules/blocklayered/blocklayered.js
в нем определяется переменная количества страниц
/product count refresh
if(nbProductsIn!=false){
if(isNaN(nbProductsIn) == 0) {
// add variables
var productCountRow = $('.product-count').html();
var nbPage =
14 Август 2014, 16:08:15
Ответ #7
  • Новичок
  • *
  • Сообщений: 31
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
этот файт тоже менялся и сейчас выглядит так
// To be sure there is no other events attached to the nb_item, change the ID
var id = 1;

    $('#nb_item li a').click(function(){
        var link = $(this);
        var nb = link.data('nb');
        var form = link.parents('form');

        $('.nb_item').val(nb);
        link.parents('ul').find('li').removeClass('active');
        link.parents('li').addClass('active');
        reloadContent();

        return false;
    });

    $('#vmode li a').click(function(){
        var link = $(this);
        var vmode = link.data('vmode');
        var url = window.location.href + '?vmode=' + vmode;
        insertParam('vmode', vmode);

        return false;
    });

paginationButton();
initLayered();
});
а тплка нужная вот так.
{if $nb_products > $products_per_page}

        <div class="filter-holder">
            <div class="text-wrap">
                <span>{l s='Show'}:</span>

                <ul id="nb_item">
                   
                    {foreach from=$nArray item=nValue}
                        {if $lastnValue <= $nb_products}
                            <li {if $n == $nValue}class="active"{/if}>
                                {*<a href="{if !is_array($requestNb)}{$requestNb}{else}{$requestNb.requestUrl}{/if}?n={$nValue|escape:'htmlall':'UTF-8'}">{$nValue|escape:'htmlall':'UTF-8'}</a>*}
                                <a href="#" data-nb="{$nValue|escape:'htmlall':'UTF-8'}">{$nValue|escape:'htmlall':'UTF-8'}</a>
                            </li>

                        {/if}
                        {assign var="lastnValue" value=$nValue}
                    {/foreach}
                </ul>
                <input type="hidden" name="n" class="nb_item" value="{$nValue|escape:'htmlall':'UTF-8'}" />
            </div>

         <!--   <span class="displaying">Показано 20 из 65 товаров</span>   -->
        </div>
</form>
{/if}
14 Август 2014, 16:09:29
Ответ #8
  • Новичок
  • *
  • Сообщений: 31
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
это все делалось чтоб из <select>, сделать просто список.
14 Август 2014, 17:40:01
Ответ #9
  • Новичок
  • *
  • Сообщений: 31
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Если в nbr-product-page.tpl 
<div class="filter-holder">
            <div class="text-wrap">
                <span>{l s='Show'}:</span>

                <ul id="nb_item">
                   
                    {foreach from=$nArray item=nValue}
                        {if $lastnValue <= $nb_products}
                            <li {if $n == $nValue}class="active"{/if}>
                                {*<a href="{if !is_array($requestNb)}{$requestNb}{else}{$requestNb.requestUrl}{/if}?n={$nValue|escape:'htmlall':'UTF-8'}">{$nValue|escape:'htmlall':'UTF-8'}</a>*}
                                <a href="#" data-nb="{$nValue|escape:'htmlall':'UTF-8'}">{$nValue|escape:'htmlall':'UTF-8'}</a>
                            </li>

                        {/if}

                    {/foreach}
                </ul>
                <input type="hidden" name="n" class="nb_item" value="{$nValue|escape:'htmlall':'UTF-8'}" />
            </div>

         <!--   <span class="displaying">Показано 20 из 65 товаров</span>   -->
        </div>

убрать  class="nb_item"
то при нажатии на любой фильтр отображается в пагинации правильное кол-во страниц, но тогда сортировка 10,20,50 просто не работает. как быть? вот это blocklayared.js был вставлен код

var id = 1;

    $('#nb_item li a').click(function(){
        var link = $(this);
        var nb = link.data('nb');
        var form = link.parents('form');

        $('.nb_item').val(nb);
        link.parents('ul').find('li').removeClass('active');
        link.parents('li').addClass('active');
        reloadContent();

        return false;
    });
14 Август 2014, 17:52:33
Ответ #10
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
У вас нет повторяющихся ид?
Например,
id="nb_item"встречается 1 раз в коде или в нескольких шаблонах?
14 Август 2014, 18:25:49
Ответ #11
  • Новичок
  • *
  • Сообщений: 31
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
еще есть в loyalty.tpl 
<p>
<input type="submit" class="button_mini" value="{l s='OK' mod='loyalty'}" />
<label for="nb_item">{l s='items:' mod='loyalty'}</label>
<select name="n" id="nb_item">
{foreach from=$nArray item=nValue}
{if $nValue <= $orders|@count}
<option value="{$nValue|escape:'html':'UTF-8'}" {if $nbpagination == $nValue}selected="selected"{/if}>{$nValue|escape:'html':'UTF-8'}</option>
{/if}
{/foreach}
</select>
<input type="hidden" name="p" value="1" />
</p>

14 Август 2014, 19:09:51
Ответ #12
  • Новичок
  • *
  • Сообщений: 31
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
У вас нет повторяющихся ид?
Например,
id="nb_item"встречается 1 раз в коде или в нескольких шаблонах?
Нужно чтобы скрипт
var id = 1;

    $('#nb_item li a').click(function(){
        var link = $(this);
        var nb = link.data('nb');
        var form = link.parents('form');

        $('.nb_item').val(nb);
        link.parents('ul').find('li').removeClass('active');
        link.parents('li').addClass('active');
        reloadContent();

        return false;
    });
Принудительно запускался при загрузки страницы. есть идеи как это сделать?
14 Август 2014, 20:41:23
Ответ #13
  • Ветеран
  • *****
  • Сообщений: 1285
  • Репутация: +13/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Поместить код в
$(document).ready(function()
{
// все что здесь запускается при загрузки страницы
}
15 Август 2014, 11:46:53
Ответ #14
  • Новичок
  • *
  • Сообщений: 31
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Поместить код в
$(document).ready(function()
{
// все что здесь запускается при загрузки страницы
}

ПРоблема в том, что он уже в нем