Вопрос-ответ по модулю «Антирутин» для 1С-Битрикс

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

  1. создать рез. копию сайта, хотя бы базы данных,

  2. деинсталлировать модуль,

  3. стереть данный модуль с сайта (соотв. опция доступна в списке модулей),

  4. выполнить SQL-запрос (в админке на соотв. странице в разделе "Инструменты": Административный раздел - Настройки - Инструменты - SQL-запрос):

    DELETE FROM `b_option` WHERE `MODULE_ID`='#FAQ_MODULE_ID#';

  5. сообщить нам (см. выше) для удаления нами упоминаний об использовании демо на Вашем сайте,

  6. повторно установить модуль из Маркетплейс .

Создать свой плагин просто!

Для начала рассмотрите код нескольких плагинов (они находятся в директории /bitrix/modules/webdebug.antirutin/include/actions/). Плагин это отдельный класс, наследуемый от класса CWDA_Plugin. В одном файле может быть создано сколько угодно плагинов, но мы рекомендуем в одном файле хранить один плагин.

У класса должно быть свое уникальное имя, начинающееся с "CWDA_" (это обязательно, т.к. по этому коду идет поиск плагинов). Также в классе задаются три константы: GROUPCODENAME - группа плагина, его код (заглавные символы и символ подчеркивания) и название. В качестве группы могут задаваться следующие варианты: GENERAL (Общее), IMAGES (Изображения), PRICES (Цены), OTHERS (Другое). Также в модуле доступен обработчик OnGetActionsGroup для добавления собственных групп.

Класс должен иметь следующие обязательные функции (методы):

  • Process($ItemID, $arElement, $Params) - метод, выполняющий всю полезную работу плагина, $ItemID - ID элемента инфоблока, $arElement - массив его полей (в т.ч. свойства), $Params - настройки плагина.

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

  • ShowSettings($IBlockID) - метод для показа формы настроек плагина, $IBlockID - текущий выбранный инфоблок.

Дополнительные (не обязательные методы):

  • GetDescription - метод для получения текстового описания плагина,

  • GetMessage($Code, $ConvertCharset=false) - метод для работы со внутренними языковыми фразами (об этом далее), $Code - символьный код языковой фразы, $ConvertCharset - флаг необходимости смены кодировки.

Т.к. файл плагина общий для всех кодировок (windows-1251 и UTF-8), то необходимо придерживаться следующих правил: во-первых, кодировка плагина должна быть UTF-8. И во-вторых, внутри модуля необходимо пользоваться методом GetMessage() плагина, в котором должна быть автоматический выбор кодировки в зависимости от текущей кодировки сайта - пример можно посмотреть почти в любом из плагинов.

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

AddEventHandler('webdebug.antirutin','OnGetActionsList','AntirutinAddMyPlugin');
function AntirutinAddMyPlugin(){
	require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/php_interface/antirutin_plugins/MyPlugin.php');
}

Также можно добавить плагин, просто подключив его в файле init.php.

Другие особенности:

  • любая синтаксическая ошибка в коде плагина блокирует работу с модулем,
  • названия классов плагинов не должны пересекаться,
  • доступны следующие события JS: onWdaAfterIBlockChange (при смене инфоблока, доступна переменная WdaCurrentAction, содержащая имя текущего плагина), onWdaAfterActionChange (при смене плагина, доступна переменная WdaCurrentAction, содержащая имя текущего плагина), onWdaBeforeSubmit (перед запуском процесса, установив внутри обработчика WdaCanSubmit=false можно отменить запуск процесса),
  • следует помнить, что плагин может выполняться как на странице сайта, так и из планировщика, это накладывает некоторые ограничения, например, при работе из планирощика недоступны сессии и параметр $_SESSION,
  • при выборке элементов используется ID, т.е. элементы сортируются в порядке ID, данный способ сортировки изменить не получится.
Интересные идеи для плагинов.
Мы разработали уже около десятка плагинов на заказ (примерно половина из них - бесплатно*), среди них есть несколько интересных:
  • плагин для генерации карточек товара в формате PDF и сохранение сгенерированных файлов в свойство товара,
  • парсинг информации об автомобилях из drom.ru.
Также много интересных идей для плагинов, многие из которых мы со временем воплотим в жизнь: 
  • публикация выбранных товаров в соц. сети,
  • копирование элементов в другие инфоблоки,
  • и много других идей попроще.
Если Вам не хватает какого-либо действия в модуле, выполняющее конкретно Вашу задачу - напишите нам, мы постараемся помочь. Несложные действия мы добавим бесплатно (при условии наличия активной лицензии модуля), более сложные действия мы можем добавить за отдельную плату.

Страница модуля находится в админке: секция «Контент» -пункт меню «Антирутин» (в самом низу).

Алгоритм работы простой:

  1. выбрать инфоблок, на котором нужно проводить операции, затем (при необходимости) выбрать нужные разделы (для выбора нескольких разделов нажать и удерживать клавишу Ctrl и мышкой выбирать разделы),

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

  3. затем, выберите нужное действие (напр., «Генерация символьного кода») и укажите все необходимые параметры,

  4. нажмите кнопку «Выполнить действия».


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

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

