================================
COMPARE — Сравнение товаров
================================

Версия: 1.0.0
Зависимости: xfields

─────────────────────────────────────────────────────────────────────────────
ОПИСАНИЕ
─────────────────────────────────────────────────────────────────────────────
Плагин добавляет функционал сравнения товаров (новостей NGCMS). Список
сравнения хранится в cookie браузера. Характеристики для сравнения берутся
из доп. полей xfields, привязанных к новостям.

─────────────────────────────────────────────────────────────────────────────
УСТАНОВКА
─────────────────────────────────────────────────────────────────────────────

1. Убедитесь, что установлен и настроен плагин xfields.
2. Установите плагин compare через панель администратора.
   Таблицы БД не создаются — используется cookie + таблицы news/xfields_data.
3. Настройте плагин (Плагины → compare → Настройки):
   - Укажите поля xfields для отображения в таблице сравнения
   - Установите максимальное количество товаров в списке (2–6)

─────────────────────────────────────────────────────────────────────────────
НАСТРОЙКИ (Плагины → compare → Настройки)
─────────────────────────────────────────────────────────────────────────────
xfields — список полей xfields через запятую для колонок таблицы
Пример: price,weight,color,material
Пусто = все поля xfields из новостей
limit — максимум товаров в списке сравнения (по умолчанию: 4)

─────────────────────────────────────────────────────────────────────────────
URL-СТРАНИЦЫ ПЛАГИНА
─────────────────────────────────────────────────────────────────────────────
/compare/ — таблица сравнения
/compare/add/?id=N — добавить новость N в список
/compare/remove/?id=N — удалить новость N из списка
/compare/clear/ — очистить весь список

Все эти URL поддерживают AJAX-запросы (заголовок X-Requested-With):
Ответ JSON: {"status":"ok", "count":2, "ids":[5,12]}

─────────────────────────────────────────────────────────────────────────────
ПЕРЕМЕННЫЕ В ШАБЛОНАХ НОВОСТЕЙ
─────────────────────────────────────────────────────────────────────────────
Плагин добавляет следующие переменные в каждый шаблон новости
(через NewsFilter):

{{ compare_add_link }} — ссылка /compare/add/?id=N
{{ compare_remove_link }} — ссылка /compare/remove/?id=N
{{ compare_list_link }} — ссылка на страницу сравнения /compare/
{{ in_compare }} — true если товар уже в списке
{{ compare_ids }} — массив ID всех товаров в списке
{{ compare_count }} — количество товаров в списке

─────────────────────────────────────────────────────────────────────────────
ПЕРЕМЕННЫЕ ШАПКИ / ВИДЖЕТ
─────────────────────────────────────────────────────────────────────────────
На каждой странице (через add_act) доступны:

{{ plugin_compare_count }} — количество товаров в списке сравнения
{{ plugin_compare_link }} — ссылка на страницу сравнения

─────────────────────────────────────────────────────────────────────────────
ШАБЛОНЫ (tpl/)
─────────────────────────────────────────────────────────────────────────────
tpl/compare.tpl
Страница сравнения.
Переменные:
{{ products }} — массив товаров (строки из таблицы news + xfields)
{{ xf_keys }} — словарь {имя_поля: метка} для заголовков колонок
{{ ids }} — массив ID товаров в списке
{{ limit }} — максимально допустимое количество
{{ clear_link }} — ссылка «очистить список»
{{ add_link }} — базовый URL добавления (/compare/add/)
{{ remove_link }} — базовый URL удаления (/compare/remove/)

    Доступ к xfields товара:
      {{ attribute(product, 'xfields_price') }}
      {{ attribute(product, 'xfields_weight') }}

─────────────────────────────────────────────────────────────────────────────
ПРИМЕР: КНОПКА В ШАБЛОНЕ НОВОСТИ/ТОВАРА
─────────────────────────────────────────────────────────────────────────────
В файл шаблона новости (например, templates/default/news.tpl):

{% if in_compare %}
<a href="{{ compare_remove_link }}" class="btn-compare active"
       data-id="{{ id }}">В сравнении ✓</a>
{% else %}
<a href="{{ compare_add_link }}" class="btn-compare"
       data-id="{{ id }}">Сравнить</a>
{% endif %}

  <a href="{{ compare_list_link }}" class="compare-counter">
    Сравнение ({{ compare_count }})
  </a>

─────────────────────────────────────────────────────────────────────────────
ПРИМЕР: AJAX-КНОПКА
─────────────────────────────────────────────────────────────────────────────
<button class="js-compare" data-id="{{ id }}"
          data-add="{{ compare_add_link }}"
          data-remove="{{ compare_remove_link }}">
{% if in_compare %}Убрать{% else %}Сравнить{% endif %}
</button>

  <script>
  document.querySelectorAll('.js-compare').forEach(btn => {
    btn.addEventListener('click', e => {
      e.preventDefault();
      const url = btn.dataset[btn.classList.contains('active') ? 'remove' : 'add'];
      fetch(url, { headers: { 'X-Requested-With': 'XMLHttpRequest' } })
        .then(r => r.json())
        .then(d => {
          document.querySelector('.compare-counter').textContent =
            'Сравнение (' + d.count + ')';
          btn.classList.toggle('active');
        });
    });
  });
  </script>

─────────────────────────────────────────────────────────────────────────────
ПРИМЕР: ВИДЖЕТ В ШАПКЕ САЙТА
─────────────────────────────────────────────────────────────────────────────
В файле шаблона header.tpl или main.tpl:

{% if plugin_compare_count > 0 %}
<a href="{{ plugin_compare_link }}" class="compare-widget">
Сравнение ({{ plugin_compare_count }})
</a>
{% endif %}
