К основному контенту

Создание истории поиска. часть 1 (сайт)

Сегодня хотел бы рассмотреть создания такого функционала как история поиска в админке. Я не дам готово модуля или файлов в данной статье (если кому то, нужно готовое решение пишите на электронику terel@list.ru). Данный функционал может быть полезен для отслеживания поисковых запросов на своем сайте. Не буду Вас томить, приступим.

Сейчас мы напишем код для истории поиска со стороны сайта. То есть тот функционал, который будет при поиске писать в базу данные, которые потом нам приходятся для отображения в админ панели сайта.
Для этого нам нужно зайти в папку catalog\model\catalog\ и отредактировать файл product.php. Открываем файл и ищем строку
public function getProducts($data = array())
                {


После нее вставляем наш код записи в базу данных с поля поиска
if (isset($this->request->get['search'])) {
                                               $search = $this->request->get['search'];

                                               $select_history = $this->db->query("SELECT * FROM " . DB_PREFIX . "history_search WHERE name = '$search' ");


                                               if ($select_history->num_rows > 0) {
                                                               $this->db->query("UPDATE " . DB_PREFIX . "history_search SET count = (count + 1) WHERE name = '$search'");
                                               } else {
                                                               $this->db->query("INSERT INTO " . DB_PREFIX . "history_search SET name = '$search', date_added = NOW()");
                                               }

                               }

После проделанной работы нам нужно создать таблицу с полями, куда мы будем писать данные по истории поиска.
Приступим.
Создаем таблицу для записи истории поиска.

Для создания таблицы нужно зайти в phpMyAdmin и выбрать свою базу (если она не одна). После чего нужно нажать на кнопку “New” (или могут быть другие варианты добавления новой таблицы).  Нам нужно добавить в таблицу 4 столбика: id, name, count, date_added.
Id нам нужна что бы вести учет записей. В поле «name» пишем – id, в поле type выбираем “int”, в поле “Length/Values” пишем 11. Самое важное что бы в поле A_I стояла «галочка», так как нам нужен автоинкремент.

Name нам нужна для записи поисковой фразы в базу. В поле «name» пишем «name», в поле type выбираем «varchar», в поле “Length/Values” пишем 128 и в поле “collation” пишем utf8_general_ci

Count нам нужно для записи количества одинаковых запросов. Если два разных пользователя будут искать одно и то же слово, то в базу мы его запишем как одно в количестве 2 (запрос на поиск слова).  В поле «name» пишем – count, в поле type выбираем “int”, в поле “Length/Values” пишем 11.

date_added нужно для записи даты когда был сделан запрос на поиск данной фразы или слова. В поле «name» пишем – date_added, в поле type выбираем “date_added”, в поле 
Length/Values” ничего не пишем. Остальные поля оставляем без изменения.


После чего сохраняем нашу новую таблицу в базе.
Продолжения статьи читайте здесь

Комментарии

Популярные сообщения из этого блога

Убрать обязательные поля при редактировании заказа в админке Opencart

Снова пишу для себя заметку, что бы не забыть где искать. Задача: Убрать обязательные поля  при редактировании заказа в админке Opencart. Что бы убрать в контроллере проверку на обязательные поля нужно перейти в catalog/controller/api/customer и найти нужный кусок кода проверки и закомментировать, например нам нужно убрать проверку Фамилии. Это у нас Last Name. Находим код if ((utf8_strlen(trim($this->request->post['lastname'])) < 1) || (utf8_strlen(trim($this->request->post['lastname'])) > 32)) { $json['error']['lastname'] = $this->language->get('error_lastname'); } и комментируем. После чего нужно сохранить и возможно обновить модификацию (если вы ставили какую то модификацию). Что бы убрать красную звездочку, то нужно зайти admin/view/template/sale/order_form.tpl и удалить класс " required " в том месте где не нужно указывать обязательность поля. Что касается 3 вкладки "Оплата"...

Создание истории поиска. часть 2 (админка)

Продолжения статьи  Создание истории поиска. часть 1 (сайт)                       Первым делом сделаем сразу ссылку для захода на страницу нашей истории поиска в админке. Для этого нужно в файле  admin / controller / common / menu   создать ссылку на контроллер.  Находим строчку  «$data['home'] = $this->url->link('common/dashboard', 'token=' . $this->session->data['token'], 'SSL');»  и после нее добавляем  «$data['search_history'] = $this->url->link('extension/search_history', 'token=' .  $this->session->data['token'], 'SSL');». В данном случае мы объявляем переменную для тпловського файла для ссылки. Еще в этом файле нам нужно объявить языковую переменную, например, возьмем код «$data['text_search_history'] = $this->language->get('text_search_history');» и вставим после кода «$this->load->language('common/menu');». ...

Запросы SQL

Здесь я буду записывать запросы. которые мне были нужно в процессе работы на проектами. 1. Убрать пробелы в определенной ячейке -   UPDATE   `table`   SET   `field` =   REPLACE ( `field` , ' ' , '' )   WHERE   `field1`   =   'содержимое'