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

15 Август 2014, 11:50:04
Ответ #15
  • Новичок
  • *
  • Сообщений: 31
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Все пока мыслей нет как это сделать. скорей бы доделать чтоб отвязаться от этого сайта
я переименовывал классы, ничего не дало
если убрать class="nb_item" в строчке <input type="hidden" name="n" class="nb_item" value="{$nValue|escape:'htmlall':'UTF-8'}" />
в файле nbr-product-page.tpl
{if isset($p) AND $p}
{if isset($smarty.get.id_category) && $smarty.get.id_category && isset($category)}
{assign var='requestPage' value=$link->getPaginationLink('category', $category, false, false, true, false)}
{assign var='requestNb' value=$link->getPaginationLink('category', $category, true, false, false, true)}
{elseif isset($smarty.get.id_manufacturer) && $smarty.get.id_manufacturer && isset($manufacturer)}
{assign var='requestPage' value=$link->getPaginationLink('manufacturer', $manufacturer, false, false, true, false)}
{assign var='requestNb' value=$link->getPaginationLink('manufacturer', $manufacturer, true, false, false, true)}
{elseif isset($smarty.get.id_supplier) && $smarty.get.id_supplier && isset($supplier)}
{assign var='requestPage' value=$link->getPaginationLink('supplier', $supplier, false, false, true, false)}
{assign var='requestNb' value=$link->getPaginationLink('supplier', $supplier, true, false, false, true)}
{else}
{assign var='requestPage' value=$link->getPaginationLink(false, false, false, false, true, false)}
{assign var='requestNb' value=$link->getPaginationLink(false, false, true, false, false, true)}
{/if}
<!-- nbr product/page -->
{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}
                    {/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}

<!-- /nbr product/page -->
{/if}

то в пагинации все правильно. но эта сортировка не работает конечно же.
15 Август 2014, 12:01:26
Ответ #16
  • Ветеран
  • *****
  • Сообщений: 1285
  • Репутация: +13/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Если не работает сортировка, то нужно проверить какой класс или ид у этого блока. Потом в js посмотреть какое событие висит на этих класс/ид.
15 Август 2014, 12:03:03
Ответ #17
  • Ветеран
  • *****
  • Сообщений: 1285
  • Репутация: +13/-1
  • Сообщество PrestaShop
    • Просмотр профиля
ПРоблема в том, что он уже в нем
Он в нем, но событие у него click. Если нужно чтобы сработало при загрузке, то убрать click.
15 Август 2014, 12:17:29
Ответ #18
  • Новичок
  • *
  • Сообщений: 31
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Если не работает сортировка, то нужно проверить какой класс или ид у этого блока. Потом в js посмотреть какое событие висит на этих класс/ид.
вот это я не понял. сортировка имею ввиду "10,20,50" если убрать как я писал раньше class="nb_item" то при нажатии на фильтр, в пагинации отображается правильное кол-во страниц. а 10,20,50 перестают работать при нажатии.

Он в нем, но событие у него click. Если нужно чтобы сработало при загрузке, то убрать click.
Убрал еще раньше, сейчас перепроверил, почему то когда убираешь его то даже фильтры не работают. не говоря о 10,20,50
15 Август 2014, 12:21:43
Ответ #19
  • Новичок
  • *
  • Сообщений: 31
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Если не работает сортировка, то нужно проверить какой класс или ид у этого блока. Потом в js посмотреть какое событие висит на этих класс/ид.
если я вас понимаю, то 10,20,50  (она же и есть соритровка) принадлежит <ul id="nb_item">
а вот его 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;
    });
15 Август 2014, 13:08:32
Ответ #20
  • Ветеран
  • *****
  • Сообщений: 1285
  • Репутация: +13/-1
  • Сообщество PrestaShop
    • Просмотр профиля
