Всем доброго времени суток.
Компонент Вопрос-ответ — вещь полезная, однако с точки зрения SEO, несколько корявая.
Начнём с добавления возможности задать вопросу "правильный" заголовок.
1) Создадим поле seotitle в таблице cms_faq_quests, выполнив запрос:
2) Откроем файл /admin/components/faq/backend.php
Находим строку
и ниже вставляем:
Запрос в базу приводим к виду:
Находим строки:
И ниже добавляем:
Строки Заменяем на
Далее находим
И ниже добавляем:
Сохраняем файл.
2) Открываем файл
/languages/ru/admin/components/faq.php
Перед
Вставляем строку
Сохраняем.
3) Открываем файл /components/faq/frontend.php
Находим:
И заменяем на:
Если вопросу задан SEO тайтл, то он будет использоваться в качестве тега title и в "хлебных крошках" и в мета-теге description (вместе с краткой версией вопроса).
Далее находим строку:
И после неё добавляем:
Находим:
И заменяем на:
Сохраняем и закрываем файл.
4) Открываем файл /templates/_default_/components/com_faq_read.tpl
И над строкой:
или строкой
Вставляем:
5) Открываем файл /templates/_default_/components/com_faq_view.tpl
Строку:
Заменяем на
И в нужном месте выводим SEO заголовок вопроса
Готовить архив для заливки с заменой не стал, т.к. думаю мало кто использует движок без изменений, а так пошагово можно внести правки. Но если очень нужно — дайте знать.
Следующим этапом улучшения будем делать чпу ссылки для вопросов.
Компонент Вопрос-ответ — вещь полезная, однако с точки зрения SEO, несколько корявая.
Начнём с добавления возможности задать вопросу "правильный" заголовок.
1) Создадим поле seotitle в таблице cms_faq_quests, выполнив запрос:
ALTER TABLE `cms_faq_quests` ADD `seotitle` VARCHAR( 255 ) NOT NULL ;
Находим строку
if ($opt == 'submit_item'){ if (!cmsCore::validateForm()) { cmsCore::error404(); }
$seotitle = $_REQUEST['seotitle'];
$sql = "INSERT INTO cms_faq_quests (category_id, pubdate, published, quest, answer, user_id, answeruser_id, answerdate, seotitle) VALUES ('$category_id', '$pubdate', $published, '$quest', '$answer', $user_id, $answeruser_id, '$answerdate', '$seotitle')";
if ($opt == 'update_item'){ if (!cmsCore::validateForm()) { cmsCore::error404(); }
$seotitle = $_REQUEST['seotitle'];
$sql = "UPDATE cms_faq_quests SET category_id = $category_id, quest='$quest', answer='$answer', user_id='$user_id', published=$published, answeruser_id=$answeruser_id, pubdate='$pubdate', answerdate='$answerdate' WHERE id = $id LIMIT 1";
$sql = "UPDATE cms_faq_quests SET category_id = $category_id, quest='$quest', answer='$answer', user_id='$user_id', published=$published, answeruser_id=$answeruser_id, pubdate='$pubdate', answerdate='$answerdate', seotitle='$seotitle' WHERE id = $id LIMIT 1";
<tr> <td valign="top"><strong><?php echo $_LANG['AD_DATE_REPLY']; ?>: </strong></td> <td valign="top"><input name="answerdate" style="width:190px" type="text" id="answerdate" <?php if(@$mod['answerdate'] == '00.00.0000') { echo 'value="'.date('d.m.Y').'"'; } else { echo 'value="'.$mod['answerdate'].'"'; } ?>/> <input type="hidden" name="oldanswerdate" value="<?php echo @$mod['answerdate']?>"/> </td> </tr>
<tr> <td valign="top"><strong><?php echo $_LANG['AD_SEO_TITLE']; ?>: </strong></td> <td valign="top"><input name="seotitle" style="width:190px" type="text" id="seotitle" <?php if(@!$mod['seotitle']) { echo 'value=""'; } else { echo 'value="'.$mod['seotitle'].'"'; } ?>/> </td> </tr>
2) Открываем файл
/languages/ru/admin/components/faq.php
Перед
?>
$_LANG['AD_SEO_TITLE'] = 'SEO заголовок';
3) Открываем файл /components/faq/frontend.php
Находим:
$inPage->setTitle($shortquest); $inPage->setDescription($shortquest); $inPage->addPathway($quest['cat_title'], '/faq/'.$quest['cat_id']); $inPage->addPathway($shortquest);
$inPage->addPathway($quest['cat_title'], '/faq/'.$quest['cat_id']); $inPage->setTitle($seotitle); $inPage->addPathway($seotitle); $inPage->setDescription($seotitle.'. '.$shortquest);} else{ $inPage->setTitle($shortquest); $inPage->addPathway($shortquest); $inPage->setDescription($shortquest); }
Далее находим строку:
assign('quest', $quest)->
assign('seotitle', $seotitle)->
//SAVE QUESTION $sql = "INSERT INTO cms_faq_quests (category_id, pubdate, published, quest, answer, user_id, answeruser_id, answerdate, hits) VALUES ('$category_id', NOW(), '$published', '$message', '', '{$inUser->id}', 0, NOW(), 0)";
//SAVE QUESTION $sql = "INSERT INTO cms_faq_quests (category_id, pubdate, published, quest, answer, user_id, answeruser_id, answerdate, hits, seotitle) VALUES ('$category_id', NOW(), '$published', '$message', '', '{$inUser->id}', 0, '', 0, '')";
4) Открываем файл /templates/_default_/components/com_faq_read.tpl
И над строкой:
<table cellspacing="5" cellpadding="0" width="100%">
<div class="faq_quest">
{if $quest.seotitle}<h2>{$quest.seotitle}</h2>{/if}
Строку:
<div class="faq_quest_link"><a href="/faq/quest{$quest.id}.html">{$quest.quest}</a></div>
{if $quest.seotitle}{$quest.seotitle}{/if}
Следующим этапом улучшения будем делать чпу ссылки для вопросов.
Реклама #
Erwin 11 лет назад #
Петрмаг 10 лет назад #
Роман 10 лет назад #
Олег Васильевич я 10 лет назад #
Марат 10 лет назад #
Не будет работать. Нужно исправить. В таблицу вставляете колонку seotitle2, а везде обращаетесь к ней как seotitle. Думаю, просто очепятка :=)
SEOrigin 10 лет назад #
Марат 10 лет назад #
lezginka.ru 10 лет назад #