Миссия модуля

Облегчить работу с атрибутами и их значениями. Более наглядно отобразить структуру атрибутов. Применить более современные технологии редактирования. Заменить рутинный ручной труд автоматическими операциями и перейти к пакетной обработке изменений.

Основная идея

Составление набора атрибутов, одинаковых для определенной категории товара и привязка этого набора к категории. Приведение структуры атрибутов и их значений к виду:


Категория товаров
    └── Атрибут 
          └── Значение(список значений) атрибута
		  			

Представление структуры атрибутов и значений в виде деревьев.

Возможности

  • Создание новых групп и атрибутов в одном и том же дереве;
  • Drag-and-drop и copy-paste технологии:
    • Копирование атрибутов одной группы в другую;
    • Перенос атрибутов из группы в группу (смена группы);
    • Drag-and-drop сортировка групп и атрибутов внутри группы;
    • Drag-and-drop добавление атрибутов в категорию;
    • Перенос атрибутов из одной категории в другую (смена категории);
    • Слияние атрибутов (объединение) без потери значений и связей;
  • Фильтрация и поиск групп, атрибутов и значений атрибутов в дереве;
  • Редактирование групп, атрибутов, шаблонов и значений;
  • Подстановка "Дежурного шаблона" в момент добаления атрибута в товар;
  • Пакетная подстановка "Дежурного шаблона" в товары, в момент добаления атрибута в категорию;
  • Настройка алгоритма добавления значений и шаблонов в товар;
  • Оперативный просмотр товаров отфильтрованных по атрибуту или значению;
  • Набор инструментов для упорядочивания атрибутов:
    • Поиск и удаление пустых значений атрибутов;
    • Удаление ссылок на несуществующие атрибуты;
    • Дефрагментация атрибутов. Подготовка группы парсинга;
    • Удаление атрибутов не связанных ни с одним товаром;
    • Объединение дублей атрибутов без потери связей;
    • Автоматическое формирование атрибутов категорий;
  • Мультиязычность, возможность параллельной работы с несколькими языками;

Attributico_v3.0.1/
│── PHP5.4-5.6/
│       ├── upload_v1.5.x-2.2/
│       │     ├── admin/
│       │     │    ├── controller/
│       │     │    ├── language/
│       │     │    ├── model/
│       │     │    └── view/
│       │     └── system/
│       │          └── library/
│       │               └── attributico/
│       │                     ├── array_column.php
│       │                     └── attributico.php
│       └── upload_v2.3.x-3.x/
│
│ 
│── PHP7.0/
│       ├── upload_v1.5.x-2.2/
│       └── upload_v2.3.x-3.x/ 
│
│── PHP7.1
│       ├── upload_v1.5.x-2.2/
│       └── upload_v2.3.x-3.x/
│ 
│── PHP7.2/
│       ├── upload_v1.5.x-2.2/
│       └── upload_v2.3.x-3.x/ 
│
│── ocmod/
│       ├── attribut&co.2.x.ocmod.xml
│       ├── autocomplete.ocmod.xml
│       └── attributico.3.x.ocmod.zip
│
│── vqmod/
│       └── xml/ 
│            ├── attribut&co1_5_x.xml
│            └── autocomplete.xml
│
├── help/
│    ├── img/
│    └── readme.txt
├── News2.2.0/
├── News3.0.1/
└── readme.txt	
					

Различия версий.

Приведенная структура архива соответствует версии модуля > 3.0.1. В более ранних версиях возможно наличие папок 5.4/, 5.5/ и 5.6/. Разница в ioncube-кодировке некоторых файлов модуля для разных версий PHP. Название папки соответствует версии PHP. Файлы, кодированные для PHP 5.4, работают и на более поздних версиях включая PHP 5.6. Внутри этих папок находятся папки upload/ с OpenCart-структурой модуля для разных версий магазинов. Если версия движка вашего магазина, например, 2.1.0.2, то вам нужна папка upload_v1.5.x-2.2/, если версия магазина 2.3.0.2, то папка upload_v2.3.x-3.x/.

Назначение папок и файлов.

  • upload_v1.5.x-2.2/ и upload_v2.3.x-3.x/ папки с файлами собственно модуля для разных версий OpenCart;
  • ocmod/ папка с модификаторами для магазинов второй и третьей версии
    • attribut&co.2.x.ocmod.xml файл модификатор для магазинов второй версии 2.0.x - 2.3.x;
    • autocomplete.ocmod.xml файл модификатор для улучшения работы функции autocomplete для магазинов второй версии 2.0.x - 2.3.x;
    • attributico.3.x.ocmod.zip файл модификатор для магазинов третьей версии 3.x;
  • vqmod/ папка с модификаторами для магазинов версий 1.5.x
    • vqmod/xml/attribut&co1_5_x.xml файл модификатор для версий 1.5.x;
    • vqmod/xml/autocomplete.xml файл модификатор для улучшения работы функции autocomplete для магазинов версий 1.5.x;
  • help/ папка с инструкциями и вспомогательными материалами;
  • News.../ папки с описанием изменений, исправлений и вспомогательными материалами;
  • readme.txt краткая инструкция по установке и работе модуля;

Различия версий.

Для версий 2.x. папка vqumod/ не нужна.

Для версий 1.5.x. копирование папки vqmod/ является обязательным. Зато файлы с расширением .ocmod совсем не нужны.

Для работы модуля, Ваш хостинг должен поддерживать:

  • Ioncube Loader версии 5.0 и выше;
  • PHP версии 5.4 и выше;

Для интеграции функционала модуля и движка магазина используется ocmod для версий 2.x и vqmod для 1.5.x соответственно.

Работает на OpenCart: 1.5.x, 2.0.x, 2.1.x, 2.2.x, 2.3.x, 3.0.x

Работает на ocStore: 1.5.x, 2.1.x, 2.3.x.

Работает на OpenCart.Pro, ocShop и других сборках на базе OpenCart соответствующих версий.

Поддерживаемые языки:

  • english
  • русский
  • модуль мультиязычный, языки добавляются с помощью языковых файлов admin/language/..../attributico.php

Действие лицензии.

Лицензия действует на один домен, и один тестовый домен. Должно быть очевидно, что тестовый домен действительно тестовый.

После покупки модуля, необходимо сделать запрос с подтверждением названий доменов и версии PHP в мой личный почтовый ящик на том сайте, где покупали модуль.

На локальных машинах лицензия действует на все домены с адресом 127.0.0.1.

Установка лицензии.

В комплект поставки модуля, отдельным архивом входит License.zip. В этом архиве и содержатся файлы лицензий. Как и файлы модуля, лицензии распределны по папкам, соответствущим версии PHP. После скачивания и распаковки архива License.zip, необходимо выбрать папку соответствующую вашей версии PHP, содержимое папки скопировать поверх структуры сайта. Лицензию устанавливать ОБЯЗАТЕЛЬНО. После согласования названий доменов и получения подтверждения о готовности лицензии, необходимо этот архив скачать, повторно и переустановить лицензию.

В случае изменений

В последней версии и последующих версиях возможно изменение структуры архива. В любом случае, правильное расположение файла лицензии /system/license/sllic.lic

Возможные ошибки

Если Вы неправильно разместите файл sllic.lic или вообще забудете установить его, то с вероятностью 100% получите сообщение об ошибке: Notice: Undefined variable: vendor in .....\www\admin\controller\module\attributico.php on line...

В том случае, когда Ваш домен не согласован с файлом лицензии, Вы можете использовать модуль в режиме view (просмотра). В этом случае рядом с названием и версией модуля будет высвечиваться надпись (free). Например, Attribut&co v3.0.1 (free).

Установка.

1. Распакуйте архив. Содержимое папки upload.../, соответствующей вашей версии OpenCart скопируйте поверх структуры папок сайта.

2. В административной панели в разделе Дополнения ⇒ Модули должен появиться модуль "Attribut&co". Его необходимо установить.

3. В административной панели в разделе Система ⇒ Пользователи ⇒ Группы пользователей установиить разрешения на просмотр и редактирование для module/attributico

4. Распакуйте архив License.zip. Содержимое папки, соответствующей вашей версии OpenCart скопируйте поверх структуры папок сайта.

5. В административной панели в разделе Дополнения ⇒ Установка дополнений загрузите файлы attribut&co.2.x.ocmod.xml и autocomplete.ocmod.xml для магазинов второй версии (2.x) или attributico.3.x.ocmod.zip для магазинов третьей версии (3.x) из папки ocmod. Для магазинов версии 1.5.x скопируйте папку vqumod/ поверх структуры сайта.

6. В административной панели в разделе Дополнения ⇒ Менеджер дополнений необходимо обновить модификаторы.   

После этого должен появиться пункт меню Каталог ⇒ Атрибуты ⇒ Attribut&co.

Внимание

Если до этого Вы уже использовали модуль более ранних версий и устанавливали модификаторы непосредственно в папку system, необходимо их оттуда удалить.

Т.е. в папке system вашего сайта файлов attribut&co.2.x.ocmod.xml и autocomplete.ocmod.xml быть не должно.

Обязательно

Очистите кэш магазина и браузера.

Некоторые особенности

В некоторых версиях перевода вместо слова Дополнения присутствует слово Расширения.

Для магазинов на движке 1.5.x процедура установки та же кроме пункта 3. Обновление модификаторов не требуется. Вместо кнопок надо использовать ссылки с соответствующими названиями.

Возможные проблемы

Данный модуль использует плагины jQuery UI - v1.11.4 и jQuery UI context menu plugin - v1.7.0 Соответствующие файлы jquery.ui-contextmenu.min.js и jquery.ui.min.js находятся в папке upload/admin/view/javascript/jquery Если аналогичные плагины уже установлены ранее, сравните версии. Если у вас используются старые версии, попробуйте их заменить на указанные выше. Проверьте работоспособность модулей, которые их используют. Если все нормально, то папку upload/admin/view/javascript/jquery копировать не надо. В основном это касается OpenCart 1.5.x, где используется jQuery UI - v1.8 В процессе установки модуля эта версия будет заменена однозначно, иначе Attribut&co работать не будет.

Обновление.

1. Обновление модуля не требует его удаления. После скачивания новой версии надо распаковать архив и содержимое папки upload.../, соответствующей вашей версии магазина из архива скопировать поверх структуры папок сайта.

2. Для магазинов версии 2.x и 3.x надо обязательно переустановить модификаторы ...ocmod.xml или ...ocmod.zip описанным выше способов, затем в административной панели в разделе Дополнения ⇒ Менеджер дополнений необходимо их обновить.

3. Очистите кэш магазина и браузера.

Удаление.

1. В административной панели в разделе Дополнения ⇒ Модули напротив модуля "Attribut&co" - кнопка "Удалить".

2. Для магазинов версии 2.x из папки /system удалить файлы attribut&co.2.x.ocmod.xml, attribut&co.2.3.ocmod.xml, attribut&co.22.ocmod.xml, autocomplete.ocmod.xml. Для магазинов версии 1.5.x из папки /vqmod/xml удалить файлы attribut&co1_5_x.xml, autocomplete.xml

База данных.

В процессе установки модуля в базе данных будет создана таблица "category_attribute" с полями `category_id` INTEGER(11) NOT NULL и `attribute_id` INTEGER(11) NOT NULL.

Начиная с версии 2.0.1 в стандартной таблице OpenCart "attribute_description" создается дополнительное поле `duty` TEXT NOT NULL для хранения Дежурных шаблонов.

В процессе удаления модуля все вышеперечисленные таблицы и поля удаляются.

На вкладке "Настройки" (до версии 2.0.3 вкладка "Общие") есть возможность установить и сохранить некоторые опции, которые влияют на работу модуля.

Общие настройки.

Settings
Пункт Описание
Разделитель атрибутов Применяется если товар может иметь несколько разных значений одного и того же атрибута. Более подробно прочтите Немного теории.
Учитывать порядок сортировки При формировании деревьев будет учтен порядок сортировки, который установил пользователь. Если этот чекбокс не отмечен, будет сделана сортировка по алфавиту.
Смарт скроллинг Включает автопрокрутку узлов дерева внутри фиксированной видимой области. Удобно для больших магазинов при использовании Drag-and-Drop.
Показывать пустые значения Показывать или скрывать пустые значения атрибута или пустые шаблоны. О пустых значениях более подробно Удалить пустые значения.
Товар в новом окне Открывать страницу (карточку) товара в новом окне. На вкладке Товары по двойному клику на выбранном товаре есть возможность переадресации на карточку товара.
Ленивая загрузка Управление режимом загрузки деревьев. Если режим включен, то, как и раньше, дочерние узлы подгружаются по запросу. Если отключен, дерево грузится полностью. Более подробно в разделе Загрузка узлов.
Кэш деревьев атрибутов Управление режимом загрузки деревьев. Если режим включен, то при построении дерева атрибутов на различных вкладках, данные будут получены не из базы данных, а из кэш файла, соответствующего данному дереву. Дополнительно: Очистить кэш деревьев.
Все магазины Управление списком категорий для мультимагазинов. Если режим включен, то в список категорий попадут категории всех магазинов, если отключен, то только категории магазина указанного в системных настройках.

Изменить размеры скроллинга

Высоту области прокрутки можно изменить. Для этого в файле /admin/view/stylesheet/attributico.css надо изменить свойство .smart-scroll {height: 250px;}.

Соблюдайте осторожность при открытии карточки товара в новом окне

Когда Вы вносите изменения в карточке товара, эти изменения происходят непосредственно в БД. Attribut&co "подхватит" эти изменения только в момент загрузки модуля. Если Вы переключитесь обратно на страницу модуля без его перезагрузки, то Attribut&co не будет "знать" о ваших изменениях. Продолжив работу с модулем, Вы рискуете нарушить целостность данных. Применяйте этот режим в крайних случаях, например, когда важно видеть всю панораму Атрибутов. В большинстве случаев достаточно ориентироваться на информационный баннер, где отражаются параметры Атрибута и Группы с которыми осуществлена переадресация на карточку товара.

Настройки деревьев.

Settings

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

Добавление/удаление атрибутов категории.

Settings
Пункт Описание
Добавлять атрибут категории в товары При добавлении нового Атрибута в категорию, он будет автоматически добавлен во все товары этой категории. Значения атрибута во всех товарах этой категории будут заполнены в соответствии с разделом "Добавление значений атрибута в товар".
Удалять атрибут категории из товаров При удалении Атрибута из категории, он будет автоматически удален из всех товаров этой категории.

Наследование.

Settings
Пункт Описание
Добавлять во все подкатегории При добавлении нового Атрибута в категорию, он будет рекурсивно добавлен во все дочерние категории (подкатегории). Значения атрибута во всех товарах этих подкатегорий будут заполнены в соответствии с разделом "Добавление значений атрибута в товар".
Удалять из всех подкатегорий При удалении Атрибута из категории, он будет рекурсивно удален из всех подкатегорий а Значения из всех товаров этих подкатегорий.
Автовыбор подкатегорий с учетом иерархии Рекурсивный выбор всех дочерних подкатегорий отмеченной категории. Если отмечены все дочерние категории, родительская отмечается автоматически.

Алгоритм наследования требует некоторых пояснений. Первые два пункта настроек обеспечивают недостаточно гибкий алгоритм. Что делать, если не во все подкатегории требуется добавлять тот или иной атрибут? Начиная с версии 2.1.0 появилась возможность отметить целевые подкатегории с помощью чекбоксов. Пока ничего не отмечено - действуют правила рекурсивного добавления/удаления (если отмечены первые два пункта). Если отмечена хотя бы одна категория - действие рекурсии отменяется. Т.е. отменяется действие первых двух пунктов. Все действия будут производится только с отмеченными категориями.

Впрочем, теперь даже без первых двух пунктов можно рекурсивно отметить все подкатегории кликнув на чекбокс родительской категории. Для этого пункт Автовыбор подкатегорий с учетом иерархии должен быть отмечен (включен).

Обратите внимание

При включенном режиме иерархии действует и обратное правило - при выборе всех дочерних, родительская выбирается автоматически. Или - при отмене хотя бы одной дочерней, родительская автоматически отменяется.

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

Очень важно

