Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[Решено?..] Поиск по тексту в описании категории (1.5.6)


Recommended Posts

Всем привет!

 

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

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

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

Видел решение когда немного модифицируется стандартный поиск, но там версия более старая (у меня 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/ ....
Как в шаблоне правильно сделать выдачу чтобы без запросов ошибки не было ???
Надіслати
Поділитися на інших сайтах


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

<?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
Надіслати
Поділитися на інших сайтах


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

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

 

Итак: 

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

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

 

Пишем:

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

 

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

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

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.