Не зарегистрирован
Вход
Забыли пароль?
Регистрация
Подписаться
Сэкономьте время — перед вопросом на форуме узнайте, как найти ответ быстрее
По техническим проблемам необходимо обращаться в Консультационный центр

Поиск по форуму: 

Приглашаем в блог Amiro.CMS. Регулярные обзоры, опыт, решения, практикумы.

Форум  ->   Разработка плагинов, вопросы по API  ->  Как работать с мета-тегами страницы в собственных компонентах?

Раздел для разработчиков. Обсуждение создания плагинов, вопросы и пожелания по API Amiro.CMS

Добавлено: 02.06.15 20:27:41 #1



Регистрация: 10.06.14
Сообщений: 35


Обратиться по имени

Добрый день, мне нужно задать seo-теги на странице элемента собственного модуля. Модуль без собственной таблицы, данные берет из базы, в основном из справочников магазина, оттуда же берутся seo-данные, но вот как мне их задать в компоненте отображения элемента (***_DetailsViewFrn) я не нашел, единственный метод в документации который по описанию подходит, handleSEOProcess не объявлен, а после объявления в классе не вызывается автоматически.
У AMI_Module_Frn есть метод processSEO, пробовал переопределить его в своем компоненте, получилось, но он ничего не принимает и что должен делать неясно. Пробовал в конструкторе модуля подписаться на on_before_seo_process но там тоже на вход пришел только объект AMI_Module_Frn моего модуля. Смотрел шаблон компонента (AMI_iTemplate), тоже вроде нет методов для задания мета-тегов, в общем переспотрел все что мог но так и не нашел. Подскажите пожалуйста что делать и куда копать.



Добавлено: 03.06.15 11:06:58 #2

Амиро



Регистрация: 21.03.07
Сообщений: 258


Обратиться по имени

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



Добавлено: 04.06.15 11:04:18 #3



Регистрация: 10.06.14
Сообщений: 35


Обратиться по имени

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



Добавлено: 04.06.15 11:52:34 #4

Амиро



Регистрация: 21.03.07
Сообщений: 258


Обратиться по имени

В файл "_local/front_functions.php" добавьте следующий код:
AMI_Event::addHandler('v5_on_apply_data', 'cstV5OnApplyData', AMI_Event::MOD_ANY);

function cstV5OnApplyData($name, array $aEvent, $handlerModId, $srcModId){
    if(
        'page_body' == $aEvent['type'] &&
	// проверки на id модуля, id элемента согласно описанию класса реестра
        // http://manual.amiro.ru/docs/api6/Environment/AMI_Registry.html
    ){
        // $aEvent['aData']['headers'] - массив, в котором можно модифицировать следующие метаданные:
	// $aEvent['aData']['headers']['title']
	// $aEvent['aData']['headers']['keywords']
	// $aEvent['aData']['headers']['description']
    }

    return $aEvent;
}





Создать новую тему

Всего тем: 6630
Всего сообщений: 27746
Всего зарегистрированных пользователей: 48912
Последний зарегистрированный пользователь: user33269596