Компонент Вопрос-ответ - вещь полезная, однако с точки зрения SEO, несколько корявая.
Начнём с добавления возможности задать вопросу "правильный" заголовок.
1) Создадим поле seotitle в таблице cms_faq_quests, выполнив запрос:
Код PHP:
2) Откроем файл /admin/components/faq/backend.php
ALTER TABLE `cms_faq_quests` ADD `seotitle2` VARCHAR( 255 ) NOT NULL ;
Находим строку
Код PHP:
и ниже вставляем:
if ($opt == 'submit_item'){ if (!cmsCore::validateForm()) { cmsCore::error404(); }
Код PHP:
Запрос в базу приводим к виду:
$seotitle = $_REQUEST['seotitle'];
Код PHP:
Находим строки:
$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')";
Код PHP:
И ниже добавляем:
if ($opt == 'update_item'){ if (!cmsCore::validateForm()) { cmsCore::error404(); }
Код PHP:
Строки
$seotitle = $_REQUEST['seotitle'];
Код PHP:
Заменяем на
$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";
Код PHP:
Далее находим
$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";
Код PHP:
И ниже добавляем:
<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>
Код PHP:
Сохраняем файл.
<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
Перед
Код PHP:
Вставляем строку
?>
Код PHP:
Сохраняем.
$_LANG['AD_SEO_TITLE'] = 'SEO заголовок';
3) Открываем файл /components/faq/frontend.php
Находим:
Код PHP:
И заменяем на:
$inPage->setTitle($shortquest); $inPage->setDescription($shortquest); $inPage->addPathway($quest['cat_title'], '/faq/'.$quest['cat_id']); $inPage->addPathway($shortquest);
Код PHP:
Если вопросу задан SEO тайтл, то он будет использоваться в качестве тега title и в "хлебных крошках" и в мета-теге description (вместе с краткой версией вопроса).
$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); }
Далее находим строку:
Код PHP:
И после неё добавляем:
assign('quest', $quest)->
Код PHP:
Находим:
assign('seotitle', $seotitle)->
Код PHP:
И заменяем на:
//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)";
Код PHP:
Сохраняем и закрываем файл.
//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
И над строкой:
Код PHP:
Вставляем:
<table cellspacing="5" cellpadding="0" border="0" width="100%">
Код PHP:
5) Открываем файл /templates/_default_/components/com_faq_view.tpl
{if $quest.seotitle}<h2>{$quest.seotitle}</h2>{/if}
Строку:
Код PHP:
Заменяем на
<div class="faq_quest_link"><a href="/faq/quest{$quest.id}.html">{$quest.quest}</a></div>
Код PHP:
И в нужном месте выводим SEO заголовок вопросаКод PHP:
Готовить архив для заливки с заменой не стал, т.к. думаю мало кто использует движок без изменений, а так пошагово можно внести правки. Но если очень нужно - дайте знать.
{if $quest.seotitle}{$quest.seotitle}{/if}
Следующим этапом улучшения будем делать чпу ссылки для вопросов.