Статьи и новости

Генератор SEO-тегов (SEO Tags Generator) для OpenCart 2 и OpenCart 3

500 покупок
Генератор SEO-тегов (SEO Tags Generator) для OpenCart 2 и OpenCart 3
Цена: 1 280 руб.
* Адрес сайта VQmod:

Адрес тестового сайта (необязательно) VQmod:

Нужна платная помощь с установкой?
Каталог дополненийМодулиSEO, карта сайта
Автор: SergeTkach
Покупок: 581 (Средняя оценка: 5)
Совместимость OpenCart 2.0, OpenCart 2.1, OpenCart 2.3, OpenCart 3.0, OCStore 2.1, OCStore 2.3, OCStore 3.0, Opencart.pro 2.1, Opencart.pro 2.3
Модуль обеспечивает автоматическую SEO оптимизацию мета-тегов всех категорий и товаров, что имеет большое значение для SEO продвижения интернет-магазинов.

Он избавляет Вас от лишней рутины при добавлении товаров. Модуль SEO Tags Generator делает работу с OpenCart2 проще и комфортнее, что приближает эту CMS к принципам дружелюбного к пользователю движка сайта.

Сделав простую настройку 1 раз, Вы автоматически оптимизируете тысячи страниц 1 махом, по приемлемым для поисковых систему правилам.

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


ПОЛУЧЕНИЕ КОДА ЛИЦЕНЗИИ!

  1. После покупки Вам отправляется автоматическое письмо с кодом для Вашего домена
  2. Если при покупке Вы не указали домен, то Вы можете сгенерировать кодом на специальной странице. Ссылка на эту страницу указана в файле "Как-получить-код-лицензии.txt". Этот файлнаходится внутри скачанного архива.


ВАЖНО! УСЛОВИЯ ПОКУПКИ!!

Модуль продается "As is" (Как есть). Установка и настройка в стоимость покупки НЕ ВХОДИТ!


Я считаю своей целевой аудиторией взрослых дееспособных людей, которые:

  • Умеют читать и писать осмысленные сообщения, в которых прослеживается суть
  • Понимают экономическую выгоду от покупки готового модуля (что это экономит недели времени и сотню (или сотни) долларов по сравнению с разработкой подобного функционала с нуля).
  • Достаточно хорошо владеют компьютером. Могу установить и настроить модуль по весьма подробной инструкции.
  • А если не могут (или не хотят), то умеют нанять фрилансера или SEO-специалиста, который это сделает.
  • Код данного модуля настолько открыт, что любые доработки может сделать любой продвинутый специалист по OpenCart, поэтому вы никак не зависите от того, может ли автор добавить вам что-то по вашему индивидуальному запросу или нет.
  • Осознают, что при совершении любой экономической сделки для каждой стороны наступают только те правовые обязательства, которые прописаны Договором (в данном случае Лицензионным соглашением, которое представлено внизу текста).
  • Осознают, что мы живем в правовом государстве, где любой человек имеет право принимать или отвергать условия сделки, принимать или отвергать предложение о работе на свое собственное усмотрение. Понятия "я Вас купил" не существует с 1861 года. Любая попытка шантажа и вымогательства в попытке отойти от условий Лицензионного соглашения и Оферты и тем самым увеличить выгоды покупателя за счет ущемления прав автор противоречит действующему законодательству России (где зарегистрирован данный сайт) и любой другой цивилизованной страны.

* ВНИМАНИЕ!
  1. Покупая модуль, Вы даете свое согласие с ЛИЦЕНЗИОННЫМ СОГЛАШЕНИЕМ, которое представлено внизу этого текста. Также Вы соглашаетесь с моей Политикой поддержки!

  2. Изучите ТЕХНИЧЕСКИЕ ТРЕБОВАНИЯ ниже по тексту

  3. Просьба при покупке модуля указывать домен, для которого покупается модуль. Также при необходимости, укажите отладочный локальный домен (*.loc) или поддомен на основном сайте.



ПРЕИМУЩЕСТВА МОДУЛЯ

  1. Генерация мета-тегов на лету в момент формирования страницы

    Нет необходимости перегружать сервер, пытаясь сгенерировать мета-теги с сохранением в базу данных. Нет необходимости генерить что-то заново после очередного добавления ( импорта товара ), а все потому, что 1 раз настроил формулы и забыл. ( Если Вам нужно записывать мета-теги имено в базу данных, то воспользуйтеcь другим моим модулем Handy Product Manager для быстрого и удобного массового редактирования товаров )
  2. Шаблонная генерация текстов с описаниями категорий, товаров, производителей (Добавлено в версии 3.0.0). При этом можно не только генерировать текст с нуля, но просто дописать необходимое типичное сообщение к любому описанию в таком виде: [original_text] А ниже добавляем типичное сообщение. К примеру, информация о доставке, срочной акции, о кол-во продаж этого товара и т.д.
  3. Интеграция с модулем CityManager Pro (раньше назывался GeoIP PRO)

  4. Возможность добавить атрибуты в мета-теги (Добавлено в версии 3.0.0). В настройках модуля можно назначить дефолтные значимые атрибуты, а в настройках каждой категории - указать атрибуты для конкретной данной категории. См переменную [attribute index="1"]
  5. Возможность собрать название категории по цепочке вложения с неполными названиями (к примеру, вложенность категорий Велосипеды -> Горные -> Титановые) можно превратить в текст "Титановые горные велосипеды" с помощью переменной [category_nested]
  6. Поддержка мультиязычности
  7. В модуле необходимо указать дефолтные формулу для генерации мета-тегов для всех категорий, товаров и производителей. А еще, в каждой категории Вы можете обнаружить вкладку "SEO Tags Generator: настройки для категории" (в версиях модуля до 3.0.0 называется "SEO-формулы"), где можете задать отдельные формулы (шаблоны, маски), которые будут применяться только для этой конкретной категории и (или) к ее товарам.
  8. Примеры формул составления автоматические генерируемых мета-тегов прилагаются
  9. Функции для преобразования текста: привести к ВЕРХНЕМУ РЕГИСТРУ или к нижнему регистру, вырезать из названия товара какие-либо ненужные слова
  10.  Оптимальная цена
  11. Код модуля открыт до беспредела с версии 3.5.0, но сохраняется закодированная библиотека для проверки лицензий и парсинга переменных




КАК ЭТО РАБОТАЕТ

Модуль не записывает результат генерации тегов в базу данных!

То есть, мета-теги формируются в тот же момент, когда формируется сама страница. Это происходит независимо, открыл ли ее человек или "парсит" поисковый паук (!).
Кроме того, подход без перезаписи позволяет Вам применить формулу для всех товаров, загруженных ДО установки модуля.

---
Внимание!
При "разноперой" категории мета-теги для товара генерируются:
- По главной категории товара, если она указана (!).
- Если главная категория товара не обозначена, и при этом товар принадлежит только 1 категории, то по формуле этой категории.
- Иначе генерация идет по общей формулей




