загрузка..

SEO Tags Generator + OC FILTER 0 0

Последнее обновление: 03/01/2022 17:10 in SEO Tags Generator
Сообщение отСерж Ткач

Важно!

После выхода OCFilter 4.8.0 модификатор устарел и не был обновлен.

Вместо модификатора, просто используйте в формулах категорий переменную фильтра {filter}
Пример:
[category_name] {filter} - купить тут...

 

Информация, которая следует далее, описывает устаревший модификатор!!

Изначальная функция модификатора

Некоторое время интеграция моего модуля с фильтром OCFilter заключалась в том, чтобы при выборе какого-то параметра в фильтре, этот параметр бы не просто добавлялся в конец фразы, а становился часть названия категории.

К примеру : Медтехника для медучереждений - купить
Станет    : Медтехника для медучереждений Праймед - купить


Для OpenCart 2.x

storage/modification/catalog/controller/product/category.php


if (false !== strpos($meta_title, '{filter}')) {
$meta_title = trim(str_replace('{filter}', $filter_title, $meta_title));
} else {
...

 

Для OpenCart 3.x

system/library/ocfilter.php

public function getPageMetaTitle($meta_title) {
$page_info = $this->getPageInfo();

if ($page_info) {
$meta_title = $page_info['meta_title'];
} else if ($this->filter_title) {
if (false !== strpos($meta_title, '{filter}')) {
$meta_title = trim(str_replace('{filter}', $this->filter_title, $meta_title));
} else {
$meta_title .= ' ' . $this->filter_title;
}
} else {
$meta_title = trim(str_replace('{filter}', '', $meta_title));
}

return $meta_title;
}

 

Для того, что передать обработку этой задачи фильтру, необходимо использовать в формулах категории переменную {filter}.

То есть, необходимо вписать: [category_name] {filter} - купить тут...


Однако, главный вопрос: Для чего это вообще нужно?

Ранее в модуле OC Filter была настройка "Запретить индексацию после выбора", где можно было поставить 1 или 2, чтобы автоматически слепленные тексты, которые были более менее божескими, индексировались и создавали соответствие низкочастотным запросам. Но это утратило смысл. 14 марта 2021 года в этом вопросе была поставлена жирная точка. Автор модуля OCFilter отключил индексацию тех страниц фильтра, которые создаются автоматически путем подбора по заданным параметрам. Соответственно, данный функционал почти что утратил смысл. Подходит только для тех случаев, когда Вы хотите для людей вывести Название категории с выбранным фильтром + какой текст в конце названия. А такая задача случается крайне редко.

Кроме того, некоторые оптимизаторы все таки "допиливают" модуль фильтра так, чтобы автоматически созданные страницы фильтра с 1 выбарнным параметром индексировались.

 

Текущая основная функция модификатора "SEO Tags Generator + OC Filter"

Сейчас  главная задача модификатора "SEO Tags Generator + OC Filter" - сделать так, чтобы при создании SEO Страниц фильтра можно было использовать переменные для категорий из моего модуля, вроде [count_products], [category_nested] и тд.

 

Для тройки это дело начато в версии 1.4. Но там были баги. Для их исправления выпущена версия 1.5. Потом оказалось, что в двойке архитекутра OCFilter не такая, как в тройке и копипаст кода не дал должного результата. Поэтому выпушена версия 1.6, которая учитывает разницу.

 

Однако, даже в версии 1.6 переменные [min_price] и [max_price] в OpenCart 2 / ocStore 2 не будут работать. Связано это с тем, что в тройке фильтр предоставляет методы для получения соответственных значений по выбранным параметрам, а вот для двойки - нет.

 

$this->ocfilter->getMinPrice();
$this->ocfilter->getMaxPrice();

 

 

Технические нюансы

 

Важно!

Модификатор фильтра должен отработать раньше, чем модификатор моего модуля!!

Ведь в контроллере категории catalog/controller/product/category.php мой модификатор цепляется за уже изменный фильтром код категории.

Обычно так оно и происходит, но иногда пользователи устанавливают модификатор, который меняет очередь выполнения модификаторов.

 

 

Пометки для себя

 

===============================

Проблемы с версиями OC Filter под двойку и тройку

===============================

 

Последний раз сталкивался с версией 4.7.5.0.3 (на форуме актуальная версия 4.7.5)

Оказалось, что в тройке в контроллере категорий фильтр использует объект $this->ocfilter, а в двойке нет. А я создал модификатор "SEO Tags Generator: мета-теги в OC Filter 1.5" с расчетом на этот объект.  А в версии модуля SEO Tags Generator V3.6.7.b вписал обращение к объекту фильтра прямо в контроллере своего модуля, чтобы убрать небольшой баг с переменной, которую создает модуль {filter} на странице категории, когда не выбран ни один параметр фильтра (хотя, автор фильтра также собирался устранять эту помарку).

 

В общем, приходится выпиливать OCFilter из контроллера моего модуля... Так появилась версия SEO Tags Generator 3.6.10. Потратил на это дело в совокупности около 10 часов времени.

 

 

===============================

Адаптации пользователей

===============================

 

---

Изменил переменную [count_products], теперь она возвращает не просто 
цифру, а количество товаров + слово 'товар' в правильном склонении.

function getWord($number, $suffix) { $keys = array(2, 0, 1, 1, 1, 2); $mod = $number % 100; $suffix_key = ($mod > 7 && $mod < 20) ? 2: $keys[min($mod % 10, 5)]; return $suffix[$suffix_key];
}
$array = array("товар", "товара", "товаров");
$ocfilter_page_info['total'] = $data['product_total'] .' '. getWord($count, $array);

 

---

// Min & Max Price
$ocfilter_page_info['min_price'] = $this->currency->format($this->ocfilter->getMinPrice(), $this->session->data['currency']);
$ocfilter_page_info['max_price'] = $this->currency->format($this->ocfilter->getMaxPrice(), $this->session->data['currency']);
** Время зависит от часового пояса America/New_York