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

Вернуться   Russian TYPO3 community > Обсуждение общих технических вопросов > Общие вопросы

Ответ
 
Опции темы Опции просмотра
Старый 29.11.2006, 18:33   #1
(:)
Senior Member
 
Регистрация: 05.04.2006
Сообщений: 105
По умолчанию Indexed_search + crawler + custom plugin

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

Описание:

Есть свой ФЕ плагин tx_myproduct_pi1 который выводит информацию о продуктах из базы.
в начале когда пользователь приходит на страницу выводиться поисковая форма по продуктам. выбрав параметры поиска пользователь жмет кнопку (запрос пост), в резудьтате выдается список урлов на продукты - в урле указан для плагина tx_myproduct_pi1[product_id]=15.
Когда пользователь кликает по ссылке, плагин выводит вместо поисковой формы информацию о выбранном продукте.

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

plugin.tx_myproduct_pi1 = USER_INT

И все отлично работает.

Однако теперь возникла необходимость индексировать информацию о каждом продукте, так чтобы пользователь мог искать продукты в плагине indexed_search и в результате поиска выдавался нужный урл с параметром к моему плагину (tx_myproduct_pi1[product_id]=15) и когда пользователь кликал по этому урлу переходил на страницу с информацией о продукте.

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

Какое может быть решение в этом случае, может кто сталкивался с подобной задачей? Я знаю что можно как-то новости индексировать. Но как это реализовано технически?

заранее спасибо
Евгений
(:) вне форума   Ответить с цитированием
Старый 29.11.2006, 22:46   #2
Valery Romanchev
Administrator
 
Аватар для Valery Romanchev
 
Регистрация: 23.08.2003
Адрес: Moscow, Russia
Сообщений: 1,926
Отправить сообщение для Valery Romanchev с помощью Skype™
По умолчанию

в последнем index_search можно задействовать crawler, который пожет по крону или при сохранении записи индексировать любую таблицу

еще crawler надо поставить.

Я делал такое индексирование для tt_news (поскольку там было 3000 новостей и пускать это на самотек - было нельзя)

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

Ситуация, когда все на кроне - там вполне нормально работает. Мне правда вредил плагин "очистка кеша ветви дерева" - он несколько раз вычищал весь индекс, пока я не сообразил, что дело именно в нем.
__________________
Веб-студия ТТЛАБ
www.ttlab.ru
Valery Romanchev вне форума   Ответить с цитированием
Старый 30.11.2006, 16:36   #3
(:)
Senior Member
 
Регистрация: 05.04.2006
Сообщений: 105
По умолчанию

привет,

кроулер позволяет в настройках запрашивать данные (uid) только из таблиц заданных в TCA массиве.

Но в моем случае я создаю таблицу просто и работаю с ней только через мои скрипты.

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

Но дело в том, что страницы не индексируются, потому-что не кешируются. Мой плагин задан как некешируемый.

Может я вобще некорректно вопрос ставлю? Может задача вывода динамических данных вобще не подразумевает индексирввание?

есть мысли?
(:) вне форума   Ответить с цитированием
Старый 30.11.2006, 17:05   #4
Valery Romanchev
Administrator
 
Аватар для Valery Romanchev
 
Регистрация: 23.08.2003
Адрес: Moscow, Russia
Сообщений: 1,926
Отправить сообщение для Valery Romanchev с помощью Skype™
По умолчанию

насколько я понял, краулер может проиндексировать что угодно. Рультаты индексации сохранятся в соответствующих таблицах index_search.
Потом index_search будет по этим таблицам искать и показывать в результатах поиска те URL, которые и в эти таблицы положил краулер.

У меня все так работает для tt_news.
Сама страница с tt_news SINGLE, на которую ведет ссылка, является кешируемой, но у нее поставлено "Вне поиска:"
__________________
Веб-студия ТТЛАБ
www.ttlab.ru
Valery Romanchev вне форума   Ответить с цитированием
Старый 30.11.2006, 17:55   #5
(:)
Senior Member
 
Регистрация: 05.04.2006
Сообщений: 105
По умолчанию

Да, я поразбирался с краулером, и там принципиально все понятно.

Индексирование просиходит как и раньше в момент, когда страница загружается. Краулер только то и делает, что автоматом загружает страницу.

Индексирует её indexed_search. А вот тут не понятно, как мне убить двух зайцев. Во первых чтоб мой плагин мог быть как бы и некешируемым и кешируемым одновременно.


т.е. идея конечно похожа на то, как ведет себя тт_ньюз, но...

не совмсем понятно как работает кеширование и генерация динамического контента. и как управлять кешированием.

что такое параметр сHash? он вроде на кеширование оказывает огромное влияние.

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

но вот я научил кролер генерить серии урлов с нужными ид. а в результате индексации выижу что только один первый урл\страница реально попала под инексирование. посмотрел доку по кроулеру нашел опицию cHash = 1 т.е. добавить в урл параметр cHash. это помогло, после чего в статисткие индексирования появились все страницы с разными ид и разными cHash. Так вот и не понятно, почему то что реально работает во Фронт Энд (по разном ид исполняется код плагина и вывоиться новый контент) а для индексирования разные ид в строке урл (т.е. урл ведь разные хоть и на странице с тем же самым pid) воспринимаются как одна?

что-то из этой области.
вопрос интересный.
(:) вне форума   Ответить с цитированием
Старый 30.11.2006, 22:50   #6
void
Senior Member
 
Аватар для void
 
Регистрация: 14.03.2006
Адрес: Russia, Penza
Сообщений: 1,504
Отправить сообщение для void с помощью ICQ
По умолчанию

На эту тему целая статья есть...
http://typo3.org/development/article...ries-of-chash/
__________________
TYPO3 FAQ
void вне форума   Ответить с цитированием
Старый 01.12.2006, 02:34   #7
(:)
Senior Member
 
Регистрация: 05.04.2006
Сообщений: 105
По умолчанию

ага спасибо, уже штудирую
(:) вне форума   Ответить с цитированием
Старый 01.12.2006, 13:03   #8
(:)
Senior Member
 
Регистрация: 05.04.2006
Сообщений: 105
По умолчанию

весьма полезный документ!

теперь все стало на свои места. спасибо касперу за потраченные 4 часа.
спасибо всем за обсуждение.

потребовалось объявить мой плагин как некешируемый USER
и внутри плагина специально указать:
1) зоны которые не надо кэшировать поисковая форма и результат поиска
$GLOBALS['TSFE']->set_no_cache();

2) генерировать линки на продукты с помощью спец методов pi_base класса.

$this->pi_linkTP($row['name'],array($this->prefixId.'[model_id]'=>$row['uid']),1)

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

спасибо всем,
Евгений
(:) вне форума   Ответить с цитированием
Ответ


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

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

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


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


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

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