ФУНКЦИОНАЛ ДОПОЛНИТЕЛЬНЫХ РАСШИРЕНИЙ
  1. Генерация SEO URL делается через родственный модуль — SEO URL Generator FREE
  2. Отмена ввода мета-тега title (в папке "additional" )
  3. Ввод тега H1 (в папке "additional" )
  4. Нумерация страниц в мета-тегах начиная со второй (в папке "additional")
  5. Совмещение работы с модулем CityManager Pro (модификаторы STG_plus_CityManager_for_OpenCart_ocStore_2.x.ocmod.xml и STG_plus_CityManager_for_OpenCart_ocStore_3.0.2.0.ocmod.zipв папке "Дополнительные модификаторы").


СОВМЕСТИМОСТЬ

Работает на ветке 2.х начиная с версии OpenCart 2.1.0.1 (ocStore 2.1.0.1)
Начиная с версии модуля 3.0.0 работает на ветке 3.x (OpenCart 3.0.2.0 и ocStore 3.0.2.0)  

ТЕХНИЧЕСКИЕ ТРЕБОВАНИЯ

На сервере (хостинге) должно быть:

PHP 5.4 + IonСube Loader 5
PHP 5.6 - PHP 7.4 c IonСube Loader 10

Требования к системе OpenCart

Работоспособность модуля проверяется на только что установленной системе без кучи других модулей. Предусмотреть все изменения, которые делают другие модули невозможно, поэтому конфликты с другими модулями не являются ошибкой в самом модуле и требуют дополнительно кастомизации (отладки), что обычно ложится на плечи разработчика магазина. Претензии по ошибкам, возникшим в результате конфликта совместимости модулей в бесплатную поддержку модуля не входят. Допускается проверка работоспособности модуля с установленным модулем SEO PRO и LocalCopy.ocmod.xml

Что в модуле зашифровано?
  • Контроллер админки модуля
  • Библиотека модуля, где происходит проверка лицензии и служебные операции




УСТАНОВКА МОДУЛЯ
 
Установка стандартная - через менеджер расширений OCMOD и описана в файле Установка-Модуля.txt (или install.txt) в архиве с модулем.




ДЕМО МОДУЛЯ

Демо админки:
  • http://seo-tags-generator-ru.sergetkach.com/
  • (!) Разрешено внесение изменений в настройки модуля, в товары и категорий (!)
  • Логин/Пароль: demo/demo
Демо витрины:Проверяйте мета-теги с помощью сайтов
А также в админке при просмотре товаров и категорий также будут видны сгенерированные мета-описания.



ПРИМЕРЫ САЙТОВ, ГДЕ РАБОТАЕТ МОДУЛЬ



СПИСОК ПЕРЕМЕННЫХ МОДУЛЯ SEO TAGS GENERATOR

Чтобы не возникало рассинхронизации между реальными данными модуля и описаниями на разных площадках, где продается модуль, описание переменных смотрите в едином месте на моем сайте - http://sergetkach.com/seo-tags-generator-variables/



ЛИЦЕНЗИОННОЕ СОГЛАШЕНИЕ

Покупая или устанавливая новую версию данного продукта, Вы подтверждаете свое безоговорочное согласие со следующими условиями его использования.
  1. Модуль продается и используется на условиях "Как есть". Модуль представляет собой типичное решение типичной задачи. Проверяйте наличие нужного функционала в демо модуля. В стоимость модуля не входит адаптация продукта под индивидуальные нужды покупателя.
  2. Вам предоставляется неэксклюзивное право на использование модуля на 1 домене. "Перенос" лицензии на другой домен не предполагается. Однако, дополнительная лицензия может быть выдана на отладочные домены, которые соответствуют следующим требованиям:

    - Поддомен на основном домене (test.sitename.com, demo.sitename.com)

    - Поддомен на сайте разработчика (студии) (shopname.studioname.com)

    - Локальный домен вида sitename.loc или sitename.local
  3. Срок отправки кода лицензии — в течение 1 рабочего дня!

  4. Интерфейс текущей версии модуля может немного отличаться от того, который представлен на снимках экрана в презентационных материалах. Это не является дефектом модуля, просто в новых версиях модуля могут быть добавлены новые функции. Однако общие принципы работы модуля остаются теми же самыми.
  5. В случае использования мультимагазина, лицензия выдается на основной домен, на котором будет осуществляться управления всеми магазинами.
  6. Автор  дает полную гарантию, что весь заявленный функционал, кроме экспериментального, будет работать на тех версиях системы, что заявлены в разделе СОВМЕСТИМОСТЬ и при условии соблюдения ТЕХНИЧЕСКИХ ТРЕБОВАНИЙ. В случае неработоспособности из-за ошибок в модуле, обязуется исправить ее в течение 3 рабочих дней с момент получения сообщения об ошибке или в противном случае осуществить возврат с вычетом комиссий платежных систем.
  7. Гарантия устранения ошибок действует 12 месяцев с момента оплаты.
  8. Гарантия НЕ РАСПРОСТРАНЯЕТСЯ на Дополнительные модификаторы(!) из папки "Дополнительные-модификаторы" (раннее называлась "additional"). Они являются бонусными и не входят в стоимость покупки.
  9. Вы теряете гарантию на бесплатную поддержку, если в модуле были сделаны модификации (не зависимо делал ли их я или сторонний разработчик, модуль перестает работать по типичному сценарию и требует индивидуального рассмотрения ситуации)
  10. Гарантия устранения ошибок не распространяется на конфликты совместимости модулей. То есть, говорить, что проблема точно исходит из моего модуля можно только в том случае, если на сайте не установлен ни один другой модуль ( кроме LocalCopy.ocmod.xml ) и при этом исходные файлы OpenCart не были отредактированы вручную.
  11. Гарантия не распространяется на новый экспериментальный функционал, который появляется при выпуске бета-версии модуля (добавляется слово Бета-версия после номера версии)
  12. Покупая и продолжая использовать модуль Вы соглашаетесь с "Политикой поддержки"
  13. При оценке возможного ущерба от использования купленного программного обеспечения, в котором была ошибка, максимальная ответственность автора и (или) продавца не может превышать стоимость дефектного ПО, которую покупатель оплатил по факту.

  14. Автор оставляет за собой право отказывать в поддержке в случае, если клиент не соблюдает рамки приличия и деловой стиль общения и/или позволяет себе фамильярность, оскорбления или хамство
  15. Модуль содержит зашифрованные файлы, обеспечивающие контроль над лицензиями
  16. Вы отказываетесь от намерения запрашивать открытый исходный код зашифрованных файлов и осознаете, что любая попытка расшифровки файлов или иного взлома модуля является незаконной
  17. Если Вы планируете дорабатывать модуль, необходимо получить согласие автора модуля на такие доработки. (Зачастую я не против внесения изменений в открытый код модуля, но формулировка "купил модуль с надеждой доработать, а тут закрыто" не является основанием для возврата.)
  18. Результаты платной доработки модуля могут включаться в следующие версии без получения согласия от клиента, оплатившего такую доработку.



