Собственные Keywords для блога
Собственно, началось все с того, что прочитал я статью «Вводим описание блога для поля Description вручную» . Прочитал и подумал, что неплохо было бы организовать такую же вещь и для кейвордов.
Итак, приступим…
1) Подготовка БД.
Кейворды наши мы с вами, дорогие юзверя, будем брать и хранить в БД.
Поэтому выполняем вот такой вот запрос:
Так мы создаем отдельное поле для кейвордов каждого блога.
2) Правка /classes/modules/blog/entity/blog.entity.class.php
Все функции в этом файле начинаются либо с get, либо с Set.
Поэтому к гетовым функциям добавляем вот эту:
А к сетовым — вот эту:
Сохраняемся и закрываем файл, он нам больше не пригодится.
3) Правка /classes/modules/blog/mapper/blog.mapper.class.php
Тут все немного поинтереснее.
Находим строку:
И после, к примеру,
После этого в Values добавляем еще один? (знак вопроса), а чуть ниже, после
Далее, находим
(это недалеко)
После
А еще чуть ниже, после
Сохраняемся, закрываем.
4) Правка /htdocs/classes/modules/blog/blog.class.php
Ищем функцию:
И перед строкой
вставляем:
5) Правка /classes/actions/actionBlog.class.php
Здесь придется немного потрудиться.
Ищем коммент:
В конец добавляем:
Затем повторяем операцию сначала, начиная с поиска коммента. =)
Ищем следующий коммент:
Ко всем реквестам добавляем:
Ищем следующий коммент:
Он будет встречаться 5 (пять) раз.
Тот кусок кода (таких будет 2), где написано:
трогать не нужно.=)
А вот тот кусок кода, где написано:
то есть нет строки
Сохраняем, закрываем, сливаем на серв.
6) Правка шаблона.
Осталось, собственно, самое простое — вывести в странице редактирования блога форму для правки кейвордов.
Открываем /templates/skin/*ваш скин*/actions/ActionBlog/add.tpl.
В нужное вам место вставляем:
Засим все.)
Чуть позже постараюсь адаптировать хак к топикам.
Если найдете какие-либо ошибки — не стесняйтесь, комментируйте.)
Итак, приступим…
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 комментариев
Прошу прощения.))
однако некоторым такой хак необходим.)