Joomla 2.5 добавляет дублированный мета-тег canonical из другого представления в текущее представление при включенном кэше

#joomla #joomla2.5

#joomla #joomla2.5

Вопрос:

Я использую Joomla! 2.5.17 Стабильная версия Joomla. Я создал компонент, который использует код для добавления канонического URL:

 $document = JFactory::getDocument();
$document->addCustomTag("some custom code");
$document->addCustomTag("<link rel="canonical" href="$theCorrectCanonical" />");
 

он находится в components/my-component/views/my-view/tmpl/default.php

Поскольку у меня много просмотров, он определен в каждом представлении для my-view, my-view2 и т. Д.

Он работал нормально. Каноническая ссылка была добавлена правильно. Событие, если у меня был включен кеш. И в последнее время я отключил модули, которые мне больше не нужны. Поэтому я отключил их, и после этого сайт работал нормально. Внезапно я обнаружил, что Google помечает мои страницы как неканонические. Просмотрев код веб-сайта, я заметил, что заголовок HTML выглядит следующим образом:

 some custom code
<link rel="canonical" href="correct-url" />
<link rel="canonical" href="url-of-a-page-i-visited-second-ago" />
 

Похоже, что по какой-то сумасшедшей причине Joomla рекламирует не только правильный canonical, но и канонический тег другой подстраницы, которую я посетил секунду назад. Заставить Google поверить, что это неканоническая другая страница.

Я пытался найти решение, но не нашел ни одного. Также я заметил, что когда я отключаю кэш в конфигурации с:

 public $caching = '0';
 

И в Addons -> System cache (я отключаю его). Все возвращается в нормальное русло. Он не добавляет второй мета-тег canonical.

Index.php мой шаблон выглядит следующим образом:

 <?php

/**
 * @version                $Id: index.php 21518 2011-06-10 21:38:12Z chdemko $
 * @package                Joomla.Site
 * @subpackage  Templates.beez_20
 * @copyright        Copyright (C) 2005 - 2011 Open Source Matters, Inc. All rights reserved.
 * @license                GNU General Public License version 2 or later; see LICENSE.txt
 */

$resourcesVersion = "1.1";
$this->setGenerator('');

// No direct access.
defined('_JEXEC') or die;

// check modules
$showRightColumn        = ($this->countModules('position-3') or $this->countModules('position-6') or $this->countModules('position-8'));
$showbottom                        = ($this->countModules('position-9') or $this->countModules('position-10') or $this->countModules('position-11'));
$showleft                        = ($this->countModules('position-4') or $this->countModules('position-7') or $this->countModules('position-5'));

if ($showRightColumn==0 and $showleft==0) {
        $showno = 0;
}

JHtml::_('behavior.framework', true);

// get params
$color              = $this->params->get('templatecolor');
$logo               = $this->params->get('logo');
$navposition        = $this->params->get('navposition');
$app                = JFactory::getApplication();
$doc        = JFactory::getDocument();
$templateparams     = $app->getTemplate(true)->params;

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>" >
<head>
<jdoc:include type="head" />
<meta name="viewport" content="width=device-width, initial-scale=1" />          
some stylesheets embedded directly
some scripts embedded directly
a meta tag embedded directly
</head>
 

У меня закончились идеи, почему он ведет себя таким образом. Я не знаю, откуда взялся второй канонический. Он не задан в отображаемом в данный момент представлении. Такой канонический задается только другим представлением в том же компоненте. Но как это попадает в другой код представления? И только с cache = on?

Есть ли у вас какие-либо подсказки, которым я мог бы следовать, чтобы выяснить, в чем здесь проблема?

Комментарии:

1. У вас уже есть учетная запись Joomla Stack Exchange. Почему бы не опубликовать свой вопрос в службе поддержки Joomla там, где есть добровольцы, хорошо знающие Joomla?

2. @mickmackusa Вы уверены в этом?

3. Это был мой опыт, да. Ваша щедрость указывает на то, что мой совет не был хорошо принят. Удачи.

4. @mickmackusa Извините, если вы так себя чувствовали. Это была хорошая рекомендация. И хорошая поддержка! К сожалению, люди, которые могут это знать, разделены здесь и там. Ну … по крайней мере, я надеюсь, что bounty поможет.

5. Насколько я знаю, перекрестная публикация тоже в порядке. …J2.5 — это долгий путь назад.