РЕКОМЕНДУЮ ТАКЖЕ ДРУГИЕ СВОИ МОДУЛИ

Для снижения рутины во время SEO-оптимизации я также подготовил модуль автоматической генерации SEO URL
который массово генерирует ЧПУ для товаров, у которых их нет (к примеру, импортированные из 1С). Для массового редактирования товаров - Handy Product Manager.
/* V3.6.13 (2021.07.23)
----------------------------------------- */
---
Выявлена ошибка при использовании переменной [manufacturer] в шаблонах мета-тегов для товаров.
Она проявлялась в админке товаров.
Notice: Undefined index: manufacturer_id in ..../public_html/admin/controller/extension/module/seo_tags_generator.php on line 1368
Исправлено

---
Обнаружилась ошибка на странице категорий при использовании [min_price] или [max_price]
Notice: Undefined index: discount in /home/d/decozyzv/decozy.ru/public_html/catalog/model/extension/module/seo_tags_generator.php on line 232
Ошибка закралась в предыдущем обновлении.
Исправлено


/* V3.6.12 (2021.07.19)
----------------------------------------- */
---
Выявлена логическая ошибка при нахождении максимальной цены в категории, где у товаров также указаны скидки и акции
Исправлено


/* V3.6.11 (2021.07.16)
----------------------------------------- */
---
Исправлна ошибка превращения переменных с кавычками.

В связи с тем, что с версии 3.6.5 (после подключения системного html-редактора вместо TinyMCE),
у пользователя с CKeditor кавычки в переменных превращаются в html-сущности еще до обработки серверной частью.
В итоге получается двойное превращение кавычек в html-сущности
Цепочка превращения:
  1. [attribute index="1"] - исходный текст
  2. [attribute index="1"] - html-редактор превращает кавычки
  3. [attribute index="1"] - при обработке $_POST значок & заменяется на &
В итоге стандартный код расшифровки не помогает обнаружить переменную с кавычками

  Не работает: html_entity_decode($a_specific_formula['text'], ENT_QUOTES, 'UTF-8');
  Работает   : html_entity_decode(html_entity_decode($a_specific_formula['text'], ENT_QUOTES, 'UTF-8'), ENT_QUOTES, 'UTF-8');
 

Сбой произошел только в заменах переменной из формулы для товаров.
Тогда как переменная из оригинального описания товаров заменяется потому что там уже изначально предполагался системный редактор
и там уже идет двойное декодирование
  html_entity_decode(html_entity_decode($product_info['description'], ENT_QUOTES, 'UTF-8'), ENT_QUOTES, 'UTF-8');

Также был проверен метод isFollowedVar()
В нем переменная с "неправильными" кавычкам обнаруживается благодаря тому, что изначально ищется не по полному совпадению, а по началу строки.

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

Метка: Переменные с кавычками


/* V3.6.10 (2021.07.15)
----------------------------------------- */
---
Выявлена ошибка
Fatal error: Call to undefined method ControllerExtensionModuleOCFilter::getParams() in .../public_html/catalog/controller/extension/module/seo_tags_generator.php on line 504
На OpenCart 2
Оказалось, что архитектура модуля OCFilter для двойки отличается от архитектуры для тройки.
А я этого не предусмотрел. В предыдущих версиях настраивал интеграцию именно на тройке, скопипастив ее на двойку... Упс...
В общем, вырезал код для интеграции с OCFilter из контроллера модуля.
Перенес его в дополнительный модификатор "SEO Tags Generator + OC Filter 1.6" для тройки.

---
Выпущена версия дополнительного модификатора "SEO Tags Generator + OC Filter 1.6"
 - для тройки - просто учитывает изменения в модуле
 - для двойки - реализует функционал с учетом разницы архитекутры модуля
   А! Для двойки отсутствует реализация переменных [min_price] и [max_price]
      Методы для получения соответствующих значений в тройке представлены фильтром, а в двойке - нет

---
Оставил код для приема переменных для будущих возможных интеграций с этим или другими фильтрами.
Но делать такие стыковки стоит только через модификаторы

[count_products]
[min_price]
[max_price]



/* V3.6.9 (2021.07.09)
----------------------------------------- */
---
При использовании модификатора для OCFilter версии 1.4
на SEO Страницах фильтра показывалось общее кол-во товаров для всей категории
без учета выбарнных параметров.
Исправлено, выпущен модификатор под OCFilter версии 1.5

---
Кроме исправления самого модификатора пришлось изменить код в контроллере моего модуля

/* V3.6.8 (2021.07.06)
----------------------------------------- */
--
Устранена ошибка
Undefined variable: a_min_price in catalog/model/extension/module/seo_tags_generator.php on line 309
которая появлялась при использовании переменной [max_price] :)
Видимо, до сих пор этой переменной никто не пользовался.

--
Изменен модификатор для OCFilter
Выяснилось, что в фильтре автоматические страницы больше не индексируются.
Соостветственно, часть этого модификатора утратила смысл.
Осталось только обработка переменных моего модуля на SEO Страницах OCFilter


/* V3.6.7.b (2021.06.21)
----------------------------------------- */
Добавлена совместимость для текущей версиии модуля OCFilter


/* V3.6.7 (2021.06.14)
----------------------------------------- */
---
Привязка атрибутов в контроллере товара на витрине отделена от основного модификатора модуля
в связи с тем, что это иногда вызывает конфликты с другими модулями
и при этом атрбуты в мета-тегах не всегда востребованы.

Если Вы используете в мета-тегах атрибуты, установите модификаторы из папки
Дополнительные-модификаторы/STG_attributes_on/


/* V3.6.6 (2021.06.03)
----------------------------------------- */
---
Пофиксина ошибка Notice: Undefined variable: product_info ... при заходе в админку товара
Она появлялась после попытки сохранить товар при условии, что обязательные данные не были заполнены

---
Пофиксина ошибки, которые появляются после добавления нового языка
Ошибки содержат текст
Notice: Undefined offset: 2
и проявляются в админке категорий, товаров, производителей а также на витрине при открытии страниц этих сущностей на добавленном языке
Проблема была в том, что настройки формул сущесвуют для одного языка, и после добавления нового языка без дополнительных пересохранений настроек
идет обращение к данным, которые еще не существует.
Поэтому добавил модификацию в метод addLanguage() в файле admin/model/localisation/language.php


/* V3.6.5 (2021.06.02)
----------------------------------------- */
---
Пофиксин конфликт редакторов при использовании "TinyMCE 5 редактор для Opencart (Бесплатно) 1.0.0" автора stickpro
Теперь мой модуль использует тот редактор, которые используется в целом в системе

---
Исправлена ошибка, когда в тройке поля для ввода падежей категории отображались, независимо от их включенности в настройках


/* V3.6.4 (2021.05.12)
----------------------------------------- */
---
Во время решения предыдущей проблемы случайно удалена запятая из SQL-запроса,
который выполняется при первой установке модуля.
Проблема исправлена.


/* V3.6.3 (2021.05.07)
----------------------------------------- */
Данное обновление актуально только для тех, кто встречался с подобными ошибками. Потому что оно касается редко используемого функционала.

