Добрый день!
Написал компонент для вывода архива новостей.
Слева выводится список матриц месяцев за весь выбранный год (из-за использования jcarousellite_1.0.1.pack.js мы видим только месяц с текущей выбранной датой и два предыдущих месяца, т.е. всего 3 ). Дни месяца, за которые имеются новости, выводятся в виде ссылок. При клике на такую ссылку формируется параметр, например, ?news_date=26.10.2011.
Справа, для вывода списка новостей, расположен стандартный компонент news.list, который принимает в качетстве фильтра параметр ?news_date.
С компонентом news.list все понятно - он просто фильтрует и выводит данные. При этом кэширует их, когда нужно.
А вот насчет кэша в моем компоненте да и вообще логики, думаю, что не все в порядке.
Component.php у меня формирует следующий массив:
При клике на какой-нибудь дате изменяется $_GET["news_date"], в Component.php значение этой переменной GET обрабатывается и в цикле начинается формирование массива месяцев с "месяца выбранной даты" - 2 (так как нам нужно чтобы в "каруселе" календаря показался месяц, в котором находится текущая выбранная дата и два предыдущих месяца).
В итоге при клике на какой-нибудь дате получается что массив переформировывается и по if ($this->StartResultCache(36000000)) создается новый кэш. То есть, если я правильно понял, на каждый день у меня создается отдельный кэш.
Можно ли как-то исправить этот момент? Ведь массив по сути один и тот же. Наверно, можно большинство операций из component.php перенести в template.php и уже там менять порядок месяцев в архиве за год, да и стили какие нужно определять там же?
Написал компонент для вывода архива новостей.
Слева выводится список матриц месяцев за весь выбранный год (из-за использования jcarousellite_1.0.1.pack.js мы видим только месяц с текущей выбранной датой и два предыдущих месяца, т.е. всего 3 ). Дни месяца, за которые имеются новости, выводятся в виде ссылок. При клике на такую ссылку формируется параметр, например, ?news_date=26.10.2011.
Справа, для вывода списка новостей, расположен стандартный компонент news.list, который принимает в качетстве фильтра параметр ?news_date.
С компонентом news.list все понятно - он просто фильтрует и выводит данные. При этом кэширует их, когда нужно.
А вот насчет кэша в моем компоненте да и вообще логики, думаю, что не все в порядке.
Component.php у меня формирует следующий массив:
| Код |
|---|
Array ( [MONTH8] => Array - массив месяца ( [0] => Array - массив недели ( [0] => Array - массив дня ( [day] => 01.08.2011 [ClassName] => для стилий (например current-day - текущий выбранный день) [ClassNameMonth] => для стилий [ClassTd] => для стилий [url] => /news/archive/?news_date=01.08.2011&news_year=2011&clear_cache=Y ) |
При клике на какой-нибудь дате изменяется $_GET["news_date"], в Component.php значение этой переменной GET обрабатывается и в цикле начинается формирование массива месяцев с "месяца выбранной даты" - 2 (так как нам нужно чтобы в "каруселе" календаря показался месяц, в котором находится текущая выбранная дата и два предыдущих месяца).
В итоге при клике на какой-нибудь дате получается что массив переформировывается и по if ($this->StartResultCache(36000000)) создается новый кэш. То есть, если я правильно понял, на каждый день у меня создается отдельный кэш.
Можно ли как-то исправить этот момент? Ведь массив по сути один и тот же. Наверно, можно большинство операций из component.php перенести в template.php и уже там менять порядок месяцев в архиве за год, да и стили какие нужно определять там же?