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

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

Всем привет!

 

Я переделал сайт из магазина в простой сайт где страницы - это описание категорий.

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

В идеале - в строке поиска задаем слово или часть слова и при выдаче получаем список категорий (страниц) где это слово или часть слова встречается.

Видел решение когда немного модифицируется стандартный поиск, но там версия более старая (у меня 1.5.6) и при реализации работало очень криво, а сам я в программировании профан.

Может кто возьмется сделать такую доработку - пишите стоимость и, думаю, договоримся ))

 

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


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

День второй )) Вот к чему пока пришел:

/catalog/model/catalog/category.php

=====добавляем ==================

public function getSearchCategories($keyword) {           
        $sql = "SELECT c.image, c.category_id FROM " . DB_PREFIX . "category c LEFT JOIN " . DB_PREFIX . "category_description cd ON (c.category_id = cd.category_id) WHERE cd.name LIKE '%" . $keyword . "%' OR cd.description LIKE '%" . $keyword . "%' AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND c.status = '1'" ;
        $query = $this->db->query($sql);
        $category_data = array();
            foreach($query->rows as $result) {
                $category_data[$result['category_id']] = $this->getCategory($result['category_id']);
            }
        return $category_data;
    }

Далее добавил в контроллере  /catalog/controller/product/search.php
 
============= добавляем ========================
 
$this->data['search_categories'] = array();
            
            foreach($this->model_catalog_category->getSearchCategories($data['filter_name']) as $category) {
                
                $this->data['search_categories'][] = array(
                    'name' => $category['name'],
                    'href' => $this->url->link('product/category', 'path=' . $category['category_id'])
                );


            }
 
И потом в шаблон /catalog/view/theme/default/template/product/search.tpl
внес место для выдачи:
 
============= добавляем ==============
 <div class="category-list">
    <ul>
<?php if ($search_categories) { ?>


        <?php foreach ($search_categories as $category) { ?>
            <li><a href="/<?php echo $category['href'];?>"><span><?php echo $category['name'];?></span></a></li>
        <?php }  ?>  




<?php } ?>
    </ul>
  </div>
Вот. При внесении запроса теперь выдает список страниц где этот запрос встречается. НО
пишет ошибку если запроса нет:
Notice: Undefined variable: search_categories in /home/ ....
Как в шаблоне правильно сделать выдачу чтобы без запросов ошибки не было ???

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


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

1. код в CODE.

2. полный текст ошибок, а не обрубки.

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


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

Файлы с кодом приложил (это исправленные мной оригинальный файлы). Файл шаблона не прикрепился, поэтому привожу код с начала страницы:

<?php echo $header; ?><?php echo $column_left; ?><?php echo $column_right; ?>
<div id="content"><?php echo $content_top; ?>
  <div class="breadcrumb">
    <?php foreach ($breadcrumbs as $breadcrumb) { ?>
    <?php echo $breadcrumb['separator']; ?><a href="<?php echo $breadcrumb['href']; ?>"><?php echo $breadcrumb['text']; ?></a>
    <?php } ?>
  </div>
  <h1><?php echo $heading_title; ?></h1>
  <b><?php echo $text_critea; ?></b>
  
  
  
  
  
  <div class="category-list">
    <ul>
<?php if ($search_categories) { ?>


        <?php foreach ($search_categories as $category) { ?>
            <li><a href="/<?php echo $category['href'];?>"><span><?php echo $category['name'];?></span></a></li>
        <?php }  ?>  




<?php } ?>
    </ul>
  </div>
Если ввести запрос, то выводятся категории где есть часть такого запроса (index.php?route=product/search&search=поисковоый запрос).

А ошибка такая передается если нет запроса поискового (index.php?route=product/search):

Notice: Undefined variable: search_categories in /home/host1323407/sitedomen.ru/htdocs/stm/catalog/view/theme/default/template/product/search.tpl on line 17
И вот как убрать эту ошибку я не знаю.  Начал изучать php, своими силами через пол годика думаю решу вопрос, но хотелось бы быстрее ))

search.php

category.php

Изменено пользователем afwollis

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


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

ну так перенеси

$this->data['search_categories'] = array();
наверх, к

$this->data['products'] = array();
ты ж его не туда вписал.

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


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

Ура !!! Решение нашел. 

Тупо загуглил текст ошибки (хотя и так перевел что переменная не определена) и посмотрел как что делает и все получилось ))

 

