Атрибут rel="canonical"

#
Атрибут rel="canonical"
Было решение для 5-ой версии http://www.hostcms.ru/forums/17/3602/ Как реализовать для 6-ой?
#
Re: Атрибут rel="canonical"
Asl, создаете файл /modules/core/utils.php со следующим содержимым
<?php
defined('HOSTCMS') || exit('HostCMS: access denied.');

/**
* Some useful helpers
*
* @package HostCMS 6\Core
* @version 6.x
* @author James V. Kotoff
* @copyright 2013
*
* path to file: /modules/core/utils.php
*/
class Core_Utils
{
   /**
    * Core_Utils::getCanonicalUrl() - вычисляет канонический адрес страницы для link rel="canonical"
    *
    * @param mixed $iSiteId
    * @return string
    */
   static public function getCanonicalUrl($iSiteId = CURRENT_SITE)
   {
      $sUri = strval(Core_Array::get($_SERVER, 'REQUEST_URI', ''));
      $sQuery = strval(Core_Array::get($_SERVER, 'QUERY_STRING', ''));
      $sLink = str_replace('?' . $sQuery, '', $sUri);
      $oSite_Alias = Core_Entity::factory('Site', $intval($iSiteId))->getCurrentAlias();
      if(!is_null($oSite_Alias)) {
         return 'http://' . $oSite_Alias->name . $sLink;
      } else {
         return $sLink;
      }
   }
}

а потом в макете вызываете так:
<link rel="canonical" href="<?=Core_Utils::getCanonicalUrl(); ?>"/>
Заказов не беру. Консультирую редко.
#
Re: Атрибут rel="canonical"
Kotoff, Спасибо.
Вот только ругается на строку 27
#
Re: Атрибут rel="canonical"
Asl, там лишний доллар перед intval, уберите его.
$oSite_Alias = Core_Entity::factory('Site', intval($iSiteId))->getCurrentAlias();
Заказов не беру. Консультирую редко.
#
Re: Атрибут rel="canonical"
Kotoff,
В href="пусто"
#
Re: Атрибут rel="canonical"
Работает. Но ещё бы отсекать номера страниц, типа page-2, page-3
#
Re: Атрибут rel="canonical"
Asl писал(а):
Но ещё бы отсекать номера страниц, типа page-2, page-3

Это лишнее, во вред будет, имхо.

Но если вам очень хочется, то можете доработать сами.
Заказов не беру. Консультирую редко.
#
Re: Атрибут rel="canonical"
Asl писал(а):
Но ещё бы отсекать номера страниц, типа page-2, page-3

Полностью согласен с Евгением:Kotoff писал(а):
Это лишнее, во вред будет, имхо

Но это относится именно к адресам page-2, page-3 и т.д., но при использовании пагинации возникает вот такой адрес - page-1, а это полный точный дубль основной страницы и его отсечь было бы во благо...

P.S. Спасибо Евгению за предоставленное решение!
yestravel
#
Re: Атрибут rel="canonical"
Доброго времени суток!
Это решение выводит rel="canonical" на всех страницах сайта. Можно ли сделать чтобы выводились только на страницах с пагинацией?
#
Re: Атрибут rel="canonical"
marinok, а зачем, и какова логика?
Заказов не беру. Консультирую редко.
Авторизация