---
Исправлена проблема с невозможностью сохранить более 10-14 атрибутов в админке категории во вкладке "SEO Tags Generator: настройки для категории"
Для этого изменен тип поля `setting` в таблице `seo_tags_generator_category_setting`

---
Исправлены ошибки
Notice: Undefined index: parent_id in /home/www/sites/oc-store-23023.loc/catalog/model/extension/module/seo_tags_generator.php on line 520
Undefined index: name in /home/www/sites/oc-store-23023.loc/catalog/model/extension/module/seo_tags_generator.php on line 373
Обе проявлялись в случае, если товар не прикреплен ни к одной категории и при этом используется переменная [parent_category_name] и ее падежи.



/* V3.6.2.b (2021.04.12)
----------------------------------------- */
---
Исправлено недоразумение с сохранением лицензии в модуле для OpenCart 3...


/* V3.6.2 (2021.04.09)
----------------------------------------- */
---
Внесены небольшие правки, которые влияют только на использование дополнительного модификатора с названием городов для мультимагазинов
Соответственно, модификаторы для падежей города в мультимазинах также обновлены.
Но, еще раз 10 раз подуймайте перед тем, как их использовать, потому что есть модуль CityManager, где все города уже прописаны...


/* V3.6.1 (2021.03.16)
----------------------------------------- */
---
Исправлена ошибка в момент установки, которая появлась в версии 3.6.0
и появлялась только при установке с нуля.

---
Обнаружена и исправлена ошибка на чистом OpenCart на странице производителя при использовании модуля CityManager.
Пофиксино



/* V3.6.0 (2021.03.02)
----------------------------------------- */
--
Добавлены переменные
  [category_name_singular_genitive]
 
  [parent_category_name]
  [parent_category_name_singular_nominative]
  [parent_category_name_singular_genitive]
  [parent_category_name_plural_nominative]
  [parent_category_name_plural_genitive]

Данные переменные могут использовать при включенных падежах для названия категории

--
Изменен адрес редактора TinyMCE
view/javascript/tinymce/tinymce.min.js
view/javascript/seo_tags_generator/tinymce/tinymce.min.js


/* V3.5.4 (2021.02.12)
----------------------------------------- */
--
Исправлена ошибка моего модуля, которая появляется при редактировании товара в админке после добавления нового языка.


/* V3.5.3 (2020.12.24)
----------------------------------------- */
--
Оказалось, что в версии 3.5.0 парсинг условных конструкций внутри текстового поля
был исправлен только для установочного пакета для OpenCart 2.3...
Пофиксина ошибка для OpenCart 2.1 и OpenCart 3.0
 
 
/* V3.5.2 (2020.11.25)
----------------------------------------- */
--
В версии для OpenCart 2.1
Пофиксина ошибка call to a member function calculate() on null in admin/controller/module/seo_tags_generator.php on line 1299
появившаяся в результате изменений версии модуля 3.5.0
 
 
/* V3.5.1 (2020.11.23)
----------------------------------------- */
--
Пофиксины ошибка, появившиеся в версии 3.5.0 на версии модуля для OpenCart 3
 - с сохранением падежей для категорий
 - с выбором атрибутов в настройках модуля


/* V3.5.0 (2020.11.17)
----------------------------------------- */
--
Открыл код контроллера модуля. Закодированной осталась библиотека, которая парсит переменные

--
Объединил файл stg_helper.php в seo_tags_generator.php
Избавился от задваивания названия модулей в списке модулей из-за этого файла

--
Исправлена версия для OpenCart 3 - неверный Статус модуля в списке модулей
ВНИМАНИЕ!
При обновлении модуля на OpenCart 3/ocStore 3 это повлечет за собой сброс дефолтных формул и настроек модуля.
Поэтому рекомендую сначала сохранить страницу с настройками модуля, нажав клавиши CTRL + S

--
Исправлена ошибка парсинга условных конструкций внутри текстового поля



 

/* V3.4.1 (2020.10.02)
----------------------------------------- */
--
Исправлена ошибка
Undefined variable: h1 in .../catalog/controller/extension/module/stg_helper.php on line 1221
закравшаяся в верси 3.4.0


/* V3.4.0 (2020.09.21)
----------------------------------------- */
--
Добавлен фикс, который позволяет запускать модуль на поддоменах, даже если поддомен не является алиасом основного домена
Это для тех случаев, когда в config.php адрес сайта задан следующим образом:
define('HTTPS_SERVER', 'https://' . $_SERVER['HTTP_HOST'] . '/');

--
Встроена интеграция с модулем CityManager PRO (GeoIp PRO) - теперь не надо никаких модификаторов.
Просто используйте переменные этого модуля - https://opencartforum.com/files/tutorials/320-%7B%3F%7D/
  %CITY% - город,
  %CITY_GC% - город в родительном падеже (кого? чего? нет ...),
  %CITY_PC% - город в предложном падеже (О ком? О чём?)
  %ZONE% - регион,
  %ZONE_GC% - регион в родительном падеже,
  %ZONE_PC% - регион в предложном падеже    
  %COUNTRY% - страна,
  %COUNTRY_GC% - страна в родительном падеже,
  %COUNTRY_PC% - страна в предложном падеже
  %MSG_key% - геосообщение с ключом key, например,
  %MSG_phone% (ключи задаются в админке модуля на вкладке "Геосообщения")
 