Итак: 

Вместо этой фразы в файле шаблона:

  1. <?php if ($search_categories) { ?>

 

Пишем:

<?php if (isset($search_categories)) { ?>

 

Если переменная не определена, то ничего и не выводится и ошибки нет, а если переменная есть, то все выводится.

Вот. Пользуйтесь на здоровье таким поиском по описанию категорий кто хочет.

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


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

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

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

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

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

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

Войти

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

Войти

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

    • От igoryavorsky
      День добрый. 
      Подскажите какой шаблон Opencart выбрать.
      Нужно чтобы: 1) была синхронизация с 1-С 2) можно было разместить 100 000 -150 000 товаров 3) уровней вложенности не менее 5 3) выпадающее меню
    • От whiteblue
      300.00 руб
      Скачать/Купить дополнение


      Подарки Opencart
      Данный модуль предназначен для повышения продаж, предлагая бесплатные подарки при достижении определенных условий.
       
      Демо
      Админка
      gifts/gifts

      Эти условия устанавливаются в админке модуля. Покупатель должен совершить покупку товаров на определённую сумму или больше.
      Также есть возможность выбрать несколько товаров в разных товарных группах. Отличительной особенностью данного модуля
      является то, что клиент может сам выбрать себе подарок из нескольких назначенных вами. При помощи данного модуля вы будете стимулировать покупателей увеличивать сумму чека.
      Примеры использования данного модуля:
      "купи фотоаппарат и получи в подарок карту памяти", "закажи пиццу и получи бутылку пепси в подарок" и т.д.
      Добавил whiteblue Добавлено 18.06.2018 Категория Модули Системные требования Сайт разработчика http://white-blue.com.ua/ Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart 2.3
      2.1 ocStore 2.3
      2.1 OpenCart.Pro, ocShop  
    • От whiteblue
      Данный модуль предназначен для повышения продаж, предлагая бесплатные подарки при достижении определенных условий.
       
      Демо
      Админка
      gifts/gifts

      Эти условия устанавливаются в админке модуля. Покупатель должен совершить покупку товаров на определённую сумму или больше.
      Также есть возможность выбрать несколько товаров в разных товарных группах. Отличительной особенностью данного модуля
      является то, что клиент может сам выбрать себе подарок из нескольких назначенных вами. При помощи данного модуля вы будете стимулировать покупателей увеличивать сумму чека.
      Примеры использования данного модуля:
      "купи фотоаппарат и получи в подарок карту памяти", "закажи пиццу и получи бутылку пепси в подарок" и т.д.
    • От Maklaosdelay
      300.00 руб
      Скачать/Купить дополнение


      PimPay платежная система на opencart 3.x.x
      Модуль для приема платежей на сайт системой оплат PimPay
       
      Установка:
      1) Зайти в панель управления -> Расширения -> Установка расширений -> загрузить
      2) Зайти в модули -> оплата -> PimPay и активировать
      3) Настроить модуль и принимать платежи =)
       
      Настройка:
      1) Ввести shop id и Secret из личного кабинета PimPay
      2) В личном кабинете PimPay ввести URL адрес обратного вызова магазина (из настроек модуля)
      3) Выбрать статусы заказов после (оплаты, неуспешной оплаты, возврата), нижняя граница и географические зоны на свой выбор
      4) Статус поставить на включено
       
      Прибыльных вам сделок 
      Добавил Maklaosdelay Добавлено 15.12.2018 Категория Платежные системы Системные требования Сайт разработчика Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart 3.0 ocStore 3.0 OpenCart.Pro, ocShop Несовместим  
    • От Maklaosdelay
      Модуль для приема платежей на сайт системой оплат PimPay
       
      Установка:
      1) Зайти в панель управления -> Расширения -> Установка расширений -> загрузить
      2) Зайти в модули -> оплата -> PimPay и активировать
      3) Настроить модуль и принимать платежи =)
       
      Настройка:
      1) Ввести shop id и Secret из личного кабинета PimPay
      2) В личном кабинете PimPay ввести URL адрес обратного вызова магазина (из настроек модуля)
      3) Выбрать статусы заказов после (оплаты, неуспешной оплаты, возврата), нижняя граница и географические зоны на свой выбор
      4) Статус поставить на включено
       
      Прибыльных вам сделок 
  • Последние посетители   0 пользователей онлайн

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

×

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

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