Действия всегда выполняются по отношению к целевой категории независимо от того, отмечена она или нет. Целевая - это та категория, куда вы перетаскиваете атрибут с помощью Drag-and-Drop или Copy-Paste, которая в результате откроется в дереве справа со всеми своими Атрибутами категории.

Добавление значений атрибута в товар.

Settings
Пункт Описание
Значения атрибутов Этот пункт задает алгоритм действий со Значениями атрибута в момент добавления Атрибута в категрию.
Обновлять При добавлении Атрибута в категорию, Значения атрибута будут очищены.
Оставлять При добавлении Атрибута в категорию, Значения атрибута, если они уже есть в товарах, останутся без изменений.
Подставлять дежурный шаблон При добавлении Атрибута в категорию, Значения атрибута в товарах этой категории, будут заменены дежурным шаблоном, если сам этот шаблон не пустой.
Подставлять дежурный только в пустые При добавлении Атрибута в категорию, пустые Значения атрибута в товарах этой категории, будут заменены дежурным шаблоном, если сам этот шаблон не пустой, непустые Значения атрибута останутся без изменений.

Ручной ввод.

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

Внимание!

При отключенном пункте Добавлять атрибут категории в товары, дежурные шаблоны не работают.

Немного теории.

Что такое атрибуты и чем они отличаются, например, от опций, Вы можете прочитать в интернете. Информации достаточно, например, здесь или здесь. Если коротко, то это характеристики, которые позволяют систематизировать товары, сравнивать товары, делать поиск или выборки с помощью фильтров.

В OpenCart принята следующая структура атрибутов:


Группа атрибутов
    └── Атрибут        
					

Значение атрибута относится к конкретному товару:


Товар
  ├── Ссылка на атрибут
  └── Значение атрибута
					

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

Любой товар может иметь несколько атрибутов. Любой атрибут может иметь несколько значений. Значение атрибута это, на самом деле, текстовое поле, куда через разделитель можно вписать несколько значений.

Модуль Attribut&co (визуально) приводит структуру атрибутов и значений к удобному виду и представляет эту структуру в виде дерева.


Группа атрибутов
    └── Атрибут 
          └── Значение(список значений) атрибута
		  			

Понятие Группа атрибутов используется только для систематизации самих атрибутов. Товары же систематизируются по категориям. Поэтому, кажется логичным, сделать привязку определенного списка атрибутов с их значениями к определенной категории. Идея эта не нова и используется многими модулями, но именно эта идея лежит в основе работы данного модуля.


Категория товаров
    └── Атрибут 
          └── Значение(список значений) атрибута
		  			

Термины и определения.

Термин Описание
Разделитель атрибутов Точнее было бы название Разделитель значений атрибутов. Повторимся, что у товара может быть несколько атрибутов и несколько значений атрибутов. Значение записывается в поле типа TEXT в Базе Данных. Чтобы отделить одно значение от другого используется разделитель. Как правило это "/" или ":" или ";" Современные фильтры, например filterpro, умеют разбирать такие конструкции.
Группа Группа Атрибутов используется для систематизации самих Атрибутов.
Атрибут Собственно Атрибут или характеристика товара.
Атрибут категории Атрибут, поставленный в соответствие какой-либо категории. Атрибут может быть поставлен в сотответствие нескольким категориям. Категория может иметь сопоставление с несколькими Атрибутами. Т.е. когда мы говорим Атрибуты категории, то имеем ввиду список Атрибутов, сопоставленных ("принадлежащих") категории.
Шаблон Набор Значений Атрибута через разделитель. Т.е. запись типа Значение1/Значение2/Значение3
Значение Одиночное значение Атрибута, выделенное из Шаблона. Часто Шаблон состоит из единственного Значения
Дежурный шаблон Это Шаблон, который хранится "вместе" с Атрибутом, содержит часто используемый набор Значений и может быть автоматически "присвоен" товару в соответствии с алгоритмом, заданным в настройках.

Обозначение деревьев.

Вкладка Название Описание
1 Атрибуты Группы атрибутов Основное дерево, где можно производить все манипуляции с Группами, Атрибутами и Значениями - редактирование, сортировку, поиск, удаление, добавление.
2 Дежурные шаблоны Дежурные шаблоны Дерево для работы с Дежурными шаблонами. Редактирование, поиск.
3 Атрибуты категорий Категории Структура категорий, показанная в виде дерева.
4 Атрибуты категорий Атрибуты Дерево, аналогичное Группы атрибутов, служит для перетаскивания из него выбранного атрибута в нужную категорию с помощью технологии Drag-and-Drop либо копирования с помощью Copy-Paste. Желательно в структуру включать дочерние Дежурные шаблоны, чтобы напомнить, при добавлении Атрибута в категорию, какие Значения добавятся в товар.
5 Атрибуты категорий Атрибуты категорий Дерево, которое показывает категорию со всеми приписанными ей Атрибутами и их Шаблонами и Значениями. Здесь возможно добавить или удалить атрибуты.
6 Товары Атрибуты товаров Дерево, аналогичное Группы атрибутов, служит для выбора Атрибута, Шаблона или Значения и фильтрации товаров по выбранному.
7 Товары Товары Дерево, где отображаются товары для выбранного Атрибута, Шаблона или Значения. Справа от наименования товара, в скобках выводится id товара в БД и модель. Двойной клик по выбранному товару переадресует на карточку товара.
Любая Узел Узел это по сути элемент дерева. Любое дерево состоит из Узлов. Узлы отображаются в виде папок либо других значков. Могут иметь текстовое название, могут быть пустыми.

Шаблоны и значения.

Чтобы лучше понимать, что такое Значение, стоит напомнить, что это обычный текст, описывающий характеристику (Атрибут) товара. Значение записывается в поле типа TEXT в Базе Данных. Записать туда можно все, что угодно, например : "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua...".

Конечно, мы в это поле обычно пишем что-то более осмысленное, характеризующее именно наш товар. Более того, мы хотим, чтобы во всех товарах, содержащих это Значение, оно было бы одинаковым и по этому Значению можно было бы найти наши товары, например, с помощью фильтра.

С точки зрения разработчиков Opencart, конструкция Товар->Атрибут->Значение является достаточной, но на практике этого маловато. Часто встречается конструкция Товар->Атрибут->Набор Значений.

Например, я продаю модули для Opencart и хочу показать, некоторые из нх совместимы с версиями 1.5.x, 2.0.1, 2.1.x, а другие еще и с версиями 2.3.x, 3.0.x. Я так и напишу в Значения Атрибута Совметимость соответствующих товаров, перечислив версии через разделитель - запятую или, допустим, слэш. v1.5.x/2.0.1/2.1.x и v1.5.x/2.0.1/2.1.x/2.3.x/3.0.x

Opencart никак не отработает такую конструкцию, просто выведет ее целиком в карточке товара. Но умные люди придумали умные фильтры, чтоб расширить возможности структуризации товаров и их поиска по Значениям.

Ниже показано, как обрабатывает Opencart, Attribut&co, filterpro такие наборы Значений. Я их назвал Шаблоны. Не нравится это название? Зайдите в языковый файл и поставьте свое - "Наборы", "Списки" и т.д. Главное понимание, что это такое.

Итак Шаблон это набор Значений Атрибута, записанных через разделитель.

Разделитель атрибутов или Разделитель значений атрибутов придумал не я. Вот как он выглядит в настройках популярных фильтров Mega Filter Pro и filterpro

Необходимо отметить, что Значение уникально для каждого товара. Если в каком-то товаре изменить одну букву в тексте, то остальных товаров это не коснется, даже если до этого Значения совпадали, а у вас появится еще одно Значение. То же самое верно и для Шаблонов.

Принцип фильтрации товаров.

Режим совпадений.

Выбрано Соответствие товаров
Атрибут Все товары, где есть данный Атрибут. Выборка происходит по id, а не по наименованию, поэтому, если в другой Группе будет Атрибут с таким же наименованием, товары, ему соответствующие, в выборку не попадут.
Шаблон Все товары, где есть родительский Атрибут и поле, содержащее характеристики товара точно совпадает с выбранным Шаблоном.
Значение Все товары, где есть родительский Атрибут и поле характеристик товара содержит выбранное Значение .
Settings

Режим расхождений.