* Примечание
Данные переменные НЕ УЧАСТВУЮТ в условных выражениях модуля SEO Tags Generator!
Вряд ли это кому взбредет в голову, тем не менее...


  /* V3.3.9 (2020.04.29)
  ----------------------------------------- */
  --
  Выявлено, что в товарах переменная [static_category_h1] не работала, если в мета-тегах при этом не использовалась переменная [category_name]
  Исправлено.


  /* V3.3.8 (2020.04.22)
  ----------------------------------------- */
  --
  Выявлено, что переменные [min_price] и [max_price] используют цену в том числе и отключенных товаров
  Исправлено.
 
 
  /* V3.3.7 (2020.04.17)
  ----------------------------------------- */
  --
  Обнаружены и исправлены ошибки при запуске модуля на версии OpenCart 2.2.0.0
  PHP Notice:  Undefined index: image in /home/www/sites/opencart-2200.loc/admin/view/template/module/seo_tags_generator.tpl on line 237
  Fatal error: Uncaught Error: Class 'Tax' not found in /home/www/sites/opencart-2200.loc/admin/controller/module/stg_helper.php on line 15  


  /* V3.3.6 (2020.04.15)
  ----------------------------------------- */
  --
  Обнаружена и исправлена ошибка "Incorrect DATE value" при использовании MySQL > 8 и переменных [min_price] или [max_price]
 

  /* V3.3.5 (2020.02.26)
  ----------------------------------------- */
  --
  Оказалось, что придумать какой-то произвольный набор символов для временной замены скобок, чтобы он при этом
  не были ни тегом, ни комментарием, ни чем-то еще в программировании - не так уж и просто (ну или фантазия плохо сработала)
  В общем, заменил скобки на слова left_bracket и right_bracket.
  Теперь то уж наверняка!.. Надеюсь товаров с такими названиями не существует...
 
 
 
  /* V3.3.4 (2020.02.25)
  ----------------------------------------- */
  --
  Для устранение предыдущего бага был использовано приведение скобок к временному набору символов.
  Набор был выбран неудачно, так как он частично совпадает с тегом комментария в html.
  А тексты, написанные изначально в ворде пестрят подобными комментариями...
 
  --
  Из архива с модулем были удалены файлы для перехода с версии 1.x на версию 2.x модуля
 
 
  /* V3.3.3 (2020.02.11)
  ----------------------------------------- */
  --
  После исправления бага со скобками в версии 3.3.1, оказалось, что это не работает для текстов и заголовков h1
  Исправлено  


  /* V3.3.2 (2020.02.03)
  ----------------------------------------- */
  --
  В модуле для ветки OpenCart 2.3.x обнаружена и исправлена ошибка:
  PHP Notice:  Undefined index: category_name in .../catalog/controller/extension/module/stg_helper.php on line 743
 

  /* V3.3.1 (2020.01.22)
  ----------------------------------------- */
  --
  Исправлен баг, который встречается, если строка, передаваемая в функцию модуля, содержит скобки.
  К примеру, если из названия товара надо вырезать название модели, то можно использовать cut( [product_name] ⋂ [model] )
  Но если название товара содержало скобки, это приводило к багу.


  /* V3.3.0 (2020.01.14)
  ----------------------------------------- */
  --
  Добавлена поддержка php 7.3

 
  /* V3.2.8 (2020.01.09)
  ----------------------------------------- */
  --
  Исправлена проблема с завалом логов ошибками при импорте категорий через модуль импорта.
  Добавлена проверка на существование переменной в файле system/storage/modification/admin/model/catalog/category.php
 
  Строка:
  if ($this->config->get('seo_tags_generator_status')) {
  //...
  }
 
  Заменена на:
  if ($this->config->get('seo_tags_generator_status') && isset($data['stg_specific'])) {
  //...
  }
 
  --
  Выявлена ошибка при использовании в названии базы данных символа тире (-)
    ex: -v_Test
 
  В методе defineTargetTable() был изменен SQL-запрос для определения таблицы с текстовым данными производителя
    Было:
    $sql = "SHOW TABLES FROM " . DB_DATABASE . " like '" . DB_PREFIX . "manufacturer_description'";
    Стало:
    $sql = "SHOW TABLES FROM `" . DB_DATABASE . "` like '" . DB_PREFIX . "manufacturer_description'";
 
  --
  Добавлена версия модуля для OpenCart PRO 2.1.0.2.x
 
 
  /* V3.2.7.a (2019.11.19)
  ----------------------------------------- */
  --
  Перепакован архив под ocStore 3.0.2.0 из-за неверного номера версии в модификаторе
 

  /* V3.2.7 (2019.11.06)
  ----------------------------------------- */
  --
  В модификаторе для OpenCart 2.1 исправлены ошибки в производителя:
    - Undefined index: manufacturer_description
    - Некорректный флаг языка
    
  --
  В папку "Дополнительные-модификаторы" добавлен "STG_GeoIP_for_STG-3" - для тройки
 
  --
  Изменен email для запроса поддержки
 


  /* V3.2.6 (2019.10.25)
  ----------------------------------------- */
  --
  Выявлена ошибка при использовании Падежей категории, если заполнены не все падежи.
  Ошибка исправлена
 
  --
  Переписан файл "Установка-Модуля.txt"
 
  --
  Из Дополнительных-Модификаторов удалены модификаторы для создания Синонима модели и Синонима производителя
 

  /* V3.2.5 (2019.10.15)
  ----------------------------------------- */
  --
  Выявлена ошибка при использовании [category_nested]
  Warning: Invalid argument supplied for foreach() in ...catalog/controller/extension/module/stg_helper.php on line 670
  Исправлено!
 
  --
  Модификатор для добавления H1 адаптирован под OpenCart 3.
  Внимание!
  Установка не стандартрная! Читайте how-to-install.txt
 
  --
  Добавлена совместимость с OpenCart 3.0.3.2 (в данной версии в html-разметке input убраны пробелы перед тегом закрытия />)
 

  /* V3.2.4 (2019.08.07)
  ----------------------------------------- */
  --
  Выявлено, что Генерации тега H1 происходила по формуле, даже если H1 был заполнен в админке
  Ошибка исправлена


  /* V3.2.3 (2019.07.29)
  ----------------------------------------- */
  --
  В OpenCart 2.3.0.2 только сейчас обнаружилась ошибка с meta_h1
  Исправлено!
    
 
  /* V3.2.2 (2019.07.12)
  ----------------------------------------- */
  --
  Обнаружена проблема с поиском минимальной и максимальной цены товаров в категории,
  если на сайте не заданы цены товаров.
  То есть, магазин поделен на города и для каждого города цена задана через вкладку "Скидка" с выбором группы этого города.
  Ошибка устранена
 
  --
  Следующая конструкция при незаполненных падежах категории выдавала Имя категории вместо Цепочки вложенности.
  <if>( [category_name_plural_nominative] ) [category_name_plural_nominative] <else> [category_nested SORT_FROM_PARENT_TO_CHILD] </endif>
  Потому что еще до появления цепочки вложенности там было так прописано и забыто.
  Исправлено
 
  --
  В контроллерах категории и производителей изменен код-зацепка, относительно которого вставляется код модуля
 
  --
  Косметические изменения в интерфейсе
    - Уточнены некоторые формулировки по тексту
    - Добавлен показ генерации H1 в админке категории и производителя
    - Добавлен ввод форумулы H1 и текста в настройках категории. Это вроде как излишек в контексте одной категории.
      Но если копировать настройки в другие, то весьма может пригодиться...
    - В интерфейс модуля внесены переменные, которые появились после выходда версии 3.0
 
  --
  Улучшена документация
    - Создан полный список переменных, которые доступны в модуле - http://sergetkach.com/seo-tags-generator-variables/
    - Созданы новые примеры формул. См. файл "Примеры-формул.txt"
    

  /* V3.2.1 (2019.07.01)
  ----------------------------------------- */
  Обнаружена проблема при одновленменном использовании переменной [category_nested] с разными модификаторами:
  [category_nested SORT_FROM_PARENT_TO_CHILD exclude="1"]
  [category_nested SORT_FROM_PARENT_TO_CHILD]
  Конфликт устранен
 

  /* V3.2.0 (2019.06.28)
  ----------------------------------------- */
  --
  Добавлена переменная [page_number] для категорий и производителей
 
  Использование: <if>( [page_number] > 1) - страница [page_number] </endif>
 
  В принципе, с модулем поставляется модификатор Дополнительные-модификаторы/page-number/,
  Но он работает только для мета-тегов.
  Оказалось, что некторые оптимизаторы используют нумерацию страниц даже в заголовках категорий
 
 
  --
  Добавлен модификатор exclude для переменной [category_nested]
 
  Пример: [category_nested SORT_FROM_PARENT_TO_CHILD exclude="1"]
  Такая запись значит: использовать цепочку вложения категорий, сортировать от родителя к детям, исключить первое звено цепочки
 
  Исходная цепочка "Подбор багажника по модели авто -> Audi -> A6 -> (С7) 2011-2018"
  превратится в: Audi A6 (С7) 2011-2018
 
 
  --
  Добавлена переменная [category_level] для категорий и товаров
 
  Суть переменной в том, что она показывает, какой уровень вложенности у данной категории
  К примеру, есть следующий уровень вложенности категорий:
    Подбор багажника по модели авто -> Audi -> A6 -> (С7) 2011-2018 (см http://aguri.ru)
  Задача:
    Сделать так, чтобы в категории Audi и любой ее подкатегории не отображалась бы название самой первой родительской категории,
    но при этом у самой первой родительской категории ее название бы показывалось
  Как это сделать?
    В дефолтной формуле можно указать
    <if>( [category_level] > 1) [category_nested SORT_FROM_PARENT_TO_CHILD exclude="1"] <else> [category_name] </endif>
    
    Если же такие формулы нужны только для "Подбор багажника по модели авто", то формулу
    нужно вписать прямо в ней и выбрать переключатель "Наследовать" в настройках категории пункт "Наследование формул в дочерних категориях, если те будут пусты:"
 
  Альтернативным путем было бы
  вписать для каждой категории 2-го порядка (Audi, BMW, Chevrolet и тд)
  специфические формулы, где было бы указано: [category_nested sort="1"]
  А для каждой категории третьего порядка: [category_nested sort="2, 1"]
  И для каждой категории четвертого порядка: [category_nested sort="3, 2, 1"]
 
  Через настройки отдельной категории это сделать  возможно , но слишком рутинно, если учесть, что этих категорий десятки
 
 
 
  /* V3.1.0 (2019.06.27)
  ----------------------------------------- */
  --
  Добавлена функция lower_case_first() - уменьшает только первую букву содержимого из скобок
 
  --
  Усовершенствовано дерево категорий в настройках формул для категорий   
  (см вкладку в админке категорий "SEO Tags Generator: настройки для категории" пункт "Скопировать данные формулы в другие категории сайта")
  Раннее при выборе категории, выбирались все ее дочерние
  Теперь Вы сами решаете выбирать только эту категорию или все ее дочерние категории тоже.
 
  --
  Ошибка с пустым экраном при переносе модуля с тествого сайта на рабочий пофиксина в контроллере, который в данной версии был перекодирован
 

 
 
  /* V3.0.4 (2019.06.26)
  ----------------------------------------- */
  [category_nested sort="2,1"] для категорий не захотела запускаться на реальном сайте.
  Оказалось, что при получении формулы для генерации, не раскодировались html-сущности,
  из-за чего кавычки (") не обнаруживались в тексте.
  Ошибка исправлена


  /* V3.0.3 (2019.06.25)
  ----------------------------------------- */
  --
  Исправлена ошибка с условиями <if><esle></endif> в генерируемом тексте для категории
 
  --
  Добавлена обработка переменной [category_nested] для категорий (ранее работала только для товаров)
 
  --
  Исправлена ошибка с h1 товаров при использовании чистого OpenCart c дополнительным модификатором "SEO Tag H1"
 
  --
  При переносе модуля с тестового сайта и при истечении тестовой лицензии обнаружен пустой экран,
  в который невозможно внести актуальную лицензию. Оставалось делать запрос прямо в базу.
  Сделан временный фикс данной проблемы, во вьюшке, и позже будет исправлен в контроллере при следующем перекодировании модуля
 
 
 
 
  /* V3.0.2 (2019.06.13)
  ----------------------------------------- */
  --
  В файле stg_helper.php исправлена еще одна ошибка. Она проявлялась, когда для категории выбрано не генерировать мета-теги или если пусты.
  В мета meta_description попадал meta_keywords
 


  /* V3.0.1 (2019.06.12)
  ----------------------------------------- */
  --
  Исправлена ошибка в файле stg_helper.php, связанная с вызовом метода parser()
 
  --
  Добавлен фикс для категорий при использовании Go Filter
 
  --
  В установочном пакете для системы 2.1 исправлен файл  stg_helper.php - была ошибка связанная с переменной $lang_id
 
 
 

  /* V3.0.0 (Бета-версия) (2019.06.07)
  ----------------------------------------- */
 
 
  --
  Критично важно!
  Изменена логика работы с переменной [price]
    Раннее эта переменная получала акционную цену, если таковая присутствовала, и это происходило в атоматическом режиме.
    Теперь все по-другому!
    [price] - всегда хранит исходную цену (в том числе с учетом disсount) - подробнее о disсount см по ссылке - https://opencart-guide.com/vopros-otvet/chem-skidki-otlichayutsya-ot-akcij-v-opencart.html
    [special] - хранит акционную цену, если таковая есть.

  Как же теперь это все использовать?
  Вот пример:
    <if>([special]) Внимание, скидка! Старая цена [price]. Акционная цена: [special] <else> [price]</endif>
    Что это за "стремные" скобки?
    Ответ смотрите в пункте "Добавлены условные конструкции"
 
 
  --
  Сделаны улучшения
 
    - Добавлена совместимость с системой 3.x - Ура-а-а-а!! :)
   
    - По многочисленным просьбам добавлена генерации тегов h1 для категорий и производителей.
    
    - Изменена настройка "Генерировать H1 товара принудительно:" - так что после обновления проверьте ее на всякий случай.
      Теперь она называется "Генерировать тег H1 для товаров", где можно указать не только Да или Нет, но и если пусто
    
    - А также добавлена генерация описательного текста категорий, товаров и производителей
      Идеальным случаем для использованния данного функционала является ситуация, когда в конце каждого текста необходимо добавить какую-нибудь типичную фразу.
      В таком случае, для сохранения оригинального текста используется переменная [original_text]
      Пример:
        [original_text]
        При заказе на сумму от ххх - доставка по городу бесплатная. Гарантия возврата и обмена - 14 дней!

    - А еще даже в том случае, когда описательный текст не генерируется, в него все равно можно вписывать переменные.
      Внимание!
      Будьте осторожны!
      Есть важный нюанс: переменные и условные конструкции модуля НЕЛЬЗЯ использовать в начале описания товара!
      Почему?
      Потому что, кроме страницы товара (там все будет ок), есть куча списков товаров, где показываются первые предложения из описательного текста.
      Так вот в списках товаров замены не производятся.
      См изображение по ссылке - https://ibb.co/DDHd8FX (или в архиве с модулем в папке "Изображения" картинка "STG_description_product_list.png")
      
    - Улучшен подсчет минимальной цены ( раннее не учитывались значения Discount (Скидки) - упс... )
    
    - Убраны лишние обязательные поля при использовании падежей для названия категории - хм...
      Если Вы не знали о падежах, то ничего страшного - их почти никто не использовал.
      Возможно, благодаря упрощению, их станут использовать чаще. Ведь теперь достаточно заполнять всего 1 поле:
      "Обозначающее слово - для товаров (Название категории в ед.ч. им.пад):"
      Так что использовать падежи стало легче в плане избавления контент-менеджера от лишней работы :)
       
    - Кстати, теперь для обновления больше не нужно удалять модификатор модуля - просто закачиваете установочный файл в "Установка модулей " и все сложится само
    
    - Исправлена архитектура модуля
      Раннее вся магия по замене переменных происходила в модели, что является неверным. Теперь это просиходит во вспомогательном контроллере,
      тогда как в модели остались только запросы к базе данных.
      

  --
  Добавлены функции для преобразования текста
    - lower_case()          - Приводит текст внутри скобок к нижмему регистру: lower_case(Текст) => текст - использование в формуле: lower_case( [product_name] )
    - upper_case()         - Приводит текст внутри скобок к верхнему регистру: upper_case(Текст) => ТЕКСТ - использование в формуле: upper_case( [product_name] )
    - upper_case_first() - Приводит первую букву текста внутри скобок к верхнему регистру: upper_case_first(текст) => Текст - использование в формуле: upper_case_first( [product_name] )
    - strip_tags()            - Вырезает из текста html-теги. При использовании шаблона ЛАЙТШОП и переменной [price], необходимо использовать strip_tags( [price] )
    - cut()                       - Вырезает из переменной заданное слово или заданные слова.
                                         Если в переменной [product_name] хранится текст "Диван август", то cut( [product_name] ⋂ Диван | диван) вырежет из него заданные слова,
                                         оставив только "Август"
                                         * Примечание
                                         Данная функция актуальна, когда товары названы "Диван Август", а Вы хотите добавить к названию дополнительный ключ,
                                         к примеру "Диван из ротанга Август"
                                         В таком случае, Вы:
                                         1) В настройках модуля включаете "Использовать падежи для названия категорий"
                                         2) В категории "Из ротанга" заполняете "Обозначающее слово - для товаров" (Диван из ротанга)
                                         3) В этой же категории во вкладке "SEO Tags Generator: настройки для категории" вписываете нужный шаблон в "Формулы для категории"
                                             ( ПЛОХО )      [category_name_singular_nominative] [product_name] => Диван из ротанга Диван Август
                                             ( ХОРОШО )   [category_name_singular_nominative] cut([product_name] ⋂ Диван) => Диван из ротанга Август
                                             ( АЛЬТЕРНАТИВА )   [product_name]. Категория: [category_name] => Диван Август. Категория: Из ротанга.
                                             ( АЛЬТЕРНАТИВА )   [product_name]. Категория: [category_name_plural_nominative] => Диван Август. Категория: Диваны из ротанга.


  --
  Добавлены переменные
    - [static_category_h1] - хранит значение того Мета тега H1, который заполнен вручную в админке, а не того, который генерится автоматом - учтите это!
    - [static_product_h1] - хранит значение того Мета тега H1, который заполнен вручную в админке
    - [static_manufacturer_h1] - хранит значение того Мета тега H1, который заполнен вручную в админке    
    - [original_text] - переменная, которые хранят исходный текст категории (товаров, производителей) в момент генерации
      Пример использования:
        [original_text] При заказе на сумму от ххх - доставка по городу бесплатная. Гарантия возврата и обмена - 14 дней!

    Добавлены переменные для товаров
    - [upc]
    - [ean]
    - [jan]
    - [isbn]
    - [mpn]
    - [count_sales] - Кол-во продаж товара, если он был продан хотя бы 1 раз
    - [rating] - Рейтинг товара, если есть отзывы
    - [reviews] - Кол-во отзывов, если они есть

    - [attributes]
                        Выводит все атрибуты товара, которые определены в настройках модуля (для всех товаров по умолчанию)
                        или в настройках категории (для товаров данной категории)
                        Выводит атрибуты в таком формате:
                          Название атрибута 1: Значение атрибута 1; Название атрибута 2: Значение атрибута 2; ...
                        Пример:
                          Жесткий диск: 500 GB; Оперативная память: 8 GB ...

    - [attribute index="1"]
                         Выводит только значение атрибута, индекс которого соответствует тому, который задан в Настройка атрибутов
                         Это можно использовать для сокращения кол-ва символов в мета-тегах, заменяя название атрибута на иконку utf-8
                         Пример: ????: [attribute index="1"] => ????: 500 GB

    - [category_nested]
                         Цепочка всех категорий от Главной категории товара до ее Верхней родительской категории.
                         Это нужно, когда даны категории с неполными названиям (к примеру Велосипеды -> Горные -> Титановые)
                         Если товару в качестве главной категории назначена "Титановые", то [category_name] в мета-тегах товара даст нам плохой ключ
                         А вот, как получить более качественный ключ:
                           [category_nested] => Титановые Горные Велосипеды
                           lower_case([category_nested]) => титановые горные велосипеды
                           upper_case_first( lower_case([category_nested]) ) => Титановые горные велосипеды

    - [category_nested SORT_FROM_PARENT_TO_CHILD]
                         Разворачивает цепочку категорий в обратном порядке
                         Пример 1:  Велосипеды -> Горные -> Титановые
                           [category_nested] => Титановые Горные Велосипеды
                           [category_nested SORT_FROM_PARENT_TO_CHILD] => Велосипеды Горные Титановые

                         Пример 2: Одежда -> Для мужчин
                           [category_nested] => Для мужчин Одежда
                           [category_nested SORT_FROM_PARENT_TO_CHILD] => Одежда Для мужчин
                           lower_case([category_nested SORT_FROM_PARENT_TO_CHILD]) => одежда для мужчин

    - [category_nested sort="2,3"]
                         Пример: Главная категория товара - Пальто
                         Категория Пальто имеет следующую цепочку вложенности: Одежда -> Для мужчин -> Верхняя одежда -> Пальто
                         Генерация произойдет вот так:
                           [category_nested] => Пальто Верхняя одежда Для мужчин Одежда
                           [category_nested SORT_FROM_PARENT_TO_CHILD] => Одежда Для мужчин Верхняя одежда Пальто
                           [category_nested sort="1"] => Пальто
                           [category_nested sort="2,3"] => Верхняя одежда Для мужчин
                           lower_case([category_nested sort="2,3"]) => верхняя одежда для мужчин
                           upper_case_first( lower_case([category_nested sort="2,3"]) ) => Верхняя одежда для мужчин


  --
  Добавлены условные конструкции
  Они позволяют проверять наличие значений в переменных, а также выполнять сравнение значение переменной со статически заданным текстом.
  Такие проверки необходимы для составления шаблонов мета-тегов для товаров.
  Вряд ли это сильно пригодится для категорий или производителей.

  Просто проверка
  Простой вариант: проверка на наличие данных в переменной:
    <if>([variable])Текст связанный с наличием переменной [variable]</endif>

    К примеру:
      <if>([rating]) Рейтинг товара: [rating] </endif>
      <if>([rating]) Рейтинг товара: [rating] на основе [reviews] отзывов</endif>
      <if>([manufacturer_synonym])([manufacturer_synonym])</endif>

  Вариант чуть сложнее
  проверка на наличие значения переменной + инструкция, что делаеть, если оно отсутствует:
    <if>([variable])Текст связанный с наличием переменной [variable] <else> иначе другой текст, где также можно использование другую [variable2], которая присутствует всегда</endif>

     К примеру:
       <if>([special]) Акционная цена: [special] <else>Цена: [price]</endif>
       <if>([reviews])Отзывов: [reviews]. Рейтинг: [rating] <else>Купите товар + оставьте отзыв = получите кешбек 25% на следующую покупку</endif>
       <if>([category_name_singular_nominative]) Купить [category_name_singular_nominative] [product_name] <else> [product_name]. Категория: [category_name]</endif>

   Проверка со сравнением
   Можно использовать следующие операторы сравнения
     ==  - равно
     !=   - не равно
     >    - больше
     <    - меньше
     >= - больше или равно
     <= - меньше или равно
     
   Примеры:
     <if>([reviews] > 10) Кол-во отзывов [reviews]</endif>
     <if>([reviews] >= 50) Товар очень популярный: [reviews] отзывов - не хухры-мухры</endif>
     <if>([reviews] < 10) Купи + оставь отзыв = получи кешбек 20% на следующую покупку</endif>
 
    Внимание!
      Имейте ввиду, что переменные [price] и [special] в момент сравнения никак не оформлены + имеют значение в той валюте, которая является валютой сайта по умолчанию,
      а не в той, которую выбрал пользователь сайта - Угу... И что все это значит?...
      ( НЕ СРАБОТАЕТ ) <if>( [price] > 9999 руб. ) Бесплатная доставка по городу </endif>
      ( НЕ СРАБОТАЕТ ) <if>( [price] > 9 999 ) Бесплатная доставка по городу </endif>
      ( НЕ СРАБОТАЕТ ) <if>( [price] > 9,999 ) Бесплатная доставка по городу </endif>
      ( СРАБОТАЕТ )       <if>( [price] > 9999 ) Бесплатная доставка по городу </endif>
    
    Лайфхак!
      Так как условия не могут быть вложенными одно в другое, то для составления сообщения о бесплатной доставке в тексте товара,
      необходимо использовать достаточно сложную конструкцию
      Пример:
      <if>([price] > 10000)Бесплатная доставка по городу</endif> <if>([price] > 30000)и пригороду</endif> <if>([price] > 99000), и даже по области</endif>.


  --
  Другие изменения
    - Изменено название вкладки модуля в категориях: SEO формулы -> SEO Tags Generator: настройки для категории
    - Убран функционал активации временной лицензии по нажатию кнопки в админке модуля. Теперь временную лицензию можно получить только по запросу автору
    - Добавлен Украинский язык для модуля


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


  /* V2.3.12 (2019.05.09)
  ----------------------------------------- */
  --
  Добавлен установочный пакет для OpenCart PRO 2.1.x

  --
  Обнаружена ошибка и исправлена ошибка при использовании кавычек в названиях товаров

  1) Проблема с кодировкой из-за использования htmlentities() (см 2.3.11)
  2) Когда кавычки сохраняются в базу предусмотренным способом (из админки, а не по импорту),
      то использовании функции htmlentities() приводит к тому, что html-сущности  кавычек из базы данных обрабатываются повторно и возникает еще один баг

  Если было записано в базу без замены кавычек (не через стандартную админку)
    В базе данных: "Айфон"
    В мета-тегах заменяется на "Айфон"
    В татйле браузера отображается как "Айфон"

  Если было записано в базу через админку
    В базе данных: "Айфон"
    В мета-тегах заменяется на "Айфон"
    В татйле браузера отображается как "Айфон"
    
  В итоге htmlentities() заменено на preg_replace('/\"/', '"', $string)


  /* V2.3.11.b (2019.04.20)
  ----------------------------------------- */
  Исправлены улучшения, сделанные в 2.3.11 на скорую руку.


  /* V2.3.11.a (2019.04.19)
  ----------------------------------------- */
  Изменен модификатор для Geo IP PRO
  В самом модуле никаких изменений не произошло!


  /* V2.3.11 (2019.04.18)
  ----------------------------------------- */
  --
  Обнаружен и исправлен баг с конструкцией вида: ([variable]). К примеру: (артикул [sku])

  --
  Попутно добавлен обработка двойных кавычек (к примеру, Диван "Федерико") в мета-описании с помощью функцию htmlentities()
  Хотя по идее эти данные обрабатываются при занесении в базу, у некоторых клиентов кавычки попадают в базу необработанными
  из-за различных модулей импорта экспорта, где нет обработки кавычек.


  /* V2.3.10 (2019.03.27)
  ----------------------------------------- */
  После предыдущего фикса выявлена ситуация, когда в $product_info попадают данные в виде массива.
  Поэтому функция trim() в таком случае приводит к ошибке.
  Ошибка исправлена


  /* V2.3.9 (2019.03.14)
  ----------------------------------------- */
  Выявлен случай, когда генерация тегов задана "Если пусты"
  И при этом поля в админке содержали пробел и казались пустыми, хотя не были таковыми с точки зрения программы
  Пропустил поля через вырезание пробелов ( функцией trim() )


  /* V2.3.8 (2019.01.15)
  ----------------------------------------- */
  В случаях, когда в магизне НЕ используется модуль Seo Pro,
  и при этом используются формулы для товаров для отдельно взятых катеорий (не общая формула из настроек модулей),
  и при этом у товара отмечены сразу несколько категорий,
  модуль не знал, какую категорию считать для главной для данного товара.

  Теперь главная категория вычисляется эврестическим методом.
  Считается, что на сайте сначала создаются основные категории (крупные), и только следом добавляются их дочерние.
  Следовательно, если у товара 2 категории, то считается, что его главной категорией является та, у которой больше значение category_id

  Данный метод не сработает корректно, если товар принадлежит 2-ум совершенно разным категориям, не
Основное
Способ распространения Платно
Совместимость OpenCart 2.0, OpenCart 2.1, OpenCart 2.3, OpenCart 3.0, OCStore 2.1, OCStore 2.3, OCStore 3.0, Opencart.pro 2.1, Opencart.pro 2.3
VQmod Нет
Ocmod Да
Статистика
В первый раз файл добавлен 03.04.2017
Последнее изменение 23.07.2021
Просмотров 22445
Покупок 581

Написать

Ваше Имя:


Ваш отзыв: Внимание: HTML не поддерживается! Используйте обычный текст.

Оценка: Плохо           Хорошо

Введите код, указанный на картинке:






Файлы будут доступны после покупки




 
telegram, viber, whatsapp: +7-952-3190-952 skype: cdqpru почта: help@liveopencart.ru вконтакте: liveopencart чат: liveopencartсhat