Добавление canonical на сайт

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Для того чтобы добавить вывод canonical на сайт под управлением HostCMS, надо сначала создать файл utils.php со следующим содержимым


<?php
defined('HOSTCMS') || exit('HostCMS: access denied.');

/**
* Some useful helpers
*
* @package HostCMS 6\Core
* @version 6.2
* @author Rain
* @copyright 2021
*
* path to file: /modules/core/utils.php
*/
class Core_Utils
{
/**
* Core_Utils::getCanonicalUrl()
*
* @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);

  $aLink = explode('/',trim($sLink,'/'));
  if((count($aLink)>1)&&($aLink[0]=='reviews')){
    return '';
  }
  $oSite_Alias = Core_Entity::factory('Site', intval($iSiteId))->getCurrentAlias();
  if(!is_null($oSite_Alias)) {
    return 'http://' . $oSite_Alias->name . $sLink;
  } else {
    return $sLink;
  }
 }
}

Обратите внимание, на условие


$aLink = explode('/',trim($sLink,'/'));
if((count($aLink)>1)&&($aLink[0]=='reviews')){
  return '';
}

данное условие нужно для того, чтобы не выводить canonical на страницах отзыва, урл который имеет такой вид

/reviews/21721/

Далее заливаем файл на сайта, в следующую папку

/modules/core/utils.php

Выводим в макете, используя наш класс и метод Core_Utils::getCanonicalUrl();


<!DOCTYPE html>
<html lang="ru">
<head>

. . .

<?php $con = Core_Utils::getCanonicalUrl(); ?>
<?php if($con != ''){ ?>
<link rel="canonical" href="<?=$con; ?>"/>
<?php } ?>

. . .

</head>

<body>

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *