Jump to content
DimaScorpio

Как реализовать поиск по статьям Opencart3

Recommended Posts

Привет всем

Подскажите как реализовать поиск по статьям

/index.php?route=information/information&information_id=8

обычный поиск ищет только по ссылкам

/index.php?route=product/product&product_id=3

 

ниже код из search.php

<?php

use js3\js3\Controller;
use js3\Utils\Arr;

class Controllerjs3Search extends Controller {

	public function index() {
		$search = Arr::get($this->request->get, 'search');
		$category_id = Arr::get($this->request->get, 'category_id');

		$url = '';

		if ($search) {
			$url .= '&search=' . urlencode(html_entity_decode($this->request->get['search'], ENT_QUOTES, 'UTF-8'));
		}

		$limit = (int)$this->js3->settings->get('searchStyleSearchAutoSuggestLimit');

		if (!$limit) {
			$limit = 10;
		}

		$filter_data = array(
			'filter_name'        => $search,
			'filter_description' => $this->js3->settings->get('searchStyleSearchAutoSuggestDescription'),
			'start'              => 0,
			'limit'              => $limit,
		);

		if ($category_id) {
			$filter_data['filter_category_id'] = $category_id;
		}

		$this->load->model('js3/filter');
		$this->load->model('js3/image');

		$products = array();

		$results = $this->model_js3_filter->getProducts($filter_data);

		foreach ($results as $result) {
			if ($result['image']) {
				$image = $this->model_js3_image->resize($result['image'], $this->js3->settings->get('image_dimensions_autosuggest.width'), $this->js3->settings->get('image_dimensions_autosuggest.height'), $this->js3->settings->get('image_dimensions_autosuggest.resize'));
				$image2 = $this->model_js3_image->resize($result['image'], $this->js3->settings->get('image_dimensions_autosuggest.width') * 2, $this->js3->settings->get('image_dimensions_autosuggest.height') * 2, $this->js3->settings->get('image_dimensions_autosuggest.resize'));
			} else {
				$image = $this->model_js3_image->resize('placeholder.png', $this->js3->settings->get('image_dimensions_autosuggest.width'), $this->js3->settings->get('image_dimensions_autosuggest.height'), $this->js3->settings->get('image_dimensions_autosuggest.resize'));
				$image2 = $this->model_js3_image->resize('placeholder.png', $this->js3->settings->get('image_dimensions_autosuggest.width') * 2, $this->js3->settings->get('image_dimensions_autosuggest.height') * 2, $this->js3->settings->get('image_dimensions_autosuggest.resize'));
			}

			$price = false;
			$special = false;

			if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) {
				$price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']);

				if ((float)$result['special']) {
					$special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']);
				}
			}

			$products[] = array(
				'quantity'    => (int)$result['quantity'],
				'price_value' => $result['special'] ? $result['special'] > 0 : $result['price'] > 0,
				'product_id'  => $result['product_id'],
				'name'        => html_entity_decode($result['name'], ENT_QUOTES, 'UTF-8'),
				'thumb'       => $image,
				'thumb2'      => $image2,
				'price'       => $price,
				'special'     => $special,
				'href'        => $this->url->link('product/product', '&search=' . urlencode(html_entity_decode($this->request->get['search'], ENT_QUOTES, 'UTF-8')) . '&product_id=' . $result['product_id'] . $url),
			);
		}

		if ($products) {
			$url = '';

			if (isset($this->request->get['search'])) {
				$url .= '&search=' . urlencode(html_entity_decode($this->request->get['search'], ENT_QUOTES, 'UTF-8'));
			}

			if ($this->js3->settings->get('searchStyleSearchAutoSuggestDescription')) {
				$url .= '&description=true';
			}

			if (isset($this->request->get['category_id'])) {
				$url .= '&category_id=' . $this->request->get['category_id'];
			}

			if (isset($this->request->get['sub_category'])) {
				$url .= '&sub_category=' . $this->request->get['sub_category'];
			}

			$products[] = array(
				'view_more' => true,
				'name'      => $this->js3->settings->get('searchStyleSearchViewMoreText'),
				'href'      => $this->url->link('product/search', $url),
			);
		} else {
			$products[] = array(
				'no_results' => true,
				'name'       => $this->js3->settings->get('searchStyleSearchNoResultsText'),
			);
		}

		$this->renderJson('success', $products);
	}

}

