Управление блокировкой поста в нашей админке

 

Всем привет! Добро пожаловать на Блог RS! Сегодня мы закончим реализацию пунктов настроек постов в нашей админ панели. Эту очень долгую и нудную линейку статей я начал в посте "Убираем выбранные посты с главной страницы". Сегодня мы по быстрому реализуем возможность управлять блокировкой постов из нашей админ панели. После чего я подытожу возможности нашей CMS, и определю дальнейшее развитие данного проекта.

 

 


Сегодня пятница, мне очень лень описывать что-то глобальное, поэтому галопом пробежимся по подключению

 

Предисловие

 

Прежде чем я начну, хочу обратится к тем кто пришел на блог в первые. Обращение к новоприбывшем обязательная часть поста, так как 95% информации на блоге посвящено одной и той же теме, а именно созданию блога с нуля. Я уже на протяжение, приблизительно, 4-х месяцев описываю разработку своей, узкоспециализированной CMS на php. Вопрос: "Для чего?". Бог его знает для чего! Просто описываю, может кому то эта информация покажется полезной. В общем... Если Вам интересно проследить создание сайта, если быть точнее блога, то Вы пришли туда куда нужно! Переходите по ссылке, что я Вам дал чуть выше и приступайте к ознакомлению.

Если Вам понравился мой проект, то подпишитесь на RSS ленту блога через ридер, или же по почте

 

Галопом пробежимся...

 

Когда я сказал, что подключать будем очень быстро, я не соврал. Размещаю дополнения к коду, говорю где он должен находится и все! Почему так? Потому что на протяжение реализации этого списка настроек, мы неоднократно проделывали одно и тоже. Если вы не читали предыдущие посты ( "Убираем выбранные посты с главной страницы ", "Убираем модуль комментариев из нужных постов ", "Генератор карты сайта - Sitemap.xml ", "Привязываем генератор sitemap.xml к движку ", "Генератор RSS ленты для нашего блога ", "Привязываем генератор RSS ленты к нашему движку ", "Приветствие на главной странице нашего блога " ), то ознакомитесь сначала с ними, это поможет Вам понять то что я сейчас Вам дам.

Изменения будут наблюдаться, как и предыдущих постах, в функции вывода списка настроек поста, в шаблоне и в обработчике. Начнем с шаблона ( configpost.html )

<p align="right"><a href="index.php?page=all_content">К списку постов</a></p><br/>
<form action="index.php?page=cfgpost&id=[_id]" method="post" name="form">
<table width="700px" cellpadding="5" cellspacing="0" border="0" align="center">
<tr>
<td style="border-bottom:1px solid #dcdcdc;" valign="top" align="left">Видим пост в ленте новостей?</td>
<td style="border-bottom:1px solid #dcdcdc;" valign="top" align="right">
<select style="font-family:Verdana;font-weight:100;font-size:11px;" name="viewindex">
[_cfgvi]
</select>
</td>
</tr>
<tr>
<td style="border-bottom:1px solid #dcdcdc;" valign="top" align="left">Разрешить комментировать пост?</td>
<td style="border-bottom:1px solid #dcdcdc;" valign="top" align="right">
<select style="font-family:Verdana;font-weight:100;font-size:11px;" name="viewcomm">
[_cfgcomm]
</select>
</td>
</tr>
<tr>
<td style="border-bottom:1px solid #dcdcdc;" valign="top" align="left">Разместить в файле sitemap.xml?</td>
<td style="border-bottom:1px solid #dcdcdc;" valign="top" align="right">
<select style="font-family:Verdana;font-weight:100;font-size:11px;" name="sm">
[_cfgsm]
</select>
<select style="font-family:Verdana;font-weight:100;font-size:11px;" name="xmlsmup">
[_cfgsmup]
</select>
<select style="font-family:Verdana;font-weight:100;font-size:11px;" name="xmlsmpr">
[_cfgsmpr]
</select>
</td>
</tr>
<tr>
<td style="border-bottom:1px solid #dcdcdc;" valign="top" align="left">Разместить пост в RSS ленте?</td>
<td style="border-bottom:1px solid #dcdcdc;" valign="top" align="right">
<select style="font-family:Verdana;font-weight:100;font-size:11px;" name="viewrss">
[_cfgrss]
</select>
</td>
</tr>
<tr>
<td style="border-bottom:1px solid #dcdcdc;" valign="top" align="left">Блокировать пост на гл. стр.?</td>
<td style="border-bottom:1px solid #dcdcdc;" valign="top" align="right">
<select style="font-family:Verdana;font-weight:100;font-size:11px;" name="viewblock">
[_cfgblock]
</select>
</td>
</tr>
<tr>
<td valign="top" colspan="2" align="center">
<br/><br/><input type="submit" value="Сохранить настройки">
</td>
</tr>
</table>
</form>
<br/><br/>

Это полный html шаблона. Появилась новая строка в таблице. Обратите внимание на атрибут name ( viewblock ) тега select и код-слово [_cfgblock].

 

Новые строки в функции configpost() файла configpost.php

 

Сразу после строк

//-----Разместить пост в RSS ленте?----
...
//-----Разместить пост в RSS ленте?----

вставляем вот такой кусочек кода

//-----Блокировать пост на гл. стр.?----
$vblQUEtxt = array("Нет","Да");//Вариант для человека
$vblQUEint = array(0,1);//Вариант для скрипта
$vbl = queCFG($myrow_index[block],$vblQUEtxt,$vblQUEint);//формируем option для пункта "Блокировать пост на гл. стр.?"
//-----Блокировать пост на гл. стр.?----

Стандартный набор. Два варианта ответа для администратора, и два варианта ответа для скрипта. Далее после строчки

...
$sm_read = str_replace("[_cfgrss]",$vrss,$sm_read);//rss лента

вставляем вот такую строчку

$sm_read = str_replace("[_cfgblock]",$vbl,$sm_read);//блокировка поста на гл стр

 

Обработчик файла configpost.php

 

Даю Вам полный код обработчика

//ОБРАБОТЧИК
//определяем переменные
if(isset($_POST['viewindex']))$viewindex = $_POST['viewindex'];
if(isset($_POST['viewcomm']))$viewcomm = $_POST['viewcomm'];
if(isset($_POST['sm']))$sm = $_POST['sm'];
if(isset($_POST['xmlsmup']))$xmlsmup = $_POST['xmlsmup'];
if(isset($_POST['xmlsmpr']))$xmlsmpr = $_POST['xmlsmpr'];
if(isset($_POST['viewrss']))$viewrss = $_POST['viewrss'];
if(isset($_POST['viewblock']))$viewblock = $_POST['viewblock'];

//обращение к БД
if(isset($viewindex) AND isset($viewcomm) AND isset($sm) AND isset($xmlsmup) AND isset($xmlsmpr) AND isset($viewrss) AND isset($viewblock))//если переменная форма была заполнена и отправленна
{
$smCONFIGresult = mysql_query("SELECT sm,xmlsm,rss FROM blog WHERE id='$id'");//Выводим из базы данных некоторые данные для проверки
$smCONFIG = mysql_fetch_array($smCONFIGresult);

$newXMLconfig = $xmlsmup."|".$xmlsmpr;//Склеиваем инфу об обновление и приоритете в одну переменную ( monthly|0.2 )
$addrss = $smCONFIG[rss];

$newCONFIG = mysql_query ("UPDATE blog SET viewindex='$viewindex',viewcomm='$viewcomm',sm='$sm',xmlsm='$newXMLconfig',rss='$viewrss',block='$viewblock' WHERE id='$id'");//обнавляем настройки

if($smCONFIG[sm] != $sm OR $smCONFIG[xmlsm] != $newXMLconfig) sitemap($server_root);//Если настройки карты сайты изменились, то записываем их в файл
if($addrss != $viewrss) rss($server_root);//если пункт был изменен, то запускаем функцию rss()

header("location: ".getenv('HTTP_REFERER'));//Переносим пользовотеля на страницу с списком настроек
exit;
}
//ОБРАБОТЧИК

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

Ну чтож, покажу Вам приблизительно как выглядит результат.

Вот как выглядит весь список настроек целиком

 

 Что уже готово?

 

Как я и говорил, вторая часть поста итог того, что уже реализовано и описано. И планы на ближайшее будущее.

 

>Реализовано и описано

 

  • Возможность видеть ленту постов ( анонсы ) на главной странице
  • Приветствие на главной странице, управление приветствием через админ панель
  • Возможность видеть текст статей целиком
  • Комментировать эти статьи
  • Реализована капча для формы комментирования
  • Через админ панель можно удалять/добавлять/редактировать посты/пункты меню
  • Создавать каталоги в рубриках
  • Через админ панель можно загружать на блог графику и архивы zip и rar
  • Редактировать настройки постов, добавлять их ссылки в rss ленту, в карту сайта, подключать/отключать модуль комментирования

Пробежался по главным функциям нашего движка.

 

>Реализовано но НЕ описано

 

Что это значит? Я загорелся желанием перенести свой блог на этот движок, именно поэтому реализовал уже куда больше чем описал, мне нужно составить список реализованного, и опубликовать его. После чего руководствуясь им потихоньку описать все на блоге. Вот список ( естественно не подробный и может даже не полный, могу что-нить позабыть ) того что я реализовал, и собираюсь описать:

  • Древовидное меню/комментарии. В комментариях появилась кнопка "ответить", с помощью которой можно ответить на комментарий создавая "дерево". Что касается меню, то появилась возможность визуально показать какой пункт меню является каталогом а какой подкаталогом
  • Реализовал модуль галереи. Позволяет создавать на блоге портфолио и просто набор фотографий
  • Появилась возможность включить "белый список". Смысл простой, каждый новый email адрес, с которого был прислан комментарий, проверяется администратором. Если комментарий одобрен, то email адрес попадает в базу данных, после чего владелец ящика может без проверок со стороны администратора оставлять комментарии на блоге. Сделано это с целью обезопасить блог от злостных комментариев. Бан по IP в наше время бессмыслен =(
  • Подсчет подписчиков блога ( пузомерка ). Написал парсер который мониторит Ваш аккаунт в feedburner и твиттере, сохраняя количество подписчиков
  • Забыл совсем о том что форма контакты на нашем движке не дописана полностью, поэтому я ее дописал.
  • ЧПУ. Да уж. Совершенно бестолковая и в тоже время всем очень нужная штука. Убил около 4-5 ночей на реализацию ЧПУ на блоге. Сейчас очень активно ее тестирую. Само перенаправленные пользователя по ссылка вида http://rsblog.ru/post/o-avtore.html не сложно реализовать ( 5 минут ), а вот автоматически менять все генерируемые ссылки блогом еще тот геморрой!
  • Модуль опроса.
  • Пожалуй последние что стоит упомянуть, это постраничная навигация. Все остальное мелочи, правда эти мелочи заняли большую часть моего времени.

Сейчас загрузка главной страницы составляет приблизительно 16 запросов в базу данных. При этому включено все, что можно сейчас включить. В скором времени запросы естественно увеличатся но не на много. В каком порядке я буду Вам описывать не описанные возможности движка, я не знаю, пускай это будет сюрпризом для нас всех Вроде я все что хотел, сказал.

Ах да! Если Вам понравился мой проект, то подпишитесь на RSS ленту блога через ридер, или же по почте

Всего Вам наилучшего! У меня все!

Исходник
 

Возможно Вам будут интересны следующие заметки

Комментарии (2)

Ваше имя *
Сайт
Ваш E-mail *
Ваше сообщение *
 
wertock, 03 Марта 2012 г. 16:59 пишет:
Читатель
твитнул.
Rio-Shaman, 18 Марта 2012 г. 21:05 пишет:
Автор
Получилось так, что пришлось восстанавливать движок по материалам на блоге, отличный шанс проверить работоспособный ли код. Почти все коды работоспособны. Но вот именно в этом посте нашел небольшую недоговоренность. Забыл упомянуть, что в функции configpost($id) необходимо переправить запрос в базу данных, вот как должен выглядеть запрос:

$result_index = mysql_query("SELECT viewindex,viewcomm,sm,xmlsm,rss,block FROM blog WHERE id='$id'");
$myrow_index = mysql_fetch_array($result_index);

Забыл вытащить информацию из колонки block