Выбрано Соответствие товаров
Атрибут Все товары, где нет данного Атрибута.
Шаблон Все товары, где есть родительский Атрибут и поле, содержащее характеристики товара точно не совпадает с выбранным Шаблоном.
Значение Все товары, где есть родительский Атрибут и поле характеристик товара не содержит выбранное Значение .
Settings

В режиме расхождений иконки папок в дереве товаров меняют цвет.

Загрузка узлов.

Медленная загрузка деревьев может свести на нет все усилия по облегчению работы с атрибутами. Поэтому, для дочерних узлов, таких как Шаблоны и Значения используется, так называемая, ленивая (lazy) загрузка. Эти узлы не загружаются в момент загрузки дерева, а подгружаются по мере обращения к ним, т.е. по запросу. Вот почему при двойном клике на узел Шаблоны или Значения прежде, чем откроется этот узел, приходится наблюдать индикатор загрузки loading.

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

Для открытия узлов используются ajax-запросы, каждый из которых вносит задержку до 1 секунды. Испытания на большом количестве атрибутов показали, что часто происходит зависание.

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

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

Поскольку загрузка узлов производится с помощью асинхронных ajax запросов, иногда в консоли можно увидеть сообщения типа FancytreeNode(#attribute_393, 'New attribute') scrollIntoView(): node is invisible. Это означает, что данные ajax запроса не успели загрузиться до начала их использования. Особенно это проявляется на медленных серверах. Ничего страшного, на результаты работы модуля это не влияет, но стимулирует на совершенствование алгоритма.

Мультиязычность и синхронизация.

Поскольку модуль является мультиязычным, то для каждого языка будут создаваться свои деревья. Для удобства к обозначениям деревьев будем прибавлять языковую приставку .ru или .en там, где это необходимо для объяснения. Для сохраниния целостности БД применяется синхронизация между деревьями. Например, при добавлении нового Атрибута в Группы атрибутов.ru, в дерево Группы атрибутов.en синхронно добавится новый Атрибут с названием "New attribute". То же самое касается Групп атрибутов. А вот Шаблоны, Значения и Дежурные шаблоны синхронно не добавляются.

Синхронизация происходит так же при редактировании Групп, Атрибутов, Шаблонов, Значений. Во всех деревьях, где присутствует изменяемый Узел, изменения происходят синхронно и в соответсвии с выбранным языком.

Редактирование.

Редактирование данных происходит в каждом дереве и для каждого языка отдельно. При необходимости обеспечения целостности данных срабатывает синхронизация.

Для активизации какого либо элемента дерева необходимо сделать Click на этом элементе левой кнопкой мышки.

Для развертывания (раскрытия) какого либо элемента дерева необходимо сделать двойной Click на этом элементе левой кнопкой мышки.

Контекстное меню.

Дейтствия, которые можно осуществлять по отношению к Узлам конкретного дерева отражены в контекстном меню. Контекстное меню индивидуально для каждого дерева. Вызывается контекстное меню правой кнопкой мышки (Курсор должен находиться на узле дерева). Разрешенные для узла действия будут активными в контекстном меню. Действие можно вызвать и по сочетанию "горячих" клавиш.

Действие Горячие клавиши Описание
Редактировать Shift + Click Включается режим однострочного редактора. Можно редактировать любой Узел.
Удалить Del Удаляется выбранный Узел или несколько выбранных Узлов дерева.
Копировать Ctrl + c Выбранный Узел копируется в буфер. Его можно вставить в нужное место.
Вставить Ctrl + v Вставка Узла находящегося в буфере.
Развернуть Ctrl + b В зависимости от выбранного режима сворачивания/разворачивания развернет (раскроет) дерево.
Свернуть Ctrl + b В зависимости от выбранного режима сворачивания/разворачивания свернет (закроет) дерево.
Настройки Будет вызвано диалоговое меню настроек для данного дерева. Можно управлять "Порядком сортировки" и режимом сворачивания/разворачивания дерева.
Новая группа Ctrl + m Добавится новая Группа и включится однострочный редактор. Синхронно добавится во все деревья.
Новый атрибут Ctrl + q В выбранную Группу добавится новый Атрибут и включится однострочный редактор. Синхронно добавится во все деревья.

Диалоговое меню.

Если в Контекстном меню выбрать пункт "Настройки", то появится диалоговое окно управления деревом.

Пункт Назначение
Автоматически сворачивать По умолчанию - включено, значит при разворачивании какого либо элемента дерева, ближайшие родственные элементы (элементы того же уровня) будут сворачиваться. Это сделано, чтоб не загромождать экран информацией. Но иногда требуется видеть сразу несколько развернутых элементов, тогда следует этот пункт отключить. В зависимости от этого работают пункты Контекстного меню "Развернуть" и "Свернуть"
Порядок сортировки Позволяет временно отключить порядок сортировки в конкретном дереве. При отключенном пункте все сортируется по алфавиту.
Ленивая загрузка Оперативное управление режимом загрузки деревьев. Если режим включен, то, как и раньше, дочерние узлы подгружаются по запросу. Если отключен, дерево грузится полностью. Более подробно в разделе Загрузка узлов.
Учитывать иерархию Работает только в дереве категорий. Для оперативного управления рекурсивным выбором подкатегорий.
Расхождения Работает только в дереве товаров. Для оперативного управления выборкой товаров.

Удаление значений.

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

Допустим есть товар или товары, у которых Атрибут Тестовый атрибут 3.1 принимает Значение тестовое значение 3.2.1

И есть товар или товары, у которых Атрибут Тестовый атрибут 3.1 принимает Значение тестовое значение 3.2.2

Необходимо у всех товаров удалить Атрибут Тестовый атрибут 3.1 если он принимает Значение тестовое значение 3.2.1

Если бы мы делали это вручную, то нам пришлось бы открывать каждый товар, просматривать список Атрибутов и Значений и нажимть кнопку если значение совпало с тестовое значение 3.2.1

Теперь эту операцию можно сделать в один клик для всех товаров, выбрав Значение или список Значений (используя мультиселект) через контекстное меню или клавишей Del.

Все было бы хорошо, если бы товар имел-бы только одно Значение или, иначе, одну характеристику для одного Атрибута, но зачастую их бывает несколько. Как быть если у нас есть еще товар или товары, где Атрибут Тестовый атрибут 3.1 принимает Значение тестовое значение 3.2.1/тестовое значение 3.2.2? Удалять или оставить?

Settings

Чтобы избежать неоднозначности, в модуле предусмотрено два режима удаления Значений - по точному совпадению и по вхождению подстроки в строку.

Удаление по точному совпаденю будет происходить если в дереве Группы атрибутов выбраны узлы с родителем Шаблоны.

Удаление по вхождению подстроки в строку будет происходить если в дереве Группы атрибутов выбраны узлы с родителем Значения.

В превом случае удаления не произойдет, во втором Атрибут будет удален.

Осторожно!

Если вы собираетесь удалить Узлы Значения, будут удалены также все Шаблоны, содержащие выбранное Значение.

Drag-and-Drop технологии.

Даже ради этого стоит использовать Attribut&co. Насколько удобней например, перетащить мышкой Атрибут из Группы в Группу , чем открывать формы, в одной форме добалять в другой форме удалять название новой Группы. В общем возможности d&d технологии можно описать так:

  • Перетаcкивание Узлов внутри одного дерева
  • Перетаcкивание Узлов между деревьями

Применительно к нашим задачам:

  • Изменение Группы у Атрибута
  • Сортировка Групп
  • Сортировка Атрибутов внутри Группы
  • Добавление Атрибута в категорию
  • Изменение категории у Атрибута
  • Слияние Атрибутов (объединение) без потери Значений и связей;

Как это работает можно увидеть в разделе Примеры.

Мультиселект.

Все операции Drag-and-Drop, а так же Copy-Paste можно выполнять не только над одним Узлом, но и над несколькими Узлами одновременно. Для того, чтобы выделить несколько Узлов, кликайте по этим Узлам левй кнопкой мышки одновременно с клавишей "Ctrl". Т.е. Ctrl + Click . Чтобы обезопасить пользователя от ошибок, в модуле предусмотрен selectcontrol. Поэтому, например, вы не сможете одновременно выбрать и Группы и Атрибуты.

Слияние атрибутов.

Всем знакомая картина, когда Атрибуты с разными названиями несут одну и ту же смысловую нагрузку. Например, "Страна производитель", "Производитель" и "Страна производства" это, скорее всего, один и тот же Атрибут, который логично объединить под одним названием, допустим "Страна производитель". Некоторые называют такое сопоставление "неявными дублями". Объединить "неявные дубли" в автоматическом режиме невозможно, поэтому придется делать это вручную. Но облегчит нам работу технология Drag-and-Drop.

Если перетащить один узел в другой с помошью Drag-and-Drop и одновременно нажатой клавишей "Ctrl", то произойдет слияние перетаскиваемого Узла с целевым. Если просто перетаскивать Узлы без "Ctrl", то будет выполняться задача сортировки или смены Группы. Таким образом Ctrl + Drag-and-Drop - слияние Атрибутов.

Возникает резонный вопрос - а что происходит при слиянии Атрибутов с их Значениями? Операция слияния проходит без потери связей с товарами или категориями, поэтому Значения тоже никуда не теряются. В случае, когда один и тот же товар связан и с целевым и с объединяемым Атрибутом, Значения объединяемого добавляются к целевому. Например, Значения целевого Атрибута были "Россия/Франция" после слияния станут "Россия/Франция/Германия". Новое значение добавляется через разделитель. Если товары не связаны с целевым Атрибутом, то просто меняется связь с объединяемого на целевой. Для наглядности желательно посмотреть видеопример.

Можно провести слияние сразу нескольких Атрибутов с целевым. Для этого используйте мультиселект. Разрешено слияние Атрибутов из разных Групп.

Возможно делать слияние Групп. В этом случае все Атрибуты выбранной Группы будут перемещены в целевую, а выбранная Группа (список Групп) будет удалена.

Не забывайте!

В результате выполнения операции слияния, Узлы, отмеченные как объединяемые, будут удалены без возможности восстановления. Спасет только резервная копия базы данных.

Какие наши действия при обнаружении ошибок в Атрибутах или, что гораздо хуже в Значениях? Кто виноват и что делать? Отловить товары где есть ошибка, например с помощью filterpro. Зайти в каждый товар и исправить. Ну представьте, что вы пропустили одну букву, а товаров, подлежащих исправлению, допустим 50. Так вот, Фильтр, позволит найти искомое в дереве. Причем неважно Группа это Атрибут или Значение. Исправить можно здесь же.

Опции фильтра.

Опция Описание
Только Атрибуты Поиск будет осуществляться только в Атрибутах.
Только Значения Поиск будет осуществляться только в Шаблонах и Значениях.
Скрыть несовпадения Узлы, в которых не найдено совпадений, будут скрыты.
автоРазвернуть Автоматически раскрывает Узлы, в которых найдены совпадения. Зависит от состояния пункта диалогового меню Автоматически сворачивать.
Счетчики узлов Показывает в скольки Узлах есть вхождения поискового запроса.
Счетчики раскрытых Скрывает счетчики с раскрытых Узлов.
Выделить Найденное будет подсвечено желтым цветом.
Примерно Поиск по нечетким данным. Возможно по совпадению одиночных символов например, 'кп' будет найдено 'Компьютеры'.
Регулярное выражение Строка поиска задана с помощью регулярного выражения.

Счетчики узлов.

Счетчики работают корректно только при отключении ленивой загрузки.

HTML.

Фильтр не может работать должным образом, если заголовки Узлов содержат HTML - разметку..

Скорость поиска.

Скорость поиска зависит от количества Узлов и текста в заголовках Узлов. На больших магазинах с большим количеством Значений работать может медленно. Скорость значительно увеличивается при отключенном режиме ленивой загрузки.

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

Поисковая строка фильтра теперь выглядит так:

Кнопка поиска становится доступной при отключенном автозаполнении.

Выпадающее меню с заголовком Выполнить открывает список команд для поиска по наиболее популярным Регулярным Выражениям. Комманда Восстановить очищает фильтр и восстанавливает состояние чекбоксов.

Отдельно стоит объяснить действие настроек Только Атрибуты и Только Значения. Точнее было бы назвать настройку Только Атрибуты как Поиск только в загруженных узлах. Для понимания определения загруженных узлов, надо прочитать раздел Загрузка узлов. Это означает, что поиск будет производиться в Атрибутах и Группах, если до этого не были загружены дочерние узлы. Если до этого Шаблоны или Значения были загружены, то поиск будет производиться и в них тоже.

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

Примеры.

Редактирование Групп и Атрибутов

Как добавить новую Группу. Как добавить новый Атрибут. Как изменить название добавленного или любого выбранного Узла.

Поиск с помощью фильтра

Поиск Групп, Атрибутов, Значений в дереве с помощью фильтра.

Редактирование Шаблонов и Значений

Простое редактирование или исправление ошибок в Шаблоне или в Значениях.

В чем разница?

Если Вы вносите изменения в Значение, то изменения произойдут во всех товарах, где присутствуют это Значение, а значит и во всех Шаблонах. Т.е. если Значение присуствует в нескольких Шаблонах, то изменения коснутся их всех. Если изменения делаются в Шаблоне, то это касаются всех товаров, где присутствует данный Шаблон, другие товары и Шаблоны затронуты не будут.

Копирование атрибута, смена группы

Копирование Атрибута одной Группы в другую, смена Группы.

В чем разница?

При копирование Атрибута одной Группы (источник) в другую (цель), и в источнике и в цели Атрибут сохраняется. Значения и Шаблоны в цели будут пустыми.

При Drag-and-Drop смене Группы, Атрибут переносится в цель со всеми Значениями и Шаблонами Из источника Атрибут удаляется полностью.

Drag-and-Drop сортировка

Сортировка Групп. Сортировка Атрибутов внутри Группы.

Работа с атрибутами категорий

Добавить Атрибут в категорию. Сменить категорию. Добавить Атрибуты категории в товар.

Интеграция со страницей товара

Добавить Атрибуты категории в товар. Заполнить Значения. Создать новые Шаблоны.

Дежурные шаблоны

Редактировать Дежурные шаблоны. Добавить Атрибуты в категорию вместе Дежурными шаблонами. Добавить Дежурные шаблоны в товар в соответствии с алгоритмом.

Слияние атрибутов

Слияние Атрибутов. Объединение "неявных дублей". Без потери Значений и связей с товаром.

Интеграция со страницей товара.

Интеграция модуля с движком OpenCart осуществляется с помощью файлов модификаторов ocmod или vqmod. Более подробно об этом в разделе Структура архива. Если модификация прошла корректно, в карточке товара должны появиться дополнительные кнопки управления   и поле выбора.

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

Новый шаблон.

Новый шаблон всегда можно "накидать" из Значений. Разделитель будет подставляться автоматически. Недостающие Значения надо будет вписать вручную.

Откуда берутся шаблоны.

Представим, что мы только начали работать с магазином. Создали несколько товаров, несколько Атрибутов. Зайдя в карточку товара, на вкладку Атрибуты мы увидим пустую страницу. Добавим Атрибут и справа видим пустое текстовое поле. Чтобы появился хотя бы один Шаблон надо что-то вписать в это поле. Точнее туда надо вписать набор Значений. Например Дальность1/Дальность2/Дальность3. После того, как Вы сохраните изменения и снова зайдете в карточку товара, то увидите, что справа появилось поле выбора и выбрать возможно только одну запись. По мере накопления товаров и соответствующих им, заполненных, текстовых полей, список Шаблонов пополняется.

Напомню, что Значения это "разобранные" по разделителю Шаблоны.

Фильтр значений.

В магазинах с большим количеством товаров, Атрибутов и их Значений список, подключаемый к полю выбора может быть очень длинным. Это вызывает определенные неудобства при заполнении таблицы. Фильтр позволяет ограничить выдачу Значенями только отмеченных на вкладке Связи категорий или Дежурного шаблона.

Фильтр работает в оперативном режиме, перезагрузка списка Значений происходит сразу после переключения режима. На больших магазинах иногда заметны задержки. Т.е. после переключения надо немного подождать.

Интеграция со страницей категории.

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

Интеграция с категорией закончена.

Надо иметь в виду, что алгоритм действий со Значениями при этом не действует. Интеграция осталась "как есть" от предыдущих версий и в будущих, скорее всего, будет упразднена. Для этого есть две причины. Во первых - дублируется функционал самого модуля, где более наглядно все это реализовано. Во вторых - это дополнительные модификации движка OpenCart и возрастает вероятность ошибок, конфликтов с другими модификаторами.

Поддержка атрибутов категории.

Интеграция со страницей товара позволяет так же немного автоматизировать "ручной" способ добавления Атрибутов категории в товар. Поскольку мы привязали Атрибуты к категории, то должна быть возможность, в момент отнесения товара к какой либо категории, одновременно устанавливать связь этого товара с Атрибутами категории. Физически это происходит, когда отмечается чекбокс напротив категории или изменяется Главная категория на вкладке Связи. Для магазинов версии 2.2.x это момент выбра категории из списка. Добавление Атрибутов категории в товар происходит в соответствии с алгоритмом, который обсуждался в разделе Настройки.

Скриншоты ниже иллюстрируют интеграцию. Можно обратиться так же к разделу Примеры.

Внимание!

Перед применением любого инструмента за исключением очистки кэша, ОБЯЗАТЕЛЬНО сделайте резервную копию базы данных. Если операция прервется не завершившись, высока вероятность нарушения целостности данных.

Удалить пустые значения.

Пустые Значения появляются в результате ошибок контент-менеджеров. Предлагаю два наиболее распространенных способа создать пустые Значения. Первый: при ручном редактировании карточки товара, нажать на кнопку "Сохранить" при добавленном Атрибуте, но не вписанном Значении. Второй: используя Attribut&co, добавить Атрибут с незаполненным Дежурным шаблоном в категорию.

В результате, гарантировано получите товар или все товары определенной категории с пустыми Значениями атрибутов. Такие пустышки некрасиво выглядят в фильтре вашего магазина и вводят клиентов в заблуждение.

Чтобы не искать по всей БД товары с пустыми Значениями, можно применять данный инструмент, который просто удалит ссылки на эти товары. Для запуска достаточно нажать на кнопку .

Должно появиться сообщение с рекомендацией не покидать данную страницу.

После выполнения задачи должно появиться соответсвующее сообщение.

Удалить ошибочные ссылки.

Некоторые таблицы БД, которые создает модуль, не являются "родными" для OpenCart. Соответственно, стандартные средства движка не позволяют корректно изменять данные в этих таблицах. Рекомендацию - работать только через Attribut&co, некоторые пользователи игнорируют. Особенно ручное удаление приводит к появлению ссылок на несуществующие атрибуты. Визуально это отображается как Load error! (SyntaxError: Unexpected token < in JSON at position 0).

Чтобы проверить корректность таблиц БД, можно применять данный инструмент, который просто удалит ссылки на несуществующие атрибуты. Для запуска достаточно нажать на кнопку .

Должно появиться сообщение с рекомендацией не покидать данную страницу.

После выполнения задачи должно появиться соответсвующее сообщение.

Дефрагментация атрибутов и групп.

В процессе работы приходится удалять и добавлять Атрибуты и Группы. Особенность работы БД такова, что в таблицу записи добавляются по правилу автоинкремента. В результате можем получить, например, такую таблицу:

attribute_group_id sort_order
7 4
8 5
12 3
37 2
68 1
146 9
363 7
364 6
366 8

Нет ничего страшного в том, что между соседними записями есть большие "разрывы" в нумерации attribute_group_id. Неприятность заключается в том, что отсутствует attribute_group_id = 1 Дело в том, что модули автоматической загрузки прай-листов и модули парсинга используют именно attribute_group_id = 1 для размещения всех Атрибутов.

Теперь хорошая новость для любителей парсинга и автоматической загрузки прайс-листов. Данный инструмент восстанавливает attribute_group_id = 1 без ущерба целостности данных, т.е. приводит таблицу к такому виду:

attribute_group_id sort_order
1 4
2 5
3 3
4 2
5 1
6 9
7 7
8 6
9 8

В дальнейшем Группу, у которой attribute_group_id = 1 будем называть Группа парсинга.

Процесс дефрагментации может занять длительное время, особенно для магазинов с большим количеством атрибутов или товаров. Ведь изменения надо внести в каждый товар. При недостатке ресурсов на хостинге есть большая вероятность, что операция может быть прервана по тайм-ауту. Для получения Группы парсинга достаточно дефрагментировать только Группы. Начиная с версии 2.1.7 есть возможность раздельной дефрагментации Групп или Атрибутов.

Defragmentation settings

После того, как отметили Группы или Атрибуты для запуска задачи необходимо нажать кнопку .

Должно появиться сообщение с рекомендацией не покидать данную страницу.

После выполнения задачи должно появиться соответсвующее сообщение.

После того, как инструмент отработал, во всех деревьях должна появиться Группа парсинга которая обозначается иконкой .... (Если не появилась иконка, то надо очистить кэш браузера).

Как быть если после дефрагментации появилвсь Группа парсинга и она уже занята и содержит Атрибуты, а для парсинга или загрузки прайс-листа надо ее очистить? Ничего сложного. Надо создать новую одноименную группу, и с помощью Drag-and-drop технологии перетащить туда все атрибуты, а саму Группу парсинга переименовать. Для лучшего понимания - следующие видео:

Подготовка группы парсинга

Дефрагментация Групп и Атрибутов. Подготовка Группы парсинга.

Удалить не связанные с товаром.

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

Сами по себе не связанные с товаром атрибуты никакого отрицательного влияния на работу магазина не оказывают. Возможно, незначительно замедляют поиск. Но если вы боретесь за порядок и чистоту в рядах Атрибутов, можете применять этот инструмент.

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

Detach & deduplicate

После того, как отметили Группы для запуска задачи необходимо нажать .

Объединить дубли (beta).

Причины появления дублей Атрибутов как было в описании для предыдущего инструмента, появляются в результате парсинга, автоматической загрузки прайс-листов или ошибок контент-менеджеров. Этот инструмент позволяет объединять дубли без потери связей с товаром и категорией. Действие производятся для отмеченных Групп, как и в предыдущем случае.

Используйте с осторожностью.

Инструмент "Объединить дубли" пока работает в режиме beta-версии.

Как и в предыдущих случаях, для запуска достаточно нажать на кнопку .

Должно появиться сообщение с рекомендацией не покидать данную страницу.

После выполнения задачи должно появиться соответсвующее сообщение.

или

Атрибуты категорий.

Этот инструмент будет полезен тем, кто устанавливает модуль на рабочий магазин, особенно с большим количеством категорий и товаров, а так же для тех, кто занимается парсингом. Формирование Атрибутов категорий вручную, является трудоемким процессом, а при парсинге иногда неизвестно с какими Атрибутами придет товар.

Create category attributes

Инструмент выберет все Атрибуты указанной вами категориии из всех товаров, принадлежащих этой категории и сгруппирует их в виде Атрибутов категории.

Имейте в виду!

Если товар принадлежит сразу нескольким категориям, то Атрибуты всех этих категорий просуммируются для каждой из них. Приведите в порядок структуру категорий или не забудьте удалить ненужные атрибуты из категорий после выполнения задачи.

Если отмечен пункт Расставить атрибуты категории в товары, то будет выполнена так же задача добавления Атрибутов и их Значений во все товары выбранной категории.

Расстановка или добавление Атрибутов и их Значений в товары будет производится в соответствии с алгоритмом, указанными в настройках.

Values update settings

Уместно заметить, что добавление Дежурных шаблонов происходит только если сами Дежурные шаблоны заполнены информацией. Поэтому, если вам необходимо добавить Атрибуты даже с пустыми Значениями, выберите пункт Оставлять.

Для больших магазинов.

Не отмечайте сразу много категорий. Есть вероятность, что на хостинге есть ограничения на время выполнения скрипта. Высока вероятность прерывания сервером операции по тайм-ауту

При успеном выполнении задачи должно появиться соответсвующее сообщение.

Очистить кэш деревьев.

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

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

Есть нюанс!

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

Стандартизация атрибутов.

Ошибки из-за неправильной установки модуля.

Notice: Undefined variable: vendor in .....\www\admin\controller\module\attributico.php on line 51

или

Fatal error: Call to a member function franchise() on a non-object in .../admin/controller/module/attributico.php on line51

Ошибка возникает из-за отсутствия файла /system/license/sllic.lic. Возможно Вы не установили, или установили неправильно файл лицензии. Прочтите раздел документации Лицензия.

This is not licensed copy of attributico

Ошибка возникает из-за того, что название Вашего домена не согласовано с файлом лицензии. Прочтите раздел документации Лицензия.

Эти ошибки являются наиболее распростаненными. Кроме того были выявлены проблемы совместимости с модулями, которые используют другие версии jquery.ui. Например, Admin_quick_edit_product_opencart1.5x.vqmod. В последних версиях эта проблема решена.

Конфликты с другими модулями.

Если Вы используете несколько модулей, работающих с атрибутами, имейте в виду, что большинство из них, как и Attribut&co, модифицируют форму редактирования товара или "подставляют" свою страницу с формой. В этом случае все, что связано с интеграцией Attribut&co в движок работать не будет и Вам остается пользоваться только самим модулем, но и в этом случае корректная работа не гарантируется, т.к. возможны конфликты в Базе Данных.

Ошибки во время работы модуля.

Load error! (SyntaxError: Unexpected token < in JSON at position 0)

Вероятнее всего, что это ошибка структуры данных. Например, attribute_id в таблице category_attribute ссылается на несуществующую запись в другой таблице БД

Причин возникновения такой ошибки может быть много, но все они связаны с "ручным" редактированием атрибутов либо атрибутов категорий. Разработчику действия пользователя воспроизвести очень трудно, поэтому Вам придется вспомнить, что и где Вы редактировали и попробовать восстановить изменения до предыдущего рабочего состояния. Иногда такое "лечится" пересохранением поврежденных пунктов, например, той категории, в которой возникла ошибка.

Совет.

Если Вы уже купили Attribut&co, то делайте через него все манипуляции с атрибутами. Это гораздо удобней "ручной" работы со стандартными формами OpenCart. Это позволит избежать ошибок БД.

И все-таки не исключено, что это ошибка работы модуля. Например: PHP Notice: Undefined offset: 1 in ...\admin\controller\module\attributico.php on line .... Тогда эта ошибка отразится в журнале Система ⇒ Инструменты ⇒ Журнал ошибок. В таком случае, свяжитесь с разработчиком.

Load error! (Internal Server Error)

Такая ошибка иногда появляется на больших магазинах. Причина - прерывание сервером операции по тайм-ауту. Ошибка может возникнуть как при загрузке деревьев, так и во время применения инструментов. Если простыми словами, то модулю не хватает отведенного времени и ресурсов сервера для выполнения операции. Часто это связано с ограничениями на хостинге. Ограничения в основном касаются работы MySQL и надо добиваться от хостера, чтоб настройки позволяли работать с вашим объемом данных. Есть еще настройки PHP, которые ограничивают время выполнения скриптов. Попробуйте в .htaccess добавить php_value max_execution_time 300. Если хостер позволяет менять этот параметр, то, возможно, получится хоть как-то работать. Но настройки MySQL наиболее важны.

Что можно сделать в таких случаях со стороны модуля? Самый "щадящий" режим это "Ленивая загрузка". Включите так же кэш. В настройках деревьев можно попробовать отключить один из дочерних узлов. В общем, варианты есть.

Ошибки которые не хочется комментировать.

Я ничего не делал, а у меня два пункта в меню...

Ocmod double

Вы не только ничего не делали, но даже не читали Установка/обновление. Ну не хотите читать это, читайте инструкцию на Opencart. В общем, у вас установлено два модификатора.

Редко, но бывает.

Не закачивайте, пожалуйста через установщик дополнений модификаторы из папки vqumod/xml/ если у Вас движок версии 2.x. Эти файлы толко для версий 1.5.x. Ваши модификаторы находятся в папке system/.

Какой алгоритм действий после парсинга?

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

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

Values update settings

Рисунок 1 – Настройки добавления значений в товар

Допустим в категории C1 есть товар P1 с Атрибутом A1, принимающим Значение V1. Вы добавили в этот товар Атрибут A2 со Значением V2 и после парсинга добавились еще два товара P2 и P3 со своими Атрибутами и соответствующими Значениями. Визуально такая ситуация отображена на диаграмме ниже.

Values update settings

Диаграмма 1 – Работа с незаполненными Дежурными шаблонами

Наша цель - унификация Атрибутов категории, т.е. мы хотим, чтобы каждый товар категории C1 имел одинаковый набор Атрибутов. Применим инструмент "Атрибуты категорий". Результат видим на диаграмме. Теперь все товары имеют одинаковый набор Атрибутов. А что же произошло со Значениями?

Некоторые из них оказались пустыми. Это произошло потому, что модуль "не знает", что подставлять. Действительно, Атрибут A1 может принимать Значения V1 или V4. Какое выбрать, чтоб подставить Атрибут A1 в товар P3?
Для того, чтобы устранить эту неоднозначность, существуют Дежурные шаблоны. Иначе их можно назвать "Значения по умолчанию". Если вы не заполнили Дежурные шаблоны, то получите некоторое количество пустых Значений как на первой диаграмме.

Если Дежурные шаблоны заполнены, то результат работы инструмента будет такой, как на диаграмме ниже.

Values update settings

Диаграмма 2 – Работа с заполненными Дежурными шаблонами

Как видите, теперь все хорошо. Пустые Значения заполнены.

Здравствуйте! Я заинтересован в покупке модуля, но есть вопрос не будет ли он конфликтовать с модулем DreamFilter ?

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

Я сейчас могу указать только тестовый можно будет дополнить домен позже ?

Можете. Только при таком способе выдачи лицензий, получения лицензии на второй домен, возможно придется подождать несколько дней. Это связано с тем, что каждое кодирование лицензии стоит денег на ionCube. Я добавлю ваш домен одновременно с чьей либо покупкой.

Подскажите, у меня перестал модуль работать. Переезжал на новый хостинг, может из-за этого!?

Попробуйте очистить кэш магазина. Очистить кэш и куки браузера. Обновить модификаторы. Выставить заново и сохранить настройки.

Можно ли допилить модуль, чтоб атрибуты выводились на главной странице под фотографией товара?

Нет. Не можно. Этот модуль разработан для админки и с фасадом не работает. То что вы хотите, давно реализовано не лучшим способом - подменой содержимого описания товара на атрибуты с помощью модификаторов. Да и сомневаюсь, что кто-то работает на дефолтном шаблоне. Так что этот вопрос надо задавать разработчикам шаблона (дизайна).

Версия 3.0.5.

  • Дерево "Товары" сгруппировано по категориям;
  • Теперь можно посмотреть, в каких товарах отсутствует данный Атрибут, Шаблон или Значение. Управление осуществляется через контекстное меню (Настройки->Расхождения);
  • Добавлена долгожданная возможность удалять Значения прямо в дереве Атрибутов. Точнее - удаление Атрибутов, содержащих выбранное Значение из всех товаров;

Версия 3.0.4.

  • Исправлена ошибка в инструменте "Атрибуты категорий". При добавлении атрибутов категории в товары в режимах, связанных с Дежурным шаблоном, атрибуты не добавлялись если Дежурный шаблон был не заполнен;
  • Исправлена ошибка добавления атрибутов категории в товар в карточке товара. В момент "привязки" товара к категории, добавлялись только отсутствующие в товаре атрибуты. Значения атрибутов не менялись у Атрибутов, которые уже были в товаре;

Версия 3.0.3.

  • Исправлена ошибка, из-за которой атрибуты и группы загружались в карточку товара без учета порядка сортировки. Теперь, при включенной настройке "Учитывать порядок сортировки", сортируются группы и атрибуты внутри групп. В отсортированном виде загружаются в карточку товара в момент привязки к категории;

Версия 3.0.2.

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

Версия 3.0.1.

  • Добавлена поддержка магазинов третьй версии;
  • Изменены алгоритмы загрузки языковых файлов для совместимости с магазинами версий 3.x. Теперь деревья грузятся быстрее;
  • Исправлена ситуация, когда слияние атрибутов с помощью Drag&Drop было невозможно при отключенной настройке "Учитывать порядок сортировки". Теперь слияние можно делать независимо от этого параметра;
  • Изменена структура архива;

Версия 2.2.0.

  • В карточке товаров сделан фильтр для формирования списка Значений атрибутов;
  • Добавлены некоторые настройки по умолчанию (важно при первом запуске после инсталляции);

Версия 2.1.9.

  • теперь модуль умеет строить Атрибуты категорий самостоятельно и размещать Атрибуты и Значения атрибутов в товарах согласно правилам заданным в настройках модуля. Для этого предназначен инструмент "Атрибуты категорий";

Версия 2.1.8.

  • добавлена возможность проверить наличие обновлений. Кнопка ;
  • добавлена функция слияния атрибутов и групп без потери связей с товарами и категориями. Если выполнить перетаскивание с нажатой кнопкой Ctrl (Ctrl + Drag&Drop), то произойдет слияние выбранных узлов с целевым;
  • устранен баг с ошибкой "debug_mode";

Версия 2.1.7.

  • теперь работает кэширование деревьев атрибутов. Кэш позволяет ускорить загрузку деревьев, что очень важно для больших магазинов;
  • добавлен инструмент для очистки кэша;
  • устранен баг, вследствие которого не на всех вкладках поддерживалась "Ленивая загрузка", что замедляло процесс загрузки;
  • появилась возможность раздельной дефрагментации Групп и Атрибутов;
  • изменен метод передачи параметров при добавлении Атрибутов категории, некоторые сервера ругались на слишком длинный GET-запрос;
  • устранен баг с индексом языка, из-за которого после манипуляций с языками (н-р удаления языка) неправильно работала функция Copy-Paste;

Версия 2.1.6.

  • изменения коснулись алгоритма объединения дублей. После того, как появилась возможность опробовать этот инструмент на больших магазинах, выяснилось, что при ограничениях ресурсов для MySQL, которые вводят хостеры, а иногда просто не хотят ничего настраивать, инструмент не работает. Скрипту не хватает отведенного времени на обработку и происходит прерывание по тайм-ауту. Алгоритм полностью изменен. Время обработки дублей многократно сокращено.;

Версия 2.1.5.

  • добавлены инструменты "Удалить не связанные с товаром" и "Объединить дубли". В результате парсинга, автоматической загрузки прайс-листов и других операций с товарами и атрибутами часто появляются дубликаты атрибутов или атрибуты, которые не принадлежат ни одному товару. Данные инструменты позволяют привести атрибуты в порядок. Инструмент "Объединить дубли" пока работает в режиме beta-версии;
  • устранен баг, вследствие которого было невозможно редактировать атрибуты, содержащие кавычки и другие html-спецсимволы;

Версия 2.1.4.

  • добавлена возможность управлять режимом загрузки деревьев. До этого, по умолчанию, был установлен режим так называемой "Ленивой загрузки". Это было сделано для ускорения загрузки деревьев (визуально). Однако выйгрыш в скорости загрузки оказался проигрышем при использования поиска. Теперь по умолчанию деревья грузятся полностью и поиск работает быстрее. Если надо как раньше, то в Общих настройках надо включить пункт "Ленивая загрузка". Для оперативного управления эта настройка доступна также из контекстного меню;
  • в Инструменты добавлена функция "Удаление ошибочных ссылок". Инструмент удаляет ссылки на несуществующие атрибуты. Такие ссылки возникают при ручном удалении атрибутов, (несмотря на рекомендацию - удалять только с помощью модуля), вследствие чего появляются ошибки типа: Load error! (SyntaxError: Unexpected token < in JSON at position 0);

Версия 2.1.3.

  • добавлена возможность открытия страницы товара в новом окне;
  • добавлен инструмент "Дефрагментация". Восстанавливает структуру таблиц групп и атрибутов. Создает группу с id = 1, что необходимо для парсинга и автоматической загрузки прайс-листов;

Версия 2.1.2.

  • фильтр добавлен на все вкладки. Его можно скрывать (двойная стрелка вниз справа). Состояние фильтра и всех настроек сохраняется по нажатию кнопки "Применить" или "Сохранить";
  • для ускоренного поиска в атрибутах в фильтре добавлена настройка "Только атрибуты";
  • добавлена вкладка "Товары". Теперь можно оперативно просмотреть товары по атрибуту, шаблону или значению;

Версия 2.1.1.

  • теперь отображается версия модуля;
  • сохраняются состяния чекбоксов фильтра для каждой вкладки по нажатию кнопки "Применить" или "Сохранить";
  • появилась возможность управлять отображением пустых значений атрибута. В "Общих настройках" надо отметить соответствующий чекбокс;
  • в фильтр добавлено меню команд для поиска по наиболее популярным регулярным выражениям;
  • добавлена вкладка "Инструменты". Там пока один инструмент "Удаление пустых значений";

Версия 2.1.0.

  • появилась возможность настраивать дочерние узлы атрибутов. Для больших магазинов удобно, т.к. можно убрать лишнюю информацию;
  • еще одна опция так же полезна для больших магазинов. Это смарт скроллинг. Прокрутка деревьев осуществляется в пределах фиксированных областей, что позволяет держать все деревья в области видимости;
  • расширено наследование. Теперь можно выбрать или исключить некоторые подкатегории, куда надо будет добавлять атрибуты;
  • началась поддержка магазинов на v2.3.x;

Версия 2.0.3.

  • добавлена кнопка "Применить", чтоб созранять настройки модуля не выходя из формы редактирования;
  • доработан фильтр. Теперь есть возможность отключить автозаполнение - т.е. поиск по каждой нажатой букве. При отключенном автозаполнении можно набрать фразу целиком и затем нажать на кнопку "поиск". Очень полезно для магазинов с большим количеством атрибутов, где есть риск зависания фильтра;
  • добавлены функции наследования. Т.е. можно установить рекурсивное добавление атрибутов во все подкатегории выбранной категории и значений (шаблонов) атрибутов во все товары этих подкатегорий. Точно так же можно установить рекурсивное удаление;

Версия 2.0.2.

  • обеспечена совместимость с OpenCart v.2.2.x;
  • исправлена ошибка: не выводятся атрибуты при ручном редактировании стандартной формы категории;
  • для магазинов на 1.5.x устранены конфликты vqmod модификаторов. Были проблемы, например, с Admin_quick_edit_product_opencart1.5x.vqmod;

Версия 2.0.1.

  • добавлена возможность назначать каждому атрибуту "дежурные" значения или шаблоны. Дежурные шаблоны предназначены для автоматического добавления в товар при ручном редактировании или для автоматического добавления во все товары выбранной категории при добавлении атрибута в категорию;
  • при переходе с более ранних версий на вкладке Дежурные шаблоны будет предложено изменить структуру БД. В случае подтверждения, модуль добавит поле 'duty' к существующей таблице attribute_description;

Версия 1.0.3.

  • добавлена Drag-and-drop сортировка атрибутов и групп атрибутов;
  • появилась возможность Drag-and-drop изменить порядок сортировки сразу нескольких атрибутов или групп, выбрав их по ctrl + mouse left button;
  • при ручном добавлении атрибутов в товар теперь добавление происходит и при изменении главной категории;

Версия 1.0.2.2.

  • при построении деревьев появилась возможность учитывать порядок сортировки. Если отметить этот чекбокс в настройках, то при выводе будет учтен порядок сортировки групп атрибутов и самих атрибутов;
  • есть возможность оперативного включения/отключения порядка сортировки Правая кнопка мыши ⇒ Настройки ⇒ Порядок сортировки для каждого дерева индивидуально;
  • появилась возможность сохранить существующие значения атрибутов, если они там были до этого, в момент пакетного изменения атрибута в товаре соответствующей категории;

Версия 1.0.2.1.

  • добавлено пакетное добавление(удаление) атрибутов в товары соответствующей категории в момент добавления(удаления) атрибута в(из) категории;
  • есть возможность включения/отключения этого функционала на вкладке Общие;

Версия 1.0.2.

  • добавлен функционал copy-paste;
  • изменена система лицензирования модуля;