05
Страница приветствия. Joomla 1.5
Рубрика: joomla, работа. Автор jobДавненько не писал... Работы валом, да и сложных задач не было, о которых хотелось бы поделиться. Но вот приплыла верстка под Joomla 1.5 со страницей приветствия. Начинаю яндексить...
Скажу честно, одно говно. Я даже удивился, что за все время развития Joomla никому не пришло в голову правильного решения. Нет, нашел один сайтик кто мыслил как я, но решения поставленной задачи так и не нашел. После чего он отговорил заказчика от идеи страницы приветствия. А задача проста — при первом входе вывести страницу приветствие. Много пишут про взаимодействие index.html и index.php. Т.е. при заходе на http://сайт.ру/ мы попадаем на index.html, а там переходим на index.php. Ну что ж, алгоритм прост, но разумность его вызывает сомнения. Во первых прощай ЧПУ. Что не есть гуд. И где гарантия что случайным образом опять не попаду на 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% [?]







Напиши пожалуйста как делал проверку посетителя.
что значит проверку посетителя? Описано же, что сессия.
Еще одно условие в виде проверки поситителя, запретить показ страницы приветствия поисковому роботу и когда на сайт заходят по ссылке из поисковика.
Выложи пожалуйста исходник, что то у меня ни чего не получается.
А в чем проблема идентифицировать бота и сделать еще одну проверку false?
ну и в паутине нарыть как представляются боты
а дальше дело техники. Вот
Исходников нету, все делалось на хостинге заказчика. Что не получается, говорите.
Кстати когда то на Joomla 1.0 в админку встраивал инфу по ботам.
кусок кода идентификации:
И извиняюсь за несвоевременные ответы. Давно вышел из разряда заработка на блогинге и фрилансе. Все вижу, но не хватает времени оперативно отвечать.
Пожалуйста покажите файлы с исходниками, я столкнулся с такой проблемой, весь инет перелопатил ничего подобного не нашел, ваша статься на вес золота в данный момент!
Нету времени собирать исходники.
Попробую разжевать резину.
1. Открываем файл шаблона index.php
после проверки прямого доступа
вставляем скрипт идентификации
2. после тега body вставляем условие проверки
....... тут идет основной шаблон
3. перед закрывающим тегом /body вставляем окончание условия
4. В корне шаблона там где лежит файл index.php создает файл start.php в котором рисуем страничку приветствия.
Ну как то так. Вроде бы и действий не много, не понимаю в чем проблема.
А ну да. не путаем Index.php в корне сайта с индексом шаблона
index.php шаблона находится /templates/......./index.php
Туда же если что ложить и start.php
Если что кричите. Постараюсь собрать архив, если не поленюсь. ))))
Оставить комментарий