Собственные Keywords для блога

Собственно, началось все с того, что прочитал я статью «Вводим описание блога для поля Description вручную». Прочитал и подумал, что неплохо было бы организовать такую же вещь и для кейвордов.
Итак, приступим…
1) Подготовка БД.
Кейворды наши мы с вами, дорогие юзверя, будем брать и хранить в БД.
Поэтому выполняем вот такой вот запрос:
ALTER TABLE `prefix_blog` ADD `blog_seokeywords` text collate utf8_bin NOT NULL;

Так мы создаем отдельное поле для кейвордов каждого блога.

2) Правка /classes/modules/blog/entity/blog.entity.class.php
Все функции в этом файле начинаются либо с get, либо с Set.
Поэтому к гетовым функциям добавляем вот эту:
public function getSeokeywords() {
		return $this->_aData['blog_seokeywords'];
	}

А к сетовым — вот эту:
public function setSeokeywords($data) {
		$this->_aData['blog_seokeywords']=$data;
	}

Сохраняемся и закрываем файл, он нам больше не пригодится.

3) Правка /classes/modules/blog/mapper/blog.mapper.class.php
Тут все немного поинтереснее.
Находим строку:
public function AddBlog(BlogEntity_Blog $oBlog) {

И после, к примеру,
blog_description,
вставляем
blog_seokeywords,

После этого в Values добавляем еще один? (знак вопроса), а чуть ниже, после
$oBlog->getDescription(),
, дописываем
$oBlog->getSeokeywords(),

Далее, находим
public function UpdateBlog(BlogEntity_Blog $oBlog) {

(это недалеко)
После
blog_description= ?,
дописываем
blog_seokeywords= ?,

А еще чуть ниже, после
$oBlog->getDescription(),
— добавляем
$oBlog->getSeokeywords(),

Сохраняемся, закрываем.

4) Правка /htdocs/classes/modules/blog/blog.class.php
Ищем функцию:
public function CreatePersonalBlog(UserEntity_User $oUser) {

И перед строкой
return $this->AddBlog($oBlog);	

вставляем:
$oBlog->setSeokeywords(SITE_KEYWORDS);


5) Правка /classes/actions/actionBlog.class.php
Здесь придется немного потрудиться.
Ищем коммент:
/**
		 * Парсим текст на предмет разных ХТМЛ тегов
		 */

В конец добавляем:
$sText=$this->Text_Parser(getRequest('blog_seokeywords'));
		$oBlog->setSeokeywords($sText);

Затем повторяем операцию сначала, начиная с поиска коммента. =)
Ищем следующий коммент:
/**
			 * Загружаем данные в форму редактирования блога
			 */

Ко всем реквестам добавляем:
$_REQUEST['blog_seokeywords']=$oBlog->getSeokeywords();

Ищем следующий коммент:
/**
		 * Выставляем SEO данные
		 */

Он будет встречаться 5 (пять) раз.
Тот кусок кода (таких будет 2), где написано:
$sTextSeo=preg_replace("/<.*>/Ui",' ',$oTopic->getText());
		$this->Viewer_SetHtmlDescription(func_text_words($sTextSeo,20));
		$this->Viewer_SetHtmlKeywords($oTopic->getTags());

трогать не нужно.=)
А вот тот кусок кода, где написано:
$sTextSeo=preg_replace("/<.*>/Ui",' ',$oBlog->getDescription());
		$this->Viewer_SetHtmlDescription(func_text_words($sTextSeo,20));
,
то есть нет строки
$this->Viewer_SetHtmlKeywords($oTopic->getTags());
, дорабатываем — дописываем после него
$sTextSeo=preg_replace("/<.*>/Ui",' ',$oBlog->getSeokeywords());
		$this->Viewer_SetHtmlKeywords(func_text_words($sTextSeo,20));	

Сохраняем, закрываем, сливаем на серв.

6) Правка шаблона.
Осталось, собственно, самое простое — вывести в странице редактирования блога форму для правки кейвордов.
Открываем /templates/skin/*ваш скин*/actions/ActionBlog/add.tpl.
В нужное вам место вставляем:
<p><label for="blog_seokeywords">{$aLang.page_create_seo_keywords}:</label>
      		<input type="text" id="blog_seokeywords" name="blog_seokeywords" value="{$_aRequest.blog_seokeywords}" class="w100p" /><br />
            <span class="form_note">{$aLang.page_create_seo_keywords_notice}</span>
     		</p>


Засим все.)
Чуть позже постараюсь адаптировать хак к топикам.
Если найдете какие-либо ошибки — не стесняйтесь, комментируйте.)

8 комментариев

avatar
Под кат.
avatar
Исправлено, спасибо за замечание.
Прошу прощения.))
avatar
как это работает на практике? во время создания топика появляется еще одна форма для ключевиков? или как?
avatar
Вы совершенно правы.)
avatar
Последнее время склоняюсь к мнению тех людяй, которые утверждают, что влияние keywords на продвижение сайта ничтожно мало…
  • Mmka
  • 0
avatar
не спорю — сам из таких людей.)
однако некоторым такой хак необходим.)
avatar
хозяин — барин ;)
avatar
Естественно.)
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.