Добавление своего тега к доп. свойству в XML

#
Добавление своего тега к доп. свойству в XML
Добрый вечер!

Есть задача: ко всем дополнительный свойствам типа file добавить тег, содержащий расширение файла. Сначала была идея получить расширение из имени файла в XSLT, но нормального решения (без использования PHP функции в XSL) мне найти не удалось.

Подскажите, пожалуйста, как правильнее будет реализовать данную задачу. Я думаю это можно попробовать сделать или через хук, или добавив некий код в ТДС. Может быть есть какой-то готовый пример, буду очень благодарен, если поделитесь ссылкой или скопируете его сюда.

Заранее, большое спасибо!
#
Re: Добавление своего тега к доп. свойству в XML
Trogvar,
Примерно вижу так: Можно воспользоваться Хуком. Например как "Ограничение выводимых тегов инфоэлемента для значений дополнительного свойства типа инфосистема". В вашем случае смотрите таблицу property_value_files, в имени файл выделаете расширение в PHP есть функция например SplFileInfo::getExtension далее кладете в отдельный Тег:
$object->addXmlTag('extTag', {Расширение файла});
.
E-mail: info@syrbek.ru / телега: @syrbek /skype: activexm / syrbek.ru / Поддержка сайтов / г. Москва [HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, Git, SVN, Redmine]
#
Re: Добавление своего тега к доп. свойству в XML
Seri,
Большое спасибо за наводку!
#
Re: Добавление своего тега к доп. свойству в XML
Добрый день!

Прошу опытных коллег посмотреть все ли правильно я сделал и там ли разместил файл.

Получил такой код:

<?php
class Property_Value_File_Observer
{
   static public function onBeforeGetXml($object, $args)
   {
      $oProperty = $object->Property;
      if($oProperty->type == 2 && $object->property_id == 118 && Core::moduleIsActive('shop'))
      {
         $object->addXmlTag('file_ext', substr(strrchr($object->file_name, '.'), 1));
      }
   }
}
?>


Проверку "$object->property_id == 118" добавил, чтобы тег с расширением был только у определенного дополнительного свойства типа файл. В этом свойстве хранятся файлы документов (сертификаты, декларации, инструкции и т.п.), связанные с товаром.

Назвал файл observer.php и разместил в /modules/property/value/file/observer.php
Авторизация