Доброго времени суток дорогой читатель моего блога! Спасибо что не покидаете эти страницы . Не думайте, я не забыл про наш цикл статей "Создать блог с нуля". До 6-ого октября осталось совсем не много, поэтому нет выхода кроме как собрать остатки всей своей силы в кулак, и продолжить повествовать Вам о реализации настроек для нашего небольшого движка.
Прежде чем мы дополним панель настроек новыми опциями, нам необходимо привязать все наши мини модули (ведь в настройки осталось внедрить опции по включению и отключению мини модулей) к переменным, при помощь которых, мы как раз и сможем влиять на подключение и отключение этих самых мини модулей...
В прошлом посте мы создали новую колонку в таблице page. В данной колонке уже находится два числа, с помощью которых мы можем влиять на режимы работы блога. Мы не будем сегодня что либо менять в данной таблице (оставим это на последнюю заметку по реализации настроек блога) но напишем код который будет работать с данными которые будут находится в данной таблице.
Как Вы наверное уже догадались, в колонке configblog таблицы page будет находится набор чисел, что то типа вот такого:
1|0|1|0|1|rio-shaman|rio_shaman|0|1
Каждое значение в данной строчки (одно значение отделено от другого вот таким "|" знаком) будет привязано к определенному мини модулю или режиму. Давайте поясню каждое из 9-ти значений:
Первое (1): Настройка уже реализована, она отвечает за включение и выключение режима ЧПУ на нашем блоге.
Второе (0): Тоже уже имеется в настройка, отвечает за включение и выключение режима модерации присланных комментариев
Третье (1): Будет отвечать за включение и выключение мини модуля самых читаемых постов
Четвертое (0): Данное значение будет влиять на мини модуль опроса. Если Вы помните реализацию опроса на нашем блоге, то у Вас вполне возможно может возникнуть вопрос: "Для чего нам несколько кнопок на включение и отключение модуля опроса, ведь в самом модуле можно дезактивировать активный опрос, тем самым отключить модуль?".
Отвечу.. Да, в модуле опроса есть дезактивация активных опросов, и если оставить список активных опросов пустым, то можно считать что модуль отключен, но это не совсем так. Скрипт при каждой загрузки страницы будет пытаться вытащить из базы данных активный опрос, тем самым мы будем иметь один лишний, и не нужный, sql запрос. Для того чтобы сократить sql запросы я ввел в панель настроек опцию для полного отключения данного модуля. Думаю ход моих мыслей ясен , и я ответил на вопрос "Зачем нам этот геморрой?"
Пятое (1): Это значение будет влиять на модуль подписчиков нашего блога.
Шестое (имя): Данное значение будет содержать имя аккаунта feedburner'а
Седьмое (имя): Значение аналогично предыдущему, содержит имя для аккаунта в соц системе твиттер.
Восьмое (0): Значение влияющее на мини модуль последних комментариев
Девятое (1): Последнее значение которое будет отвечать за включение и отключение мини модуля похожих постов.
На сегодня нашей задачей будет создать переменные в которые мы поместим данные значения. После чего мы для каждого модуля составим условия: если переменная имеет значение ноль, не подключать модуль. Если же единица, то подключить. В общем то задача простейшая, так что много времени не займет
Небольшое отступление для тех кто попал на данную страницу и не понимает, что тут происходит . Я почти год назад начал глобальный цикл статей "Создать блог с нуля". Данный цикл повествует не о том как скачать какой то движок, поставить его на хост и раскрутить. Нет... Данный цикл повествует о создание блога именно с нуля, то есть открывается блокнот (не дай бог конечно программировать в блокноте эт я так для красного словца) и пишется код...
Данный цикл конечно не особо интересен тем кто не хочет учится писать свои небольшие проекты на великом и могучем php. Этот цикл скорее для тех кто хочет понять принцип работы небольших сайтов, понять как можно самому написать панель для управление содержимым сайта. В общем, если Вам, дорогой читатель этих строк, интересна данная тема, то переходите по этой ссылке и приступайте к просмотру опубликованного мной материала.
Если Вы планируете задержаться на моем блоге, то обязательно подпишитесь на RSS ленту блога через ридер, или же по почте. К тому же я через пару недель опубликую уже протестированную копию данного движка, подписавшись Вы не пропустите это знаменательное событие
Все очень просто! Открываем пользовательский файл index.php и в блоке кода "Настройки блога" который мы начали писать в прошлой статье пишем следующий код (публикую полностью готовый блок кода):
//НАСТРОЙКИ БЛОГА
include("moduls/returnconfig.php");
$rconfig = returnconfig();
$rconfig = explode("|", $rconfig);
$chpu = $rconfig[0];//настройка включение выключение ЧПУ (1 - вкл; 0 - выкл)
$whitelist = $rconfig[1];//настройка включения выключения белого списка
$topdocACTIV = $rconfig[2];//модуль самых читаемых постов
$pollACTIV = $rconfig[3];//модуль опроса
$readerACTIV = $rconfig[4];//модуль "пузомерка"
$rssacc = $rconfig[5];//имя аккаунта в feedburner е
$twacc = $rconfig[6];//имя аккаунта в твиттере
$lastcommACTIV = $rconfig[7];//модуль последних комментариев
$morepostACTIV = $rconfig[8];//модуль похожих постов
//НАСТРОЙКИ БЛОГА
Переменная $rconfig содержит (до функции explode) ту самую строчку с значениями. После того как мы применили функцию explode наша переменная превращается в массив. Мы просто распределили элементы массива по переменным. Можно было этого не делать и использовать элементы массива, но имея переменную с именем "readerACTIV" (а не $rconfig[4]) можно сразу понять за что данная переменная отвечает, удобно если Вам придется позже вспоминать, что эта за переменная такая
Ну что же, переменные у нас есть, теперь осталось используя их составить условия для подключение мини модулей.
Отыскиваем, в пользовательском файле index.php, блок кода, который подключает модуль топовых постов, и награждаем данное подключение новым условием, приблизительно это выглядит вот так:
//ТОП СТАТЬИ
if ($topdocACTIV == 1)
{
include("moduls/topdoc.php");//Модуль топ статьи
$topdoc = topdoc($chpu);
}
//ТОП СТАТЬИ
Теперь, если переменная равна единице, модуль подключится. Если же переменная имеет значение ноль (или любое другой) то модуль, соответственно, не подключится.
Отыскиваем блок кода отвечающий за подключение модуля опроса, и изменяем его вот так:
//ОПРОС
if ($pollACTIV == 1)
{
include("moduls/poll.php");//подключаем модуль опроса
if(!$_COOKIE[$q])$poll = poll(0);//если куки нет
else $poll = poll(1);//если кука есть
}
//ОПРОС
Находим блок кода отвечающий за подключение данного мини модуля, и меняем код вот так:
//ВЫВОД ЧИТАТЕЛЕЙ RSS ЛЕНТЫ/ВЫВОД ЧИТАТЕЛЕЙ ТВИТТЕРА
if ($readerACTIV == 1)
{
include("moduls/reader.php");
$reader = select_reader($rssacc, $twacc);
}
//ВЫВОД ЧИТАТЕЛЕЙ RSS ЛЕНТЫ/ВЫВОД ЧИТАТЕЛЕЙ ТВИТТЕРА
Отыскиваем блок кода отвечающий за подключение модуля последних комментариев, и правим в нем код вот таким образом:
//ПОСЛДЕНИЕ КОММЕНТАРИИ
if ($lastcommACTIV == 1)
{
include("moduls/lastcomm.php");
$lastcomm = lastcomm($chpu);
}
//ПОСЛДЕНИЕ КОММЕНТАРИИ
Данный модуль подключается не в главном пользовательском файле index.php, а в файле модуля вывода полного текста заметки text.php. Поэтому открываем модуль вывода полного текста поста, отыскиваем блок кода отвечающий за подключение мини модуля и правим код вот так:
//МОДУЛЬ ПОХОЖИХ ПОСТОВ
global $morepostACTIV;
if ($morepostACTIV == 1)
{
include("moduls/morepost.php");
$more = morepost($myrow_index['cat'],$blog);
$sm_read = str_replace("[_morepost]",$more,$sm_read);
}
else
$sm_read = str_replace("[_morepost]","",$sm_read);
//МОДУЛЬ ПОХОЖИХ ПОСТОВ
Ну что же, привязка переменных к подключению модулей прошла успешно . Сейчас если запустить главную страницу нашего блога Вы не увидите не одного из мини модулей. Это объясняется тем, что переменные, которые хранят значения для управление подключениями мини модулей, не равняются единице.
В следующей заметке мы внедрим в панель настроек опции, которые позволят менять значение переменных с единицы на ноль и обратно, тем самым Вы сможете отключать и включать модули из админ панели.
Нам осталось лишь одна заметка после чего я о публикую копию движка, надеюсь данная копия кому нибудь понадобится понравится
Всего Вам наилучшего! У меня на сегодня все!
Исходник |