Russian TYPO3 community Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community  

Вернуться   Russian TYPO3 community > Тематические форумы > Разработка расширений / TYPO3 extension development

Ответ
 
Опции темы Опции просмотра
Старый 25.01.2008, 17:06   #1
(:)
Senior Member
 
Регистрация: 05.04.2006
Сообщений: 105
По умолчанию как установить title из плагина в templavoile

Всем доброго дня.

Мой плагин выводит информацию о продуктах. Для каждого продукта нужно установить свой title на странице.

Эта задача решалась установкой
$GLOBALS['TSFE']->page['title'] = "Мой заголовок";

и для правильного индексирования (бок индексд_серча)
$GLOBALS['TSFE']->indexedDocTitle = $GLOBALS['TSFE']->page['title'];

теперь есть templavoila (до этого были ТС шаблоны), которая как я понимаю сама генерит хедер хтмл.

Вопрос: Как из плагина можно аналогично подставить свой текст в title?

заранее спасибо
Евгений
(:) вне форума   Ответить с цитированием
Старый 25.01.2008, 21:56   #2
void
Senior Member
 
Аватар для void
 
Регистрация: 14.03.2006
Адрес: Russia, Penza
Сообщений: 1,504
Отправить сообщение для void с помощью ICQ
По умолчанию

Можно отключить стандартную генерацию <title> и всё сделать руками.
config.noPageTitle = true

Кроме того, (имхо) лучше и весь хедер генерировать руками вместо простановки галочек в TV. Здесь мнения расходятся, но иметь угрозу ремаппинга при каждой модификации head-части имхо хуже, чем написать 10 строк TS.
__________________
TYPO3 FAQ
void вне форума   Ответить с цитированием
Старый 28.01.2008, 18:55   #3
(:)
Senior Member
 
Регистрация: 05.04.2006
Сообщений: 105
По умолчанию

спасибо за ответ

удалось полечить. закопался в исходники темплы и тайпы

краткое описание задачи

мой плагин получает параметры в урле и выводит инфу о продуктах. Далее, страница с описанием каждого продукта должна быть еще и проиндексирована индескед_сёрчем.

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

Значит плагин должен не только показать описание продукта в контенте, а еще и задать тайтл тег для страницы. Сколько продуктов, столько и страниц со своим тайтлом в индексе.

Как работает тайпа (генерирование страницы)

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

PHP код:
$GLOBALS['TSFE']->page['title'] = "Мой заголовок"
Но как всегда возникают затыки

1) Не меняется тайтл вобще:
для того, чтобы контент плагина был проиндексирован прежде всего надо убедиться, что тип у плагина USER (т.е. кэштруемый и соответсвенно индексируемый это принципиально) а не USER_INT (т.е. динамический и соответсвенно некэштруемый и неиндексируемый).

Если тип плагина USER_INT тайпа вызывает его код после того как сгенерирован кэшируемый контент и заголовки с тайтлами. Следовательно какие-бы изменения тега тайтл не были произведены в этот момент из кода плагина, они не попадут ни во фронтенд ни в индекс.
Другими словами в этом случае нет способа изменить тайтл страницы вообще.

2) Тайтл меняется, но в поиске тайтл для страницы не совпадает с заданным нами, а остаётся таким, как задает его система автоматом.

Тут дело в том, что индексед_сёрч в процессе индексации не парсит хтмл код страницы целиком, а пользуется внутренней объектной моделью страницы, и получает доступ к отдельным полям таким как: мета, тайтл, контент и т.п.

А вместо поля
PHP код:
$GLOBALS['TSFE']->page['title'
по факту берет значение из другого поля:

PHP код:
$GLOBALS['TSFE']->indexedDocTitle 
По умолчанию в самом начале генерирования страницы тайпа просто копирует дефолтовый тайтл в это поле.
PHP код:
$GLOBALS['TSFE']->indexedDocTitle $GLOBALS['TSFE']->page['title']; 
и что самое главное это происходит до того, как система вызовет код нашего плагина.

Наша задача установить так же это поле для успешной индексации.

PHP код:
$GLOBALS['TSFE']->indexedDocTitle "Мой заголовок"
Этот механизм одинаково работает и с темплавуаля и в случае без неё.

надеюсь это поможет,
всем привет

Евгений,
Харьков

Последний раз редактировалось (:); 28.01.2008 в 19:10
(:) вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB code is Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как установить размеры объекта мультимедиа student-uni Общие вопросы 0 30.10.2007 01:05
RealUrl. Как использовать другое поле 'alias_field' => 'title' afl Общие вопросы 0 29.05.2007 17:13
как индексировать title заданный из плагина? (:) Общие вопросы 1 31.01.2007 15:09
как мне установить csh_ru Dima Общие вопросы 0 20.11.2005 06:03
Подзаголовок в title и как задавать meta-keywords MVH Общие вопросы 1 19.05.2005 20:55


Часовой пояс GMT +4, время: 21:14.


Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot

Хостинг и техническая поддержка: TYPO3 Лаборатория