Hol1killer спасибо, с главной страницей разобрался. Но вот как поменять эти самые условия в файлах шаблона материала и категории?
Ты можешь выложить свой код полностью для файлов шаблона материала и категории? А то что то не догоняю я как там нужно условие изменить.
Заранее благодарен!
Можно использовать и те что в шапке темы использованы, они должны сработать.
Моя версия просто строже: приведу на всякий случай
blog.php
// ------------ Start Canonical-Mod
$mainmenu =& JSite::getMenu();
if($mainmenu->getActive()!== $mainmenu->getDefault('ru-RU')) :
$document = JFactory::getDocument();
$livesite = substr_replace(JURI::root(), '', -1, 1);
$docpagenr = '';
$docstart = JRequest::getInt('start',0);
if($docstart>0) :
// Если хотим чтобы в канонической ссылке прописывалась постраничная разбивка типа start=10..., то раскомментируем сроку ниже. В противном случае будет индексироваться только главная страница категории
//$docpagenr = '?start='.$docstart;
endif;
$docroute = JRoute::_(ContentHelperRoute::getCategoryRoute($this->category->id));
$document->addHeadLink($livesite . $docroute . $docpagenr, 'canonical', 'rel', '');
endif;
// ------------ End Canonical-Mod
article.php
// ------------ Start Canonical-Mod
$mainmenu =& JSite::getMenu();
if($mainmenu->getActive()!== $mainmenu->getDefault('ru-RU')) :
$requrl = trim($_SERVER['REQUEST_URI']);
$document = JFactory::getDocument();
$livesite = substr_replace(JURI::root(), '', -1, 1);
$docpagenr = '';
$docstart = JRequest::getInt('start',0);
if($docstart>0) :
// Если хотим чтобы в канонической ссылке прописывалась постраничная разбивка типа start=10..., то раскомментируем сроку ниже. В противном случае будет индексироваться только главная страница материала
//$docpagenr = '?start='.$docstart;
endif;
$docroute = $this->item->readmore_link;
// Начало проверки системной ссылки в запросе. (для редиректа 301 или отдачи ошибки 404.)
(bool)$valideurl = strpos( $requrl, $docroute );
if ($valideurl === false) :
header("HTTP/1.1 301 Moved Permanently");
header("Location: " . $livesite . $docroute);
header("Connection: close");
exit();
// Если хотим отдать ошибку 404, то закомментируем 4 строки выше этой, и раскомментируем 1 сроку ниже.
//JError::raiseError(404, JText::_('PAGE COULD NOT BE FOUND'));
endif;
// Конец проверки системной ссылки в запросе.
$document->addHeadLink($livesite . $docroute . $docpagenr, 'canonical', 'rel', '');
endif;
// ------------ End Canonical-Mod
а вообще лучше делать следующее условие:
if($mainmenu->getActive()!== $mainmenu->getDefault('ru-RU') && ($mainmenu->getActive()!== $mainmenu->getDefault('en-GB')) :
И так все языки объединить логическим И.
а для VirtueMart 2.0. как сделать? В шаблоны вывода что ли пихать код?(((
Пихать в любом случаи в шаблоны вывода. Вам лишь нужно изменить
$docroute = $this->item->readmore_link;
эту строчку в переменную $docroute вам нужно получить URL товара.
Сам с VirtueMart не работал не разу точно не скажу. В шаблоне вывода можете распечатать через var_dump($this) и посмотреть что она содержит и найти там ссылку до товара. Тоже самое и в категории товаров. Или почитать в документации.
Надеюсь помог, буду признателен за +