Перейти к содержанию
Bross

[Решено?..] Вывод отдельных категорий в поиске

Рекомендуемые сообщения

Версия ocstore 1.5.3.1
 
Стоит задача вывода отдельных категорий в поиске. На сайте есть некоторое подобие подбора товаров, категорий товаров несколько и хотелось бы вывести для каждого формализованного поиска свою категорию товаров.

 

В контроллере на 168 строке файла /catalog/contoller/product/search.php находится перебор массива категорий по предкам-потомкам.

$categories_1 = $this->model_catalog_category->getCategories(0);
        
        
        foreach ($categories_1 as $category_1) {
            $level_2_data = array();
            
            $categories_2 = $this->model_catalog_category->getCategories($category_1['category_id']);
            
            foreach ($categories_2 as $category_2) {
                $level_3_data = array();
                
                $categories_3 = $this->model_catalog_category->getCategories($category_2['category_id']);
                
                foreach ($categories_3 as $category_3) {
                    $level_3_data[] = array(
                        'category_id' => $category_3['category_id'],
                        'name' => $category_3['name'],
                    );
                }
                
                $level_2_data[] = array(
                    'category_id' => $category_2['category_id'],    
                    'name' => $category_2['name'],
                    'children' => $level_3_data
                );                    
            }
            
            $this->data['categories'][] = array(
                'category_id' => $category_1['category_id'],
                'name' => $category_1['name'],
                'children' => $level_2_data
            );
        }

Обращаем внимание на $categories_1

 

В стандартном шаблоне поиска есть вывод этих категорий в форме.

 
<?php foreach ($categories as $category_1) { ?>
          <?php if ($category_1['category_id'] == $filter_category_id) { ?>
            <option value="<?php echo $category_1['category_id']; ?>" selected="selected"><?php echo $category_1['name']; ?></option>
            <?php } else { ?>
            <option value="<?php echo $category_1['category_id']; ?>"><?php echo $category_1['name']; ?></option>
            <?php } ?>
              <?php foreach ($category_1['children'] as $category_2) { ?>
              <?php if ($category_2['category_id'] == $filter_category_id) { ?>
              <option value="<?php echo $category_2['category_id']; ?>" selected="selected">      <?php echo $category_2['name']; ?></option>
              <?php } else { ?>
              <option value="<?php echo $category_2['category_id']; ?>">      <?php echo $category_2['name']; ?></option>
              <?php } ?>
                <?php foreach ($category_2['children'] as $category_3) { ?>
                <?php if ($category_3['category_id'] == $filter_category_id) { ?>
                <option value="<?php echo $category_3['category_id']; ?>" selected="selected">            <?php echo $category_3['name']; ?></option>
                <?php } else { ?>
                <option value="<?php echo $category_3['category_id']; ?>">            <?php echo $category_3['name']; ?></option>
                <?php } ?>
            <?php } ?>
          <?php } ?>
        <?php } ?>

Вопрос 1: почему в контроллере $categories_1, а в шаблоне $categories?

 

