Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community |
12.11.2007, 14:09 | #1 |
Продвинутый
|
tt_news, экстракт cHash для линки
Пишу расширение которое берет контент новости из tt_news c ссылкой на эту новость. При формировании ссылки не удается достать cHash. Откуда берется этот параметр???????????????
__________________
http://crimeawithme.com |
12.11.2007, 14:51 | #2 |
Senior Member
|
Генерируется функцией typolink
|
12.11.2007, 15:09 | #3 |
Продвинутый
|
Спасибо. Счас ещё этот вариант проверю. Нашел решение, как вообще не использовать cHash
надобыло немножко похакать tt_news т.е. теперь ссылка вида http://t3.test/index.php? id=новостная страница &tx_ttnews[tt_news]=новость корректно работает без добавления хвоста из Pid и cHash
__________________
http://crimeawithme.com |
14.11.2007, 19:43 | #4 |
Senior Member
|
|
14.11.2007, 22:35 | #5 |
Продвинутый
|
а куда вообще эти новости кешируются? как расчитать cHash? Почему его нет в таблицах?
__________________
http://crimeawithme.com |
15.11.2007, 13:43 | #6 | |
Senior Member
|
Цитата:
cHash расчитывается на основе параметров из URL, и позволяет typo3 кэшировать одну страницу с разным контентом. Здесь описано подробно: http://typo3.org/development/article...ries-of-chash/ В двух словах как это работает: 1. Обычно typo3 кэширует страницу по id - http://t3.test/index.php?id=ххх 2. Если на странице размещен например контент-элемент новости (а это кэшируемый тип плагина USER), то кэшируется он вместе со страницей один раз, т.е. будет показываться какая-то одна новость (та, которая попалась при первом открытии страницы). 3. Что бы на одной странице можно было показать разные новости, и при этом она кэшировалась (с разными новостями), то нужно добавить в URL cHash - тогда кэшируется страница со своим контентом именно по cHash (т.е. в кэше оказывается много вариантов одной и той же страницы). Это происходит автоматически внутри typo3 уже упомянутой функцией typolink |
|
22.11.2007, 16:50 | #7 |
Senior Member
|
Второй день бьюсь:
Вставил PHP_CONTENT на страницу. Нужно по GET-параметрам выбирать определенные данные, ссылка в таком виде: ?id=258&mon=05&day=15 Но, если я на страницу захожу без параметров mon и day - мне нужно найти последнюю имеющуюся комбинацию этих параметров, что я и делаю. Но как привязать найденные mon и day к кешированию...? В основном люди будут заходить на страницу именно только по id=258, чтобы прочитать последнее поступление. И желательно чтобы оно сразу и прокешировалось вместе с cHash Код: PHP код:
|
22.11.2007, 17:17 | #8 | |
Senior Member
|
Цитата:
Что мешает на странице без параметров вывести только последние поступления (отобрав последние записи по дате из БД) ? При этом кэширование страницы настроить на определенный срок - 1 час, 3 часа и т.п. (по умолчанию кэш храниться 24 часа). И каждые Х часов у вас будет новая кэшированная страница с последними "новостями". И вообще, посмотрите как работают другие подобные плагины и почитайте доки по их разработке. Мне кажется вы не используете массу возможностей typo3, а копаете глубоко, но не туда. |
|
22.11.2007, 17:38 | #9 |
Senior Member
|
Та "усложняю" - не то слово :-)
Последнее то я получу. Но оно ведь позже потеряется, у него нет cHash Я предполагал что сделать. Сверху страницы форма с выбором даты (день/месяц/год/номер выпуска). Ниже - текст последнего поступления. При выборе даты - передаются _GET Можно кешировать и каждые 4 часа. Тогда встречный вопрос. А как мне из формы передавать значения cHash, чтобы правильно организовать ссылку? Или это не обязательно? Просто указать cHash=1? Или Crawler мне поможет? (вспомнил про него). Вот. Наверное нужно его натравить. та залез на свою голову :-) Впервые решился заняться программированием под Typo3 и залез :-) |
22.11.2007, 22:15 | #10 | |
Senior Member
|
Цитата:
Обычно плагины наследуются от класса tslib_pibase В нем много функций вида pi_link***, которые как раз и предназначены для формирования "правильных" ссылок. При указании параметра $cache=1 будет добавляться нужный cHash (конечно только в том случае, когда плагин допускает кэширование - но это отдельный разговор - читайте доки так сказать). Также обычно в формах (типа поиска) делается скрытое поле no_cache=1. Тогда typo3 не будет кэшировать выдаваемую страницу и контент отобразиться нужный. Как в форме выбирать ссылки правильно сгенеренные pi_link* - это скорее вопрос правильно организации программы, а не такого хака typo3. В вашем случае можно делать выбор даты не в select-ах формы (это ж не удобно!), а в виде календарика. |
|