#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 — это долгий путь назад.