Вопрос 2: как связать в контроллере  $categories_1_1 с шаблоном?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. rtfm. $this->data['categories'][] = array(...

2. ???

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. rtfm. $this->data['categories'][] = array(...

2. ???

 

благодарю.

 

на 2 вопрос ответ такой:

 

$this->data['categories_1_1'][] = array(
'category_id' => $category_1_1['category_id'],
'name'        => $category_1_1['name'],
'children'    => $level_2_data
);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

твоё @'children' => $level_2_data@ идентично уже существующему в @$this->data['categories'][]@

зачем тебе оно еще раз?

или ты там что-то перекручиваешь?

если не перекручиваешь и идентично - нет смысла в конструкции

$this->data['categories_1_1'][] = array(
'category_id' => $category_1_1['category_id'],
'name'        => $category_1_1['name'],

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От Otvet
      300.00 руб
      Скачать/Купить дополнение


      FX AddOn Pack #1 = Редирект-менеджер + Категория/Бренд + <noindex>
      Пакет дополнений к модулю Full IndeX, отдельно от которого работа данных дополнений невозможна или неполноценна
      Включает в себя:
      FX Redirects Manager AddOn FX Manufacturers AddOn FX Yandex noindex AddOn  
      FX Redirects Manager
      Менеджер редиректов. Позволяет перенаправлять со старых/битых страниц на новые. В дальнейшем будет работать и на любых иных страницах.
      Главные отличительные особенности на фоне конкурентов:
      отсутствие влияния на скорость работы сайта (редиректы работают только если страница не найдена) безопасность (редирект не сработает если страница существует и была занесена с список по ошибке)  
      Новый функционал:
      редиректы по маске (beta) редиректы не только со старых/битых страниц но и с любых иных (запрос)
      При наличии спроса будет добавлено:
      редиректы из файла  
       
      FX Manufacturers
      Модуль создающий подкатегории вида Категория/Бренд и выводящий меню производителей в категориях для перехода по ним. Возможна автономная работа, но Мета теги и Заголовки без Full Index не будут уникальны.
      Для чего? Создания посадочных страниц в первую очередь, ибо запросы товара с уточнением производителя практически всегда входят в СЧ-ВЧ
      Функционал:
      Вывод меню брендов (виджет или как угодно назвать можно) Исправление ссылок пагинации/сортировки с учетом производителя Добавление в хлебные крошки Совместимость с OCFilter  
       
      FX Yandex noindex
      Дополнения добавляет опции позволяющие закрыть от индексации повторяющиеся сквозные блоки тегом <!--noindex-->, тем самым сократить дублирующийся контент на страницах навигации
      Работает в паре с Full IndeX 4
      Добавил Otvet Добавлено 03.01.2017 Категория Прочее Системные требования Full Index не ниже версии 3.9.9 Метод активации Автоматическая активация Ioncube Loader Нет OpenCart 3.0
      2.3
      2.2
      2.1
      2.0
      1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6
      1.5.4.1
      1.5.3.1 ocStore 2.3
      2.2
      2.1
      1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.2
      1.5.4.1.1
      1.5.4.1
      1.5.3.1
      1.5.2.1
      1.5.1.3 OpenCart.Pro, ocShop  
    • От whiteblue
      820.00 руб
      Скачать/Купить дополнение


      Модуль HTML в товарах категории (Category data in product )
      Простой модуль для добавлении информации в продукте на уровне категории
      Какие задачи можно решить этим модулем:
      Добавить важную информацию, которая касается товаров только определенной категории Добавить контакты , телефоны ответственных менеджеров данной категории (Ваш менеджер Ирина бла бла бла),  Добавить информацию про акции на уровне категорий Не нужно настраивать схемы Простота и быстрота в администрировании Добавление html кода в карточку продукта на уровне категории H1 в Категории и Товаре  
      Demo:
      http://markets.white-blue.com.ua/demo/demo4/index.php?route=product/product&path=34&product_id=48
       
      Админка:
      http://markets.white-blue.com.ua/demo/demo4/admin/index.php?route=catalog/category/edit&token=NsqPF3XQhoXgo8zRvqf7Hvl8iHf6A31J&category_id=60
      логин: meta
      пароль: meta
       
      Модуль добавляет текстовое поле "meta_product" в категории. Содержимое этого поля будет выводиться во всех товарах категории. Если товар находится в нескольких категориях, значение поля "meta_product" будет выведено из первой найденной категории с непустым значением.
       
       
      Установка модуля:
      Сделать резервную копию сайта и БД. Скачать архив. Не распаковывая его загрузить в админ-панель. Модули - Установка расширения - Загрузить. Обновить модификаторы. Добавил whiteblue Добавлено 06.04.2017 Категория Модули Системные требования Сайт разработчика http://white-blue.com.ua Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart 2.3
      2.1 ocStore 2.3
      2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1  
    • От Bn174uk
      400.00 руб
      Скачать/Купить дополнение


      Управление сайтом через telegram
      Модуль позволяет через telegram управлять сайтом. 
      Это пилотная версия модуля для понимания актуальности дальнейшего развития его.

      У кого хостинг располагается на территории России есть вероятность, что модуль не будет работать из-за блокировки telegram-а в России.

      В данный момент, что уже реализовано:
      Просмотр заказов(общий список и развернутая информация по заказу); Поиск товаров(пока не рекомендую его использовать, если по ключевому слову может быть найдено более 10 товаров) Просмотр товара(пока информация о заказе статичная, а именно нельзя выбирать что отображать)
      Demo bot

      Команды бота:
      /start - начала работы с ботом /orders - вывод заказов /calendar - вызов календаря /pN - где N - id товара, /order_N - где N - номер заказ Что в планах реализовать:
      сделать сортировку заказов; изменения информации о заказе; просмотр зарегистрированных пользователей; и т.д. идей много, и готовы выслушать и другие предложения чего бы хотелось видеть в модуле.
      Инструкция по настройке:

      Шаг 1:
       
      Зайдите в Telegram, в поиске найдите бота BotFather и начните с ним общение. Напишите боту команду /newbot - это команда для создания нового бота. BotFather в ответ напишет, чтобы Вы написали имя бота. Напишите обратным сообщением это имя (Например: Бот для уведомлений о заказах) - это имя можно потом поменять. После ввода имени BotFather запросит ввести username (публичное имя бота) оно должно иметь окончание bot (Например: cmsshopbot или cmsshop_bot); Если такое имя не занято, то в ответ получите сообщение с token вашего нового бота; Перейдите по ссылке на своего бота из сообщения либо найдите его в поиске по username (которое указали) и нажмите /start. Это надо для того, чтобы бот смог Вам писать. Без этого Вы не сможете получать уведомления. Шаг 2:
       
      Выберите нужную версию модуля в зависимости от Вашей версии opencart; Cодержимое папки upload(admin,catalog,system) залить на сайт через ftp.
      Шаг 3:
       
      После перейдите в расширения->модули и найдите "A-Управление сайтом через Telegram"" активируйте его; Зайдите в настройки модуля; Укажите token(в поле "Токен бота") который выдал Вам бот BotFather; Укажите ID юзера кто имеет доступ к боту, а именно к его командам. Если нужно, чтобы доступ был к нескольким пользователям, укажите через запятую эти ID (Например: 12222222222,22222223333,333333333); Как узнать свой ID в Telegram  Все, бот настроен и готов к использованию.
      Для активации модуля писать в ЛС или на почту.

      Системные требования:
      PHP 5.6 или выше; curl; на сайте должен быть https(без него модуль не будет работать); Техническая поддержка:

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

      По всем вопросам и предложениям писать serfbots@gmail.com
      Добавил Bn174uk Добавлено 01.12.2018 Категория Модули Системные требования Сайт разработчика http://cmsshop.com.ua/ Старая цена 1500 Метод активации По запросу в ЛС
      По запросу на почту Ioncube Loader Нет OpenCart 2.3 ocStore 2.3 OpenCart.Pro, ocShop Opencart.pro 2.3  
    • От shchs
      350.00 руб
      Скачать/Купить дополнение


      SearchLive - Поиск с подсказками
      SearchLive - Поиск с подсказками для интернет-магазина.
       
      Модуль "живого" поиска с подсказками совпадений. Поиск ведется по названию, описанию, модели, артикула и тегам товара, с возможностью настройки как полей для поиска, так и релевантности совпадений и набора исключаемых символов. Так же есть настройки вида и количества результатов.
      Файлы, отвечающие за механизм поиска, а соответственно и код в них открыт и легко может быть модифицирован под конкретные нужны.

      Перед установкой дополнения, обязательно ознакомьтесь с порядком новой установки и обновления,
      описанном в файле "readme.rus" в архиве с модулем.
       
      Условия приобретения:
      1. Данное дополнение распространяется по принципу 1 лицензия - 1 домен + 1 тестовый домен.
      2. Поддомены считаются отдельным доменом!
      3. Тестовым доменом может быть только либо технический адреса хостинга, либо поддомен "test" основного домена.
      4. Модуль распространяется по принципу "как есть", со всеми его особенностями, достоинствами
      и недостатками, как имеющимися в данный момент так и выявленными в будущем, поэтому
      любые исправления или изменения модуля возможны только по воле автора и никак иначе.
      5. В модуле используется технология защиты, препятствующая несанкционированному использованию модуля,
      а также ограничивающая изменение файлов с его кодом.
      6. Данная защита не снимается ни при каких условиях.
      7. Применение средств и методов, позволяющих обойти используемую технологию защиты, являются незаконными.
      8. Лицензия возврату не подлежит!
      9. Продукт не является бесплатным программным обеспечением и не может распространяться в какой-либо форме где-либо без письменного согласия автора.
       
      Условия Тех.поддержки:
      1. Вопросы по поддержке вы также можете задавать по почте shchs@ya.ru, либо по скайпу: ashchs
      2. Активация дополнения выполняется в течении суток с момента покупки.
      3. Тех.поддержка оказывается в течении двух суток с момента поступления запроса.
       3.1 Тех.поддержка оказывается при предоставлении доступа в админ.панель и к файлам сайта по протоколу FTP.
      4. В условия тех.поддержки не входит:
       4.1 согласование работы дополнения с какими-то либо другими модулями.
       4.2 настройка и запуск дополнения на версиях opencart/ocstore отличных от явно заявленных.
       4.3 изменение работы или добавление каких-либо новых функций.
      5. Поддержка оказывается только легальным и добросовестным покупателям, купившим данный продукт непосредственно у автора, а также на сайте opencartforum.com
       
      Системные требования:
      1. Установленный на сервере IonCube loader последней версии
      2. Версия PHP минимум 5.3
      3. Opencart/Ocstore 1.5.4.1-1.5.6.x, 2.0.x.x, 2.1.x.x, 2.2.x.x, 2.3.x.x, 3.0.2.x
       
      Приобретая данное дополнение, вы тем самым соглашаетесь с системными требованиями, ограничениями, условиями покупки и тех.поддержки.
       
      Для приобретения дополнительных лицензий обращаться на shchs@ya.ru
       
      Возможно получение тестовой лицензии на 10 дней - писать на shchs@ya.ru
       
      Демо:
      http://test4.shchs.bget.ru/admin/
      demo
      demo
      Добавил shchs Добавлено 22.02.2018 Категория Поиск Системные требования Ioncube Loader Сайт разработчика Старая цена Метод активации Автоматическая активация Ioncube Loader Требуется OpenCart 3.0
      2.3
      2.2
      2.1
      2.0
      1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6
      1.5.5.1
      1.5.5
      1.5.4.1 ocStore 3.0
      2.3
      2.2
      2.1
      1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.2
      1.5.4.1.1
      1.5.4.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х
      OcShop 1.5.6.4.х  
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.