Всем привет.
У меня возникла несколько нестандартная задача и очень надеюсь на подсказку. Постараюсь подробно описать. Суть в том, что у меня на сайте есть страница с новостями, в которой по умолчанию выводятся новости за ТЕКУЩУЮ дату. Справа в колонке есть календарь, в котором можно выбрать любую дату и тогда отобразятся новости за выбранную дату. Сам механизм работы с датой очень простой. Сама страница новостей имеет адрес типа http://sitename/news , а при клике на дату в календаре, например, на 21 янв. 2011 года ссылка становится http://sitename/news?date=20110121 Все работает нормально, но есть одно НО. мне нужно избавиться от этого GET-хвоста и вместо
http://sitename/news?date=20110121 сделать
http://sitename/news/date/20110121.
Можно это сделать с помощью mod_rewrite, но пока что это вариант мне не подходит. Я поступил другим способом. Создал плагин:
$url = parse_url($_SERVER[REQUEST_URI]);
$url_array=explode("/",$url[’path’]);
$link=array_pop($url_array);
$path=implode("/",$url_array);
$domain = substr($modx->config[’site_url’], 0, strlen($modx->config[’site_url’])-1);
if ($path=="/news/date" ) {
ob_start();
echo file_get_contents($domain."/news/date?=".$link);
$content = ob_get_contents();
ob_end_clean();
if($content) {
echo $content; exit();
}
}
И повесил его на событие OnPageNotFound
Все работает нормально. Но в таком случае на отдаваемой странице пропадают переменные сессии. Т.е. если я был залогинен на сайте. то при выводе страницы этим плагином я уже НЕ ЗАЛОГИНЕН. это и понятно, ведь file_get_contents просто отдает контент, не учитывая переменные сессии. Но меня это не устраивает. Я попробовал вместо file_get_contents использовать $modx->sendForward , но таким способом можно отобразить страницу либо по алиасу, либо по ИД. А подставить GET запросы в конец не получится. С помощью $modx->sendRedirect номарльно, но вместо
http://sitename/news/date/20110121 перебрасывает обратно на
http://sitename/news?date=20110121 - а это мне не нужно.
В обшем, вопрос в том, как мне с помощью этого плагина отобразить нужную страницу, при этом чтобы обработался GET и сохранились сессии + УРЛ остался вида
http://sitename/news/date/20110121. Заранее очень благодарен за наводку или на готовое решение.