Теперь Вы можете использовать сохраненный профиль для быстрого загрузки формы (в панели кнопок над формой нажмите «Использовать профиль» - и выберите нужный профиль). Форма будет загружена из сохраненных настроек.

Список сохраненных профилей доступен на странице управления профилями (ссылка для перехода на указанную страницу доступна в панели кнопок над формой).

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

В каждом задании в качестве аргумента параметра «profile» обязательно должен быть указан ID сохраненного профиля. На одно задание - один профиль. Другое не поддерживается.

Например, задание может выглядеть так:

/usr/bin/php -f /home/bitrix/www/bitrix/modules/webdebug.antirutin/cron.php profile=1

В случае, если настройки кодировки для планировщика не совпадают с настройками кодировки для сайта, под формой настроек будет выведено соответствующее уведомление. В этом случае необходимо в папке модуля создать файл php.ini с указанием необходимых настроек (исправляющих проблемы с кодировкой) и в команде его указать примерно так:

/usr/bin/php -c /home/bitrix/www/bitrix/modules/webdebug.antirutin/php.ini -f /home/bitrix/www/bitrix/modules/webdebug.antirutin/cron.php profile=1

Имейте ввиду, что указанные пути приведены для основного сайта виртуальной машины Битрикс, т.е. когда сайт лежит в папке /home/bitrix/www/, для всех остальных случаев команда будет другой, и если Вы просто укажете эту команду - она не будет работать!

Проблема вызывается модуем проактивной защиты. Но, т.к. запрос выполняется через AJAX, предупреждения не видно.
Для решения проблем добавьте исключение в проактивный фильтр:
Антирутин - проактивный фильтр
Для решения данной задачи можете воспользоваться плагином "Замена в тексте". Сначала отметьте галочку "Использовать регулярные выражения". Затем в поле "Что ищем" укажите "#^(.*?)$#" - это регулярное выражение обозначает найти все от начала и о конца. Далее, в поле "На что заменяем" укажите "$1<br/>Текст в конце". Здесь "$1" - это весь уже имеющийся текст (т.е. подменяется на текущее значение поля), а все остальное - это то, чем нужно дополнить поле.

Если в файл /bitrix/php_interface/dbconn.php задана константа LOG_FILENAME - то это и будет лог. Иначе ищите лог в корне сайта (вид log_***************.log).

Для того, чтобы протестировать работу модуля на одном товаре, в фильтре необходимо добавить фильтрацию так, чтобы был найден только один товар. Лучший способ это сделать - фильтр по ID (если настроены другие фильтры, нужно все их отменить, кликнув на каждом из них). В форме редактирования товара посмотрите его ID, а затем на странице модуля «Антирутин» добавьте фильтр по ID в секции «Фильтр»:

  1. выберите ID в выпадающем списке «Поля инфоблока» - «ID»,
  2. в следующем списке выберите «равно»,
  3. в поле для ввода скопируйте ID из формы редактирования товара,
  4. нажмите кнопку «Добавить».
При этом в поле с примененными фильтрами, с правого края, в зеленом овале должна появиться цифра «1» - что означает, что найден один товар. Обработка будет применяться только к выбранному товару.


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

Далее, необходимо перейти на страницу списка профилей (кнопка "Управление профилями" в верхней правой части формы), напротив нужного профиля нажать кнопку с символом меню, и в выпадающем меню выбрать "Получить команду запуска для Cron". Откроется текст команды, которую нужно настроить на крон (это делается вручную на хостинге для виртуального хостинга или по SSH для VPS/VDS). Имейте ввиду что на каждом хостинге свои особенности добавления команды в планировщик - смотрите раздел помощи конкретного хостинга.

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

Возможны следующие проблемы при настройке задачи на планировщик:

  1. задача не выполяется. Наиболее частая проблема - несоответствие версии php (обычно /usr/bin/php, но на разных хостингах путь может быть свой, в том числе в зависимости от используемой на сайте версии PHP),
  2. задача выполняется, но имеются проблемы с кодировкой. Проблема в конфигурации mbstring: сайт может быть настроен на кодировку UTF-8, а планировщик на windows-1251, и наоборот. Поэтому в команду планировщика нужно добавлять конфигурацию mbstring:
    Если Ваш сайт работает в кодировке UTF-8:
    -d mbstring.func_overload=2 -d mbstring.internal_encoding=UTF-8
    Если Ваш сайт работает в кодировке windows-1251:
    -d mbstring.func_overload=0 -d mbstring.internal_encoding=CP1251

Примеры настройки

Если нужно удалить именно .00, то делаем так:

1) выбираем необходимый инфоблок

2) выбираем действие "Замена в тексте"

3) "Поле или свойство" - выбираем свойство с текстовой ценой

4) "Что ищем" - указываем .00

5) "На что заменяем" - оставляем пустым

6) Выполняем!


Если же необходимо убрать копейки (т.е. кроме вариантов 10.00 есть например и 10.50, 20.48 и т.д.) 

то делаем так же шаги 1-3, затем:

4) Отмечаем галочку "Использовать регулярные выражения"

5) "Что ищем" - копируем это:

#(\d)\.(\d{1,2})#

6) "На что заменяем" - копируем это:

$1

7) Выполняем!







По всем вопросам обращайтесь по нашим контактным данным:

Наверх