вот кусочек кода еще из js

	// Search
	var $search = $('#search').find('input[name=\'search\']');

	$('.search-button').on('click', function () {
		var url = $(this).data('search-url');
		var value = $search.val();
		var category_id = parseInt($search.attr('data-category_id'));

		if (value) {
			url += encodeURIComponent(value);
		}

		if (js['searchStyleSearchAutoSuggestDescription']) {
			url += '&description=true';
		}

		if (category_id) {
			url += '&category_id=' + category_id;
		}

		location = url;
	});

	$search.on('keydown', function (e) {
		if (e.keyCode === 13) {
			$('.search-button').trigger('click');
		}
	});

	$('.search-categories li').on('click', function (e) {
		e.stopPropagation();

		var $this = $(this);
		$('.search-categories-button').html($this.html());
		$search.attr('data-category_id', $this.attr('data-category_id'))
	});

	// Autosuggest
	if (js['searchStyleSearchAutoSuggestStatus']) {
		$search.typeahead({
			hint: true,
			minLength: 1,
			autoSelect: true
		}, {
			async: true,
			display: 'name',
			limit: Infinity,
			source: function (query, processSync, processAsync) {
				var data = {
					search: query
				};

				var category_id = parseInt($search.attr('data-category_id'));

				if (category_id) {
					data.category_id = category_id;
				}

				return $.ajax({
					url: 'index.php?route=js3/search',
					data: data,
					dataType: 'json',
					success: function (json) {
						return processAsync(json['response']);
					}
				});
			},
			templates: {
				suggestion: function (data) {
					if (data['view_more']) {
						return '<div class="search-result view-more"><a href="' + data['href'] + '">' + data['name'] + '</a></div>';
					}

					if (data['no_results']) {
						return '<div class="search-result no-results"><a>' + data['name'] + '</a></div>';
					}

					var html = '';

					html += '<div class="search-result"><a href="' + data['href'] + '">';

					if (data['thumb']) {
						html += '<img src="' + data['thumb'] + '" srcset="' + data['thumb'] + ' 1x, ' + data['thumb2'] + ' 2x" />';
					}

					var classes = [];

					if (data['quantity'] <= 0) {
						classes.push('out-of-stock');
					}

					if (!data['price_value']) {
						classes.push('has-zero-price');
					}

					html += '<span class="' + classes.join(' ') + '">';

					html += '<span class="product-name">' + data['name'] + '</span>';

					if (data['price']) {
						if (data['special']) {
							html += '<span><span class="price-old">' + data['price'] + '</span><span class="price-new">' + data['special'] + '</span></span>';
						} else {
							html += '<span class="price">' + data['price'] + '</span>';
						}
					}

					html += '</span>';

					html += '</a></div>';

					return html;
				}
			}

		});

		$('.header-search > span > div').addClass('.tt-empty');

 

 

Меняя с product_id  на  information_id  

Поиск ни чего не видит

Если есть такой модуль  по поиску описания в товарах , статьях , производителя и тд   дайте знать

Share this post


Link to post
Share on other sites

Во-первых: у вас уже нестандартный поиск.

Во-вторых: нет толку от выложенного вами кода js и контроллера, так как вам нужно изменить запросы к бд в модели, чтобы там учитывались и статьи

 

Share this post


Link to post
Share on other sites
6 часов назад, openprice сказал:

Во-первых: у вас уже нестандартный поиск.

Во-вторых: нет толку от выложенного вами кода js и контроллера, так как вам нужно изменить запросы к бд в модели, чтобы там учитывались и статьи

 

по поиску только эти файлы я нашел

о каком файле идет речь?

search.twig

{% macro renderSearchCategories(j3, categories, category_id, index) %}
  {% import _self as self %}
  {% for category in categories %}
    {% set classes = {'selected': category.category_id == category_id} %}
    <li data-category_id="{{ category.category_id }}" class="{{ j3.classes(classes) }} category-level-{{ index }}"><a>{{ category.title }}</a></li>
    {{ self.renderSearchCategories(j3, category.items, category_id, index + 1) }}
  {% endfor %}
{% endmacro %}
{% import _self as self %}
{% if j3.settings.get('catalogSearchStatus') %}
<div id="search" class="dropdown">
  <button class="dropdown-toggle search-trigger" data-toggle="dropdown"></button>
  <div class="dropdown-menu j-dropdown">
    <div class="header-search">
      {% if j3.settings.get('searchStyleSearchCategoriesSelectorStatus') and categories %}
        <div class="search-categories dropdown drop-menu">
          <div class="search-categories-button dropdown-toggle" data-toggle="dropdown">{{ category_id ? category : j3.settings.get('searchStyleSearchCategories') }}</div>

          <div class="dropdown-menu j-dropdown">
              <ul class="j-menu">
                <li data-category_id="0" class="category-level-1"><a>{{ j3.settings.get('searchStyleSearchCategories') }}</a></li>
                {{ self.renderSearchCategories(j3, categories, category_id, 1) }}
              </ul>
          </div>
        </div>
      {% endif %}
      <input type="text" name="search" value="{{ search }}" placeholder="{{ j3.settings.get('searchStyleSearchPlaceholder') }}" class="search-input" data-category_id="{{ category_id }}"/>

    </div>
  </div>
</div>
{% endif %}

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Similar Content

    • By OCdevWizard
      ❖ ОПИСАНИЕ
      Модуль - расширенный поиск. Быстрая и эффективная работа модуля, поиск по большому списку критериев. Большая и расширенная система настроек делают этот модуль абсолютно уникальным и гибким для каждого магазина.
       
      ❖ DEMO САЙТ
      Админка: demo / demo | Смотреть
      Каталог: Смотреть
       
      ❖ СОВМЕСТИМОСТЬ С OPENCART
      ❏ 2.0.0.0, 2.0.1.0, 2.0.1.1, 2.0.2.0, 2.0.3.1, 2.1.0.1, 2.1.0.2, 2.2.0.0, 2.3.0.2, 3.0.0.0, 3.0.1.1, 3.0.1.2, 3.0.2.0, 3.0.3.2
       
      ❖ СОВМЕСТИМОСТЬ С OCSTORE
      ❏ 2.1.0.1, 2.1.0.1.1, 2.1.0.2, 2.1.0.2.1, 2.3.0.2, 2.3.0.2.1, 2.3.0.2.2, 2.3.0.2.3
       
      ❖ ВСТРОЕННЫЙ ПЕРЕВОД
      Украинский, Русский, Английский
       
      ❖ ДРУГИЕ МОДУЛИ ИЗ ЭТОЙ КОЛЛЕКЦИИ
      ❏ Расширенный поиск PRO

      ❖ ПРЕДПРОСМОТР


      ❖ ОСНОВНЫЕ ВОЗМОЖНОСТИ


      ❖ ДЕТАЛИЗИРОВАННЫЙ СПИСОК ВОЗМОЖНОСТЕЙ
      ❏ Модуль поиска с расширенным функционалом, работает без перезагрузки страницы (через Ajax).
      ❏ Модуль работает как: всплывающее окно, сворачиваемый блок, стандартный тип вывода, заменяет поле поиска или страница поиска.
      ❏ Поиск в продуктах по полях: id, name, description, tag, model, sku, upc, ean, jan, isbn, mpn, meta_title, meta_description, meta_keyword, manufacturer_name, category_name, attribute_group_name, attribute_name, attribute_value, option_name, option_value.
      ❏ Поиск в категориях по полях: id, name, description, meta_title, meta_description, meta_keyword.
      ❏ Поиск в производителях по полях: id, name.
      ❏ Поиск в статьях по полях: id, name, description, meta_title, meta_description, meta_keyword.
      ☑ Вы можете минимизировать JS-файл модуля (низкий и средний уровень).
      ☑ Вы можете настроить эффекты анимации для всплывающего модуля.
      ☑ Вы можете редактировать и восстанавливать CSS файлы модуля.
      ❏ Вы можете выбрать с какими группами клиентов будет работать модуль.
      ❏ Поддержка мультиязыков.
      ❏ Поддержка мультимагазинов.
      ❏ Вы можете редактировать основные текстовые данные модуля.
      ❏ Модуль поддерживает RTL или LTR направление текста.
      ❏ Простая установка через OCmod.
      ❏ Модуль требует активации лицензии.
      ☑ - функциональные возможности модуля, которые отмеченные этим знаком доступны только для версии модуля PRO+.
       
      ❖ СИСТЕМНЫЕ ТРЕБОВАНИЯ
      ❏ Перед покупкой, пожалуйста воспользуйтесь бесплатной утилитой "Проверка совместимости системы", для проверки совместимости вашей системы с требованиями модуля.
      ❏ PHP: >= 5.6.
      ❏ Установленная cURL библиотека.
      ❏ Установленный ionCube Loader v10.2.
      ❏ Модуль работает и на localhost, но требует активного подключения к Интернет.
       
      ❖ ПОДДЕРЖКА
      ❏ Пожалуйста, используйте мою службу поддержки, чтобы запросить помощь или сообщить о ошибке.
      ❏ Пожалуйста, не используйте комментарии для сообщений об ошибках.
      ❏ Техническая поддержка предоставляется бесплатно. Обратите внимание, что платная техническая поддержка выполняется в случаях, когда существует конфликт с внешними модулями/продуктами/шаблонами. Пожалуйста, примите это с пониманием того, что разработчик не может сделать собственный модуль на 100% совместимым со всеми внешними расширениями. Вот почему в некоторых случаях необходимо адаптировать модуль к нестандартной конфигурации и системным настройкам магазина. Поэтому решение таких проблем будет оплачиваться отдельно от стоимости модуля.
       
      ❖ ЛИЦЕНЗИЯ
      ❏ Вы можете использовать модуль только на одном своем домене (например http://site.com), а также на под доменах этого домена (например http://test.site.com или http://site.com/test/).
      ❏ Вы не можете продавать или перепродавать этот модуль без письменного разрешения от автора (OCdevWizard).
      ❏ Вы не можете давать в качестве подарка или распространять этот модуль без письменного разрешения от автора (OCdevWizard).
      ❏ Вы не можете представлять этот модуль как ваш собственный. Пожалуйста уважайте время и труд, которое автор потратил на создание этого модуля.
      ❏ Вы не можете удалять копирайт из файлов модуля от автора (OCdevWizard).
      ❏ Вы должны использовать мою службу поддержки для активации лицензии модуля.
       
      ❖ НЕСОВМЕСТИМЫЕ МОДУЛИ (НЕ ВЕСЬ СПИСОК)
      ❏ Mijoshop, Aceshop
    • By OCdevWizard
      600.00 руб
      Скачать/Купить дополнение


      Расширенный поиск PRO+
      ❖ ОПИСАНИЕ
      Модуль - расширенный поиск. Быстрая и эффективная работа модуля, поиск по большому списку критериев. Большая и расширенная система настроек делают этот модуль абсолютно уникальным и гибким для каждого магазина.
       
      ❖ DEMO САЙТ
      Админка: demo / demo | Смотреть
      Каталог: Смотреть
       
      ❖ СОВМЕСТИМОСТЬ С OPENCART
      ❏ 2.0.0.0, 2.0.1.0, 2.0.1.1, 2.0.2.0, 2.0.3.1, 2.1.0.1, 2.1.0.2, 2.2.0.0, 2.3.0.2, 3.0.0.0, 3.0.1.1, 3.0.1.2, 3.0.2.0, 3.0.3.2
       
      ❖ СОВМЕСТИМОСТЬ С OCSTORE
      ❏ 2.1.0.1, 2.1.0.1.1, 2.1.0.2, 2.1.0.2.1, 2.3.0.2, 2.3.0.2.1, 2.3.0.2.2, 2.3.0.2.3
       
      ❖ ВСТРОЕННЫЙ ПЕРЕВОД
      Украинский, Русский, Английский
       
      ❖ ДРУГИЕ МОДУЛИ ИЗ ЭТОЙ КОЛЛЕКЦИИ
      ❏ Расширенный поиск PRO

      ❖ ПРЕДПРОСМОТР


      ❖ ОСНОВНЫЕ ВОЗМОЖНОСТИ


      ❖ ДЕТАЛИЗИРОВАННЫЙ СПИСОК ВОЗМОЖНОСТЕЙ
      ❏ Модуль поиска с расширенным функционалом, работает без перезагрузки страницы (через Ajax).
      ❏ Модуль работает как: всплывающее окно, сворачиваемый блок, стандартный тип вывода, заменяет поле поиска или страница поиска.
      ❏ Поиск в продуктах по полях: id, name, description, tag, model, sku, upc, ean, jan, isbn, mpn, meta_title, meta_description, meta_keyword, manufacturer_name, category_name, attribute_group_name, attribute_name, attribute_value, option_name, option_value.
      ❏ Поиск в категориях по полях: id, name, description, meta_title, meta_description, meta_keyword.
      ❏ Поиск в производителях по полях: id, name.
      ❏ Поиск в статьях по полях: id, name, description, meta_title, meta_description, meta_keyword.
      ☑ Вы можете минимизировать JS-файл модуля (низкий и средний уровень).
      ☑ Вы можете настроить эффекты анимации для всплывающего модуля.
      ☑ Вы можете редактировать и восстанавливать CSS файлы модуля.
      ❏ Вы можете выбрать с какими группами клиентов будет работать модуль.
      ❏ Поддержка мультиязыков.
      ❏ Поддержка мультимагазинов.
      ❏ Вы можете редактировать основные текстовые данные модуля.
      ❏ Модуль поддерживает RTL или LTR направление текста.
      ❏ Простая установка через OCmod.
      ❏ Модуль требует активации лицензии.
      ☑ - функциональные возможности модуля, которые отмеченные этим знаком доступны только для версии модуля PRO+.
       
      ❖ СИСТЕМНЫЕ ТРЕБОВАНИЯ
      ❏ Перед покупкой, пожалуйста воспользуйтесь бесплатной утилитой "Проверка совместимости системы", для проверки совместимости вашей системы с требованиями модуля.
      ❏ PHP: >= 5.6.
      ❏ Установленная cURL библиотека.
      ❏ Установленный ionCube Loader v10.2.
      ❏ Модуль работает и на localhost, но требует активного подключения к Интернет.
       
      ❖ ПОДДЕРЖКА
      ❏ Пожалуйста, используйте мою службу поддержки, чтобы запросить помощь или сообщить о ошибке.
      ❏ Пожалуйста, не используйте комментарии для сообщений об ошибках.
      ❏ Техническая поддержка предоставляется бесплатно. Обратите внимание, что платная техническая поддержка выполняется в случаях, когда существует конфликт с внешними модулями/продуктами/шаблонами. Пожалуйста, примите это с пониманием того, что разработчик не может сделать собственный модуль на 100% совместимым со всеми внешними расширениями. Вот почему в некоторых случаях необходимо адаптировать модуль к нестандартной конфигурации и системным настройкам магазина. Поэтому решение таких проблем будет оплачиваться отдельно от стоимости модуля.
       
      ❖ ЛИЦЕНЗИЯ
      ❏ Вы можете использовать модуль только на одном своем домене (например http://site.com), а также на под доменах этого домена (например http://test.site.com или http://site.com/test/).
      ❏ Вы не можете продавать или перепродавать этот модуль без письменного разрешения от автора (OCdevWizard).
      ❏ Вы не можете давать в качестве подарка или распространять этот модуль без письменного разрешения от автора (OCdevWizard).
      ❏ Вы не можете представлять этот модуль как ваш собственный. Пожалуйста уважайте время и труд, которое автор потратил на создание этого модуля.
      ❏ Вы не можете удалять копирайт из файлов модуля от автора (OCdevWizard).
      ❏ Вы должны использовать мою службу поддержки для активации лицензии модуля.
       
      ❖ НЕСОВМЕСТИМЫЕ МОДУЛИ (НЕ ВЕСЬ СПИСОК)
      ❏ Mijoshop, Aceshop
      Добавил OCdevWizard Добавлено 03.04.2018 Категория Поиск Системные требования PHP >=5.6; Mysqli; cURL; IonCube Loader v10.2 Метод активации По запросу в ЛС Ioncube Loader Требуется OpenCart 3.0
      2.3
      2.2
      2.1
      2.0 ocStore 2.3
      2.2
      2.1 OpenCart.Pro, ocShop Не проверялось Обращение к серверу разработчика Да Старая цена 1400  
    • By DsAlexxx
      Вообщем ищу модуль для формы поиска по нескольким параметрам , что-то подобное 
       
       
    • By SirGrey
      Модуль расширяет возможности стандартного поиска.
      Добавляет поиск по категориям
       
      Довольно часто на сайтах встречается модуль живого поиска с категориями.
      Но при переходе на результаты поиска клиент видит только товары.
      Модуль исправляет это и выводит в результатах поиска категории которые соответствуют поисковому запросу.
       

       
    • By SirGrey
      350.00 руб
      Скачать/Купить дополнение


      Категории в результатах поиска
      Модуль расширяет возможности стандартного поиска.
      Добавляет поиск по категориям
       
      Довольно часто на сайтах встречается модуль живого поиска с категориями.
      Но при переходе на результаты поиска клиент видит только товары.
      Модуль исправляет это и выводит в результатах поиска категории которые соответствуют поисковому запросу.
       

       
      Добавил SirGrey Добавлено 25.06.2020 Категория Поиск Системные требования Метод активации Без активации Ioncube Loader Нет OpenCart 3.0
      2.3 ocStore 3.0
      2.3 OpenCart.Pro, ocShop Не проверялось Обращение к серверу разработчика Нет Старая цена 0  
  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.