А переименовать пробывали?
В шаблоне
id="nb_item"заменить на
class="nbritem"в js найти все
$('#nb_item и заменить на
$('.nbritem
15 Август 2014, 13:17:49
Ответ #21
  • Новичок
  • *
  • Сообщений: 31
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
А переименовать пробывали?
В шаблоне
id="nb_item"заменить на
class="nbritem"в js найти все
$('#nb_item и заменить на
$('.nbritem
вот только что проделал эти махинации, и как будто ничего не поменялось. т.е. не работает.
так же менял и class="nb_item" история такая же
15 Август 2014, 13:19:25
Ответ #22
  • Новичок
  • *
  • Сообщений: 31
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Надо в скрипте скорей всего что-то менять. а это я не умею, даже не знаю как и что делать.
15 Август 2014, 14:05:39
Ответ #23
  • Ветеран
  • *****
  • Сообщений: 1285
  • Репутация: +13/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Можно взять стандартный и сравнить с вашим. Тогда разницу увидишь и исправить можно.
15 Август 2014, 14:32:36
Ответ #24
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Не нужно смешивать сортировку и фильтры. Они работуют отдельно.
В фильтрах нужно только получить значение, которое выбрано в блоке сортировки и пересчитать количество товаров, от него и вывести количество страниц. Не знаю как у вас это реализовано в модуле фильтров. Обычно так делают.
//product count refresh
if(nbProductsIn!=false){
if(isNaN(nbProductsIn) == 0) {
// add variables
var productCountRow = $('.product-count').html();
var nbPage = parseInt($('div.pagination li.current').children().children().html());
var nb_products = nbProductsIn;
if ($('#nb_item option:selected').length == 0)
var nbPerPage = nb_products;
else
var nbPerPage = parseInt($('#nb_item option:selected').val());
isNaN(nbPage) ? nbPage = 1 : nbPage = nbPage;
nbPerPage*nbPage < nb_products ? productShowing = nbPerPage*nbPage :productShowing = (nbPerPage*nbPage-nb_products-nbPerPage*nbPage)*-1;
nbPage==1 ? productShowingStart=1 : productShowingStart=nbPerPage*nbPage-nbPerPage+1;
//insert values into a .product-count
productCountRow = $.trim(productCountRow);
productCountRow = productCountRow.split(' ');
productCountRow[1] = productShowingStart;
productCountRow[3] = (nbProductOut != 'undefined') && (nbProductOut > productShowing) ? nbProductOut : productShowing;
productCountRow[5] = nb_products;
if (productCountRow[3] > productCountRow[5])
productCountRow[3] = productCountRow[5];
productCountRow = productCountRow.join(' ');
$('.product-count').html(productCountRow);
$('.product-count').show();
}
else {
$('.product-count').hide();
}
}
15 Август 2014, 17:21:24
Ответ #25
  • Новичок
  • *
  • Сообщений: 31
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Не нужно смешивать сортировку и фильтры. Они работуют отдельно.
В фильтрах нужно только получить значение, которое выбрано в блоке сортировки и пересчитать количество товаров, от него и вывести количество страниц. Не знаю как у вас это реализовано в модуле фильтров. Обычно так делают.
//product count refresh
if(nbProductsIn!=false){
if(isNaN(nbProductsIn) == 0) {
// add variables
var productCountRow = $('.product-count').html();
var nbPage = parseInt($('div.pagination li.current').children().children().html());
var nb_products = nbProductsIn;
if ($('#nb_item option:selected').length == 0)
var nbPerPage = nb_products;
else
var nbPerPage = parseInt($('#nb_item option:selected').val());
isNaN(nbPage) ? nbPage = 1 : nbPage = nbPage;
nbPerPage*nbPage < nb_products ? productShowing = nbPerPage*nbPage :productShowing = (nbPerPage*nbPage-nb_products-nbPerPage*nbPage)*-1;
nbPage==1 ? productShowingStart=1 : productShowingStart=nbPerPage*nbPage-nbPerPage+1;
//insert values into a .product-count
productCountRow = $.trim(productCountRow);
productCountRow = productCountRow.split(' ');
productCountRow[1] = productShowingStart;
productCountRow[3] = (nbProductOut != 'undefined') && (nbProductOut > productShowing) ? nbProductOut : productShowing;
productCountRow[5] = nb_products;
if (productCountRow[3] > productCountRow[5])
productCountRow[3] = productCountRow[5];
productCountRow = productCountRow.join(' ');
$('.product-count').html(productCountRow);
$('.product-count').show();
}
else {
$('.product-count').hide();
}
}

А куда все это добро девать?
15 Август 2014, 17:25:06
Ответ #26
  • Новичок
  • *
  • Сообщений: 31
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Можно взять стандартный и сравнить с вашим. Тогда разницу увидишь и исправить можно.
он есть. но все изменения делались не просто так, они нужны
15 Август 2014, 18:25:32
Ответ #27
  • Новичок
  • *
  • Сообщений: 31
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Проблема решена, оказалась насколько элементарная хреновина, что стыдно говорить  ;D

Спасибо всем кто помогал!