Вывод заголовка, описания и ключевых слов поста

 

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

 

 

Цель

 

  • Отредактируем формы добавления и редактирования постов, а именно добавим по два новых поля, через которые администратор будет вводить описание и ключевые слова поста
  • Переделаем обработчики добавление и редактирование постов, введем возможность сохранять введенные администратором новые поля
  • Реализуем вывод мета тегов в четырех наших пользовательских модулях. А именно в модуле категории, контакты, мини новости ( то есть главной страницы ) и в модуле вывода поста

 

Редактируем шаблоны

 

Шаблон addcontent.html

 

Открываем шаблон, и добавляем два новых текстовых поля

<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>

На до ли тут что пояснять? Думаю не стоит, мы и так проделывали подобную операцию на протяжении всего создания блога

 

Шаблон eddcontent.html

 

Делаем то же самое что и выше, за одним исключением. В атрибуте 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>

После этих маленьких штрихов можно приступать к переделыванию обработчиков

 

Редактируем админ модули

 

Модуль addcontent.php

 

Что нам необходимо добавить? Для начала нужно объявить переменные, в случае если форма заполнена и отправлена. Далее необходимо проверить два новых поля на html код, ибо спец символы могут навредить главному шаблону. Так же необходимо убрать кавычку " ' " заменить ее на вот такой код &#039. Ну и естественно переделать 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("'","&#039",$name_post);
$txt_post = str_replace("'","&#039",$txt_post);
$author_post = str_replace("'","&#039",$author_post);
$metak_post = str_replace("'","&#039",$metak_post);
$metad_post = str_replace("'","&#039",$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;//на главную страницу
}

После редактирование этого модуля, наша админ панель научится сохранять описание и ключевые слова в базе данных. Теперь нам необходим научить админку редактировать введенные ранее данные.

 

Модуль allcontent.php

 

Для начала нужно переделать функцию вывода поста на экран. Я имею ввиду заменить те код-слова, что мы внесли в шаблон 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("'","&#039",$edd_name_post);
$edd_txt_post = str_replace("'","&#039",$edd_txt_post);
$edd_author_post = str_replace("'","&#039",$edd_author_post);
$edd_metak_post = str_replace("'","&#039",$edd_metak_post);
$edd_metad_post = str_replace("'","&#039",$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

Сейчас мы напишем небольшой код, который будет формировать нужную нам информацию, и разместим этот код почти в каждом пользовательском модуле.

 

Выводим мета теги в модуле cat.php

 

Какие должны быть мета теги у этого модуля? Я особо не заморачивался по этому поводу, так как обычно продвигаю определенные статьи, а не категории. По сути в этом модуле вообще не обязательны мета теги, но вывести их нужно! Что б красивей смотрелось

@$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)
{
...
}

 

Выводим мета теги в модуле contact.php

 

Принцип вывода тот же самый

@$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)
{
...
}

 

Выводим мета теги в модуле news.php

 

@$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()
{
...
}

 

Выводим мета теги в модуле text.php

 

@$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 лет успешно реализуют создание и продвижение сайтов Сочи!

 

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

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

Ваше имя *
Сайт
Ваш E-mail *
Ваше сообщение *
 
Вы не подтвердили условия политики конфиденциальности.
Бодя, 12 Июля 2013 г. 21:15 пишет:
Гость
выполнил все как описано в этой статье, что-то не так, теперь не работает фун-ция добавления и редактирования постов, - они просто не заносятся в базу данных, где-то ошибка. Подскажите пожалуйста)
Бодя, 13 Июля 2013 г. 00:24 пишет:
Гость
и ещо, прошу прощения что в этой статье, - в визуальном редакторе установил панел смайлов, при публикации статьи смайлы не отображаются, лишь их скилет по типу :-), в чем может быть проблема?)
Алексей, 15 Июля 2013 г. 10:33 пишет:
Автор
Вы читали вот эту статью:
http://rio-shaman.ru/razrabotka-cms/uluchshenija/avto-ustanovka-cms/
Там есть пару слов о том, что таблица blog имеет немного другую структуру, а именно содержит две новых колонки:
1. meta_d
2. meta_k
Данные колонки хранят в себе метатеги...
Ответ для пользователя: Бодя
Алексей, 15 Июля 2013 г. 10:34 пишет:
Автор
Смотря какой редактор, и какие смайлы... может у Вас просто путь не правильный до папки с смайлами...
Ответ для пользователя: Бодя
SomoS, 05 Февраля 2015 г. 07:27 пишет:
Читатель
Привет) В каком уроке мы вводили таблицу page в базу данных?
Виктор, 05 Февраля 2015 г. 18:12 пишет:
Читатель
Ответ для пользователя: SomoS