Стратегия - Бесконечный Список Не Работает


Я хотел реализовать бесконечную прокрутку на своем веб-сайте magento, поэтому я установил расширение Strategery - InfiniteScroll, но оно не работает, сначала я подумал, что это потому, что у меня все еще есть разбиение на страницы, но даже после удаления панели инструментов подкачки оно не работает. Я удалил эти дивы панели инструментов

<div class="toolbar-top">
    <?php echo $this->getToolbarHtml() ?>
</div>

Сверху и снизу. Не могли бы вы помочь мне настроить расширение Strategery - InfiniteScroll?

Author: safin chacko, 2015-05-26

2 answers

Из https://github.com/Strategery-Inc/Magento-InfiniteScroll/wiki/Installation-under-a-different-package---theme:

Если вы скопируете папку "infinitescroll" в свой веб-каталог, файлы в конечном итоге вы попадете под тему по умолчанию. Это должно быть нормально в большинстве установок, потому что Magento возвращается к теме по умолчанию, когда может находить файлы в пользовательских темах. Остальная часть этой статьи охватывает сценарий, в котором плагин неправильно загружен из пакет/тема по умолчанию.

Первое, что вам нужно сделать, это переместить их в пакет/тему, которую вы используете, просто чтобы убедиться, что они будут загружены.

  1. Просмотрите хранилище, чтобы узнать, где находятся файлы. Те, которые находятся внутри "приложения/дизайна/интерфейса/по умолчанию/по умолчанию", должны быть перемещены в ваш пакет/тему: "приложение/дизайн/интерфейс/пакет/тема'.

  2. Посетите следующий URL-адрес: http://www.yourwebsite.com/infinitescroll2/js и сделать уверен, что там печатается какой-то Javascript. Если вы получаете 404, значит, модуль загружен неправильно. Если он пустой или вы получаете исключение, то у модуля , вероятно, возникают проблемы с поиском файлов макета или шаблона.

  3. Как только URL-адрес выше вернет javascript, посетите страницу в своем каталоге и просмотрите ее источник. Убедитесь, что вы можете найти следующую строку в источнике: "infinitescroll/js" - она должна существовать как часть URL-адреса тега СКРИПТА. Если вы не можете его найти тогда у вас проблема совместимости с файлом макета (который в репозитории находится по адресу app/design/frontend/default/default/layout/strategery-infinitescroll.xml).

  4. Однако, если строка существует, то плагин загружен и настроен правильно.

  5. Наконец, как только вы узнаете, что плагин загружается, вам нужно будет настроить параметры в разделе Система -> Конфигурация -> Каталог -> Бесконечная прокрутка для настройки бесконечной прокрутки варианты правильно. Вы найдете два типа селекторов. Первый - это контейнер, по умолчанию называемый "категория-продукты", который "содержит" все товары. категория-товары

Затем вы найдете другой селектор под названием "продукты-сетка", который является селектором товаров. пункт

Эти два селектора необходимо ввести в конфигурацию бесконечной прокрутки в разделе Содержимое и товары. категория-продукты

Следующий: следующий

Вы можете получить код, выполнив второй щелчок по экрану и выбрав "Проверить элемент" в любом современном браузере.

Для того, чтобы это расширение работало с любой темой, тема должна иметь контейнер div, например категория-продукты, а также элемент div, например продукты - сетка.

Также в теме должен быть активен пейджер, иначе расширение не будет работать из-за отсутствия некоторых селекторов.

Для получения дополнительной информации о том, как настроить параметры, перейдите по этой ссылке: http://www.infinite-scroll.com/infinite-scroll-jquery-plugin/

ИЛИ

Если проблема не решена, то

После установки

  1. Добавьте следующее в layout.xml :

    Стратегия/бесконечный список/init.phtml

  2. Скопируйте путь из приложения/дизайна/интерфейса/базы/по умолчанию/шаблона/стратегии в тот же путь в вашей теме

  3. Копировать из обложки/интерфейса/базы/по умолчанию/js/бесконечный список путь к тому же пути в вашей теме кожи

  4. Убедитесь, что путь /js/jquery/infinitescroll существует и содержит четыре файла *.js внутри

  5. Настройка плагина:

    • всегда устанавливайте значение Да в поле Включить jQuery
    • всегда следите за тем, чтобы класс div вашего списка продуктов был таким же, как и в поле содержимого. Тема по умолчанию - класс ".категория-товары" (точка - это первый знак в названии класса)
    • всегда устанавливайте значение Нет в поле Скрыть панель инструментов
  6. Конечно, вы должны прошить весь возможный кэш:) Если не работает - сделайте это:

  7. На странице вручную установите режим сетки, и вы увидите "режим=сетка" в URL. Вот и все, ребята :)

 3
Author: Shakir Khan, 2016-04-28 09:01:39

Причина некоторых расширений, которые изменяют вывод системы в JSON, а не в HTML - я решил ее таким образом: в JQuery-ias.js, в строке 340

return $.get(loadEvent.url, null, $.proxy(function(data) {
            $itemContainer = $(this.itemsContainerSelector, data).eq(0);
            if (0 === $itemContainer.length) {
                $itemContainer = $(data).filter(this.itemsContainerSelector).eq(0);
            }

            if ($itemContainer) {
                $itemContainer.find(this.itemSelector).each(function() {
                    items.push(this);
                });
            }

            self.fire('loaded', [data, items]);

            if (callback) {
                timeDiff = +new Date() - timeStart;
                if (timeDiff < delay) {
                    setTimeout(function() {
                        callback.call(self, data, items);
                    }, delay - timeDiff);
                } else {
                    callback.call(self, data, items);
                }
            }
        }, self), 'html');

Я изменил его следующим образом:

return $.get(loadEvent.url, null, $.proxy(function(data) {
                data = data['maincontent']; // HERE TO CATCH THE RIGHT HTML CONTENT
                $itemContainer = $(this.itemsContainerSelector, data).eq(0);
                if (0 === $itemContainer.length) {
                    $itemContainer = $(data).filter(this.itemsContainerSelector).eq(0);
                }

                if ($itemContainer) {
                    $itemContainer.find(this.itemSelector).each(function() {
                        items.push(this);
                    });
                }

                self.fire('loaded', [data, items]);

                if (callback) {
                    timeDiff = +new Date() - timeStart;
                    if (timeDiff < delay) {
                        setTimeout(function() {
                            callback.call(self, data, items);
                        }, delay - timeDiff);
                    } else {
                        callback.call(self, data, items);
                    }
                }
            }, self), 'json'); // I've changed html by JSon
 0
Author: Gillouze from Belgium, 2016-08-08 13:18:21