Мой любимый блог

Моя работа над WordPress, Joomla, LiveStreet, SEO. Мои разработки и многое другое о жизни …

Archive for апреля, 2011

Апр
05

Страница приветствия. Joomla 1.5

Posted under joomla, работа

Давненько не писал... Работы валом, да и сложных задач не было, о которых хотелось бы поделиться. Но вот приплыла верстка под 1.5 со страницей приветствия. Начинаю яндексить...

Скажу честно, одно говно. Я даже удивился, что за все время развития Joomla никому не пришло в голову правильного решения. Нет, нашел один сайтик кто мыслил как я, но решения поставленной задачи так и не нашел. После чего он отговорил заказчика от идеи страницы приветствия. А задача проста — при первом входе вывести страницу приветствие. Много пишут про взаимодействие index.html и index.. Т.е. при заходе на http://сайт.ру/ мы попадаем на index.html, а там переходим на index.. Ну что ж, алгоритм прост, но разумность его вызывает сомнения. Во первых прощай ЧПУ. Что не есть гуд. И где гарантия что случайным образом опять не попаду на index.html. Сразу приходит в голову работа с сессиями.

Вот тут оказывается никто не копался, а если и копался то быстро сдался. Я уже и сам начал убеждать заказчика, что это лишнее телодвижение, а тот в никакую. Хацю. Мое желание для себя решить поставленную задачу пересилило. Начинаем PHP кодинг.

Нашел мануальчик Joomla класс JSession. Изучение изложенного ничего не дало. Ползем в БД. Судя по таблице _session данные сессии time, data перезаписываются при каждом обновлении страницы. Понимаю, что придется влазить в ядро и делать хак для добавление еще одного параметра (дата создания сессии) в таблицу. Подобное я когда то проделывал с Joomla 1.0 для вывода счетчика (сессий, посетителей, поисковиков) в админке. Кстати о чем также хотел написать, да времени не было. А сейчас уже и не помню что там делал ))). Ой как не люблю эти вещи, надо писать карту изменений и при каждом обновлении добавлять хаки. Ну что ж выбора нет лезем в ядро.

В процессе изучения библиотеки session.php нарыл что время жизни, т.е. время создания и последнего обновления сессии записывается в md5 параметра date. Это очень хорошо! Будет универсальный скрипт и без хаков. Оказалось все просто, странно, что этого не нашел мне яндекс
Поехали:

1
2
3
4
$session =& JFactory::getSession();
$time_start = $session->get('session.timer.start');
$time_now = $session->get('session.timer.now');
if ( $time_now == $time_start ) { $start = true; } else { $start = false; }

Проще говоря. Если создание и обновление сессии идентичны присваиваем переменной истину иначе ложь. Ну а дальше можно с этим параметром делать все что душе угодно.

Для реализации страницы приветствия, этот скрипт можно поместить в index.php шаблона сайта. Где нибудь после

1
2
...
defined( '_JEXEC' ) or die( 'Restricted access' );

и вызвать проверку условия

1
2
3
4
5
6
7
...
<body>
<?php if ( $start == false ) { ?>
... основной шаблон ...
 <?php } else { include_once('start.php'); } ?>
</body>
...

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

Ну и еще в заключении расскажу почему я применил несколько проверок условий. Во первых создание переменной $start дает нам возможность использовать его в нескольких местах. Плюс ко всему к этому условию можно добавить еще одно в виде проверки посетителя. Т.е. Если пришел поисковой робот, то ему вообще не стоит показывать страницу приветствия. Или же если вход на сайт осуществляется с поисковой системы. Что то-же по сути логично. В итоге я сделал страницу приветствия только для прямых заходов.

Пользуйтесь на здоровье...

Popularity: 58% [?]