Здравствуйте дорогой читатель Блога RS! Сегодня, мы займемся выводом мета тегов на нашем блоге. Эту способность нашего движка необходимо было реализовать еще при создание пользовательской части, но я уже второй раз в своей практике забываю это сделать. Позор мне! Ну да ладно, главное вспомнил и сделал, а остальное уже не важно. Наша админ панель еще не умеет записывать в базу данных описание и ключевые слова наших постов, стало быть необходимо начать с этого! Давайте определим цели на сегодня...
Открываем шаблон, и добавляем два новых текстовых поля
<table width="600px" cellpadding="0" cellspacing="0" border="0" align="center">
<tr>
<td valign="top" align="center">
<form action="index.php?page=add_content" method="post" name="form">
<br>
<input style="width:600px;" name="name_post" type="text" value="Название статьи*">
<br><br>
<input style="width:600px;" name="metad_post" type="text" value="Описание статьи">
<br><br>
<input style="width:600px;" name="metak_post" type="text" value="Ключевые слова">
<br><br>
<textarea style="width:600px;height:600px;" id="txt_post" name="txt_post" rows="10">Введите текст*</textarea>
<br><br>
<input style="width:600px;" name="author_post" type="text" value="Автор*">
<br><br>
<p align="left">
<select name="menu_post">
<option value="0">Нет категории</option>
[_option]
</select>
</p>
<br><br><input type="submit" value="Добавить пост">
</form>
</td>
</tr>
</table>
На до ли тут что пояснять? Думаю не стоит, мы и так проделывали подобную операцию на протяжении всего создания блога
Делаем то же самое что и выше, за одним исключением. В атрибуте value пропишем придуманные нами код-слова
<table width="600px" cellpadding="0" cellspacing="0" border="0" align="center">
<tr>
<td width="100px" height="100px" valign="top" align="center">
<form action="?page=edd_content" method="post" name="form">
<input name="edd_id_post" type="hidden" value="[_id]">
<br><br>
<input style="width:600px;" name="edd_name_post" type="text" value="[_title]">
<br><br>
<input style="width:600px;" name="edd_metad_post" type="text" value="[_metad]">
<br><br>
<input style="width:600px;" name="edd_metak_post" type="text" value="[_metak]">
<br><br>
<textarea style="width:600px;height:600px;" id="txt_post" name="edd_txt_post" rows="10">[_text]</textarea>
<br><br>
<input style="width:600px;" name="edd_author_post" type="text" value="[_author]">
<br><br><input type="submit" value="Редактировать пост">
</form>
</td>
</tr>
</table>
После этих маленьких штрихов можно приступать к переделыванию обработчиков
Что нам необходимо добавить? Для начала нужно объявить переменные, в случае если форма заполнена и отправлена. Далее необходимо проверить два новых поля на html код, ибо спец символы могут навредить главному шаблону. Так же необходимо убрать кавычку " ' " заменить ее на вот такой код '. Ну и естественно переделать sql запрос. Приступим... ( Я выкладываю Вам лишь код обработчика, а не файл целиком )
//Объявляем переменные, если форма была заполнена и отправленна
if($_POST['name_post'])$name_post = $_POST['name_post'];
if($_POST['txt_post'])$txt_post = $_POST['txt_post'];
if($_POST['author_post'])$author_post = $_POST['author_post'];
if($_POST['menu_post'])$menu_post = $_POST['menu_post'];
if($_POST['metad_post'])$metad_post = $_POST['metad_post'];
if($_POST['metak_post'])$metak_post = $_POST['metak_post'];
//Объявляем переменные, если форма была заполнена и отправленна
if($name_post & $txt_post & $author_post)
{
$metad_post = htmlspecialchars($metad_post);
$metak_post = htmlspecialchars($metak_post);
$date_day = date("d");//Определяем день
$date_month = date("m");//Определяем месяц
$date_year = date("Y");//Определяем год
$date_time = date("H:i");//Определяем часы и минуты
$date_cont = $date_day."/".$date_month."/".$date_year." ".$date_time;//Склеим все переменные в одну
//получим дату для записи в формате день/месяц/год часы:минуты
//Избавляемся от кавычки
$name_post = str_replace("'","'",$name_post);
$txt_post = str_replace("'","'",$txt_post);
$author_post = str_replace("'","'",$author_post);
$metak_post = str_replace("'","'",$metak_post);
$metad_post = str_replace("'","'",$metad_post);
//ДОБАВЛЯЕМ ПОСТ В БАЗУ ДАННЫХ
$result_add_cont = mysql_query ("INSERT INTO blog (text,title,author,date_b,cat,meta_d,meta_k)
VALUES ('$txt_post','$name_post','$author_post','$date_cont','$menu_post','$metad_post','$metak_post')");
//ДОБАВЛЯЕМ ПОСТ В БАЗУ ДАННЫХ
header("location: index.php");//Перенаправление
exit;//на главную страницу
}
После редактирование этого модуля, наша админ панель научится сохранять описание и ключевые слова в базе данных. Теперь нам необходим научить админку редактировать введенные ранее данные.
Для начала нужно переделать функцию вывода поста на экран. Я имею ввиду заменить те код-слова, что мы внесли в шаблон eddcontent.html. Давайте реализуем это
function eddcontent($id)//Функция вывода выбранного поста
{
$result_index = mysql_query("SELECT * FROM blog WHERE id='$id'");//Выводим из базы данных пост
$myrow_index = mysql_fetch_array($result_index);
$sm_read = file("templates/eddcontent.html");//...подключаем шаблон
$sm_read = implode("",$sm_read);//функция file() возвращаем массив, поэтому склеиваем его
//Делаем замены код-слов
$sm_read = str_replace("[_title]",$myrow_index[title],$sm_read);//Название поста
$sm_read = str_replace("[_metad]",$myrow_index[meta_d],$sm_read);//Описание поста
$sm_read = str_replace("[_metak]",$myrow_index[meta_k],$sm_read);//Ключевые слова поста
$sm_read = str_replace("[_text]",$myrow_index[text],$sm_read);//Текст поста
$sm_read = str_replace("[_author]",$myrow_index[author],$sm_read);//Автор
$sm_read = str_replace("[_id]",$myrow_index[id],$sm_read);//ID постов
return $sm_read;//Выводим с генерированный html код
}
Буквально добавил две строчки кода, не более того
Теперь переделаем обработчик.
//ОБРАБОТЧИК
//Объявляем переменные, если форма была отправленна
if($_POST['edd_name_post'])$edd_name_post = $_POST['edd_name_post'];
if($_POST['edd_txt_post'])$edd_txt_post = $_POST['edd_txt_post'];
if($_POST['edd_author_post'])$edd_author_post = $_POST['edd_author_post'];
if($_POST['edd_id_post'])$edd_id_post = $_POST['edd_id_post'];
if($_POST['edd_metad_post'])$edd_metad_post = $_POST['edd_metad_post'];
if($_POST['edd_metak_post'])$edd_metak_post = $_POST['edd_metak_post'];
//Объявляем переменные, если форма была отправленна
if($edd_name_post & $edd_txt_post & $edd_author_post)
{
$edd_metad_post = htmlspecialchars($edd_metad_post);
$edd_metak_post = htmlspecialchars($edd_metak_post);
//Избавляемся от кавычки
$edd_name_post = str_replace("'","'",$edd_name_post);
$edd_txt_post = str_replace("'","'",$edd_txt_post);
$edd_author_post = str_replace("'","'",$edd_author_post);
$edd_metak_post = str_replace("'","'",$edd_metak_post);
$edd_metad_post = str_replace("'","'",$edd_metad_post);
//ОБНОВЛЯЕМ ПОСТ В БАЗЕ ДАННЫХ
$edd_blog = mysql_query ("UPDATE blog SET text='$edd_txt_post', title='$edd_name_post', author='$edd_author_post', meta_d = '$edd_metad_post', meta_k = '$edd_metak_post' WHERE id='$edd_id_post'");
//ОБНОВЛЯЕМ ПОСТ В БАЗЕ ДАННЫХ
header("location: index.php?page=all_content");//Перенаправление
exit;//на главную страницу
}
//ОБРАБОТЧИК
Суть этого пункта проста. Нам необходимо вытащить, введеную через админ панель, информацию и поместить ее в определенные переменные, которые отвечают за заголовок страницы, описание и ключевые слова.
Эти переменные Вы можете наблюдать в главном нашем шаблоне. Вот они
$header_title
$header_metaD
$header_metaK
Сейчас мы напишем небольшой код, который будет формировать нужную нам информацию, и разместим этот код почти в каждом пользовательском модуле.
Какие должны быть мета теги у этого модуля? Я особо не заморачивался по этому поводу, так как обычно продвигаю определенные статьи, а не категории. По сути в этом модуле вообще не обязательны мета теги, но вывести их нужно! Что б красивей смотрелось
@$result_meta = mysql_query("SELECT title FROM page WHERE id='1'");
@$myrow_meta = mysql_fetch_array($result_meta);
if($myrow_meta != "")
{
$result_meta_cat = mysql_query("SELECT name FROM menu WHERE id='$cat'");
$meta_cat = mysql_fetch_array($result_meta_cat);
$header_title = $myrow_meta[title]." - ".$meta_cat[name];
$header_metaD = $myrow_meta[title]." - ".$meta_cat[name];
$header_metaK = $myrow_meta[title]." - ".$meta_cat[name];
}
Давайте проанализируем код. Первые две строчки выводят название блога. Он нам необходим чтоб заголовок всех страниц всегда имел название сайта. Чем чаще упоминается название сайта тем лучше. Говорят что это помогает при раскрутки блога.
Вы могли заметить в коде, вот этот символ "@". Для чего он? В php с помощью этого символа, можно принудительно подавить вывод сообщения об ошибке. Для чего он нам тут? Представьте ситуацию, когда кто нибудь ( взломщик ) запустил этот модуль напрямую ( /moduls/cat.php ). То есть скрипт будет пытаться вывести из базы данных какую либо информацию, при этом подключение к самой базе данных не было произведено. Так как подключения к базе данных нет, произойдет ошибка. Эта ошибка может выдать некую информацию потенциальному взломщику. Что бы этого избежать, мы применим волшебный символ, и не допустим вывода сообщения об ошибке
Вернемся к анализу кода. Следующие строчки кода формируют из название блога и имени категории заголовок вот такого типа
Название сайта - имя категории
Этот кусочек кода необходимо вставить перед функцией
function index_cat($cat)
{
...
}
Принцип вывода тот же самый
@$result_meta = mysql_query("SELECT title,meta_k FROM page WHERE id='1'");
@$myrow_meta = mysql_fetch_array($result_meta);
if($myrow_meta != "")
{
$header_title = $myrow_meta[title]." - Контакты";
$header_metaD = "Связь с администрацией";
$header_metaK = $myrow_meta[meta_k];
}
Вставляется этот кусочек кода перед функцией
function contact($mess)
{
...
}
@$result_meta = mysql_query("SELECT * FROM page WHERE id='1'");
@$myrow_meta = mysql_fetch_array($result_meta);
if($myrow_meta != "")
{
$header_title = $myrow_meta[title];
$header_metaD = $myrow_meta[meta_d];
$header_metaK = $myrow_meta[meta_k];
}
Вставляем этот кусочек кода перед функцией
function index_page()
{
...
}
@$result_meta = mysql_query("SELECT title FROM page WHERE id='1'");
@$myrow_meta = mysql_fetch_array($result_meta);
if($myrow_meta != "")
{
$result_meta_blog = mysql_query("SELECT title,meta_d,meta_k FROM blog WHERE id='$blog'");
$meta_blog = mysql_fetch_array($result_meta_blog);
$header_title = $myrow_meta[title]." - ".$meta_blog[title];
$header_metaD = $meta_blog[meta_d];
$header_metaK = $meta_blog[meta_k];
}
Вставляем этот кусочек кода перед функцией
function blog($blog)
{
...
}
Не смотря на то, что процесс реализации мета тегов очень скучный и однообразный, каждая страница нашего блога теперь имеет свои мета теги, что позволит продвигает наш проект в поисковых системах. В следующем посте мы скорее всего создадим загрузчик изображений для нашего блога, но я еще подумаю, может займемся чем нить по веселее посмотрим.
Если Вам понравился мой блог, то подпишитесь на RSS ленту и не пропускайте новые публикации.
Если есть какие вопросы, комментарии по теме, или идеи для улучшения нашего проекта, пользуйтесь формой ниже
Удачи Вам, на сегодня у меня все!
Исходник |
_____
P.S.: Занимаетесь предпринимательской деятельностью в Сочи? Имеете свой интернет проект, но не пытались его раскрутить? Или пытались, но у Вас ничего не вышло? Предоставьте это людям которые разбираются в данном вопросе. Тем кто уже 6 лет успешно реализуют создание и продвижение сайтов Сочи!
http://rio-shaman.ru/razrabotka-cms/uluchshenija/avto-ustanovka-cms/
Там есть пару слов о том, что таблица blog имеет немного другую структуру, а именно содержит две новых колонки:
1. meta_d
2. meta_k
Данные колонки хранят в себе метатеги...