![]() |
Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community |
|
|
|
|
#1 |
|
Senior Member
|
Второй день бьюсь:
Вставил PHP_CONTENT на страницу. Нужно по GET-параметрам выбирать определенные данные, ссылка в таком виде: ?id=258&mon=05&day=15 Но, если я на страницу захожу без параметров mon и day - мне нужно найти последнюю имеющуюся комбинацию этих параметров, что я и делаю. Но как привязать найденные mon и day к кешированию...? В основном люди будут заходить на страницу именно только по id=258, чтобы прочитать последнее поступление. И желательно чтобы оно сразу и прокешировалось вместе с cHash Код: PHP код:
|
|
|
|
|
|
#2 | |
|
Senior Member
|
Цитата:
Что мешает на странице без параметров вывести только последние поступления (отобрав последние записи по дате из БД) ? При этом кэширование страницы настроить на определенный срок - 1 час, 3 часа и т.п. (по умолчанию кэш храниться 24 часа). И каждые Х часов у вас будет новая кэшированная страница с последними "новостями". И вообще, посмотрите как работают другие подобные плагины и почитайте доки по их разработке. Мне кажется вы не используете массу возможностей typo3, а копаете глубоко, но не туда. |
|
|
|
|
|
|
#3 |
|
Senior Member
|
Та "усложняю" - не то слово :-)
Последнее то я получу. Но оно ведь позже потеряется, у него нет cHash Я предполагал что сделать. Сверху страницы форма с выбором даты (день/месяц/год/номер выпуска). Ниже - текст последнего поступления. При выборе даты - передаются _GET Можно кешировать и каждые 4 часа. Тогда встречный вопрос. А как мне из формы передавать значения cHash, чтобы правильно организовать ссылку? Или это не обязательно? Просто указать cHash=1? Или Crawler мне поможет? (вспомнил про него). Вот. Наверное нужно его натравить. та залез на свою голову :-) Впервые решился заняться программированием под Typo3 и залез :-) |
|
|
|
|
|
#4 | |
|
Senior Member
|
Цитата:
Обычно плагины наследуются от класса tslib_pibase В нем много функций вида pi_link***, которые как раз и предназначены для формирования "правильных" ссылок. При указании параметра $cache=1 будет добавляться нужный cHash (конечно только в том случае, когда плагин допускает кэширование - но это отдельный разговор - читайте доки так сказать). Также обычно в формах (типа поиска) делается скрытое поле no_cache=1. Тогда typo3 не будет кэшировать выдаваемую страницу и контент отобразиться нужный. Как в форме выбирать ссылки правильно сгенеренные pi_link* - это скорее вопрос правильно организации программы, а не такого хака typo3. В вашем случае можно делать выбор даты не в select-ах формы (это ж не удобно!), а в виде календарика. |
|
|
|
|
|
|
#5 |
|
Senior Member
|
Я бы не назвал это Плагином :-) Просто небольшой скрипт, который к тому же не работает с базой данных, а работает с файлами.
Скрипт мой наследует tslib_pibase, но pi_link*** - на сколько я понял, организовывают ссылку уже внутри скрипта, но у меня сразу выдается содержимое. pi_link - действительно можно будет использовать в календарике (это пока только в планах заменить форму на календарик). Пока решил обойтись Crawler-ом и кешированием через 3-4 часа. Но тут есть несколько моментов: новые данные могут поступить и через 3 часа (чаще - уж врядли), но и через 2 недели. И кеширование страницы каждые 3 часа может быть впустую (а это минимум 250 кБт). И второе - научить неподготовленных пользователей работе с Crawler, это будет самое сложное :-) А вот если бы сразу системе определить и передать cHash, чтобы она с ним проиндексировалась - это было бы решение проблемы. Я пока еще буду биться :-) Вчера, ради интереса, вспомнил и попробовал с 10-к других CMS - всетаки как Typo3 отличается от них. Я теперь на 200% уверен в своем выборе :-) |
|
|
|
|
|
#6 | |
|
Senior Member
|
Цитата:
Также можно настроить кэширование на много дней, а при поступлении новых данных очищать кэши для нужных страниц. Этот "хак" вряд ли сработает. TYPO3 делает выборку из кэша до того, как будут выполнены ваши скрипты. Поэтому программно добавить cHash уже на этапе генерации страницы ничего не даст в плане работы кэширования. |
|
|
|
|