На что конкретно ругается браузер, как исправить этот косяк? Я так понимаю, что проблема в том, что документ имеет не корректный XML формат. JSitemap вставляет в XML-файл что-то лишнее. Может ошибка в закрывающем теге </head> ? Потому что открывающего тега <head> на странице нигде нет. Если это так, то где это поправить? Я попробовал открыть файл / public_html / components / com_jmap / views / sitemap / view.xml.php , но в PHP особо не шарю, не увидел где там поправить... Вот код этого файла:
<?php
// namespace components\com_jmap\views\sitemap;
/**
* @package JMAP::SITEMAP::components::com_jmap
* @subpackage views
* @subpackage sitemap
*
@AUTHOR Joomla! Extensions Store
*
@CopyRight (C) 2015 - Joomla! Extensions Store
* @license GNU/GPLv2
Для просмотра ссылки Войди или Зарегистрируйся
*/
defined('_JEXEC') or die('Restricted access');
/**
* Main view class
*
* @package JMAP::SITEMAP::components::com_jmap
* @subpackage views
* @subpackage sitemap
* @since 1.0
*/
class JMapViewSitemap extends JMapView {
/**
* Display the XML sitemap
*
@access public
*
@Return void
*/
function display($tpl = null) {
$document = JFactory::getDocument();
$document->setMimeEncoding('application/xml');
// Call by cache handler get no params, so recover from model state
if(!$tpl) {
$tpl = $this->getModel ()->getState ( 'documentformat' );
}
$this->data = $this->get('SitemapData');
$this->cparams = $this->getModel()->getState('cparams');
$this->outputtedLinksBuffer = array();
$this->application = JFactory::getApplication();
$this->xslt = $this->getModel()->getState('xslt');
$uriInstance = JURI::getInstance();
if($this->cparams->get('append_livesite', true)) {
$customHttpPort = trim($this->cparams->get('custom_http_port', ''));
$getPort = $customHttpPort ? ':' . $customHttpPort : '';
$customDomain = trim($this->cparams->get('custom_sitemap_domain', ''));
$getDomain = $customDomain ? rtrim($customDomain, '/') : rtrim($uriInstance->getScheme() . '://' . $uriInstance->getHost(), '/');
$this->liveSite = rtrim($getDomain . $getPort, '/');
} else {
$this->liveSite = null;
}
$this->setLayout('default');
parent::display($tpl);
}
}
Может кто чего подскажет.... Заранее спасибо!
Да, а вот код файла / public_html / components / com_jmap / views / sitemap / tmpl / default_xml.php
<?php
/**
* @package JMAP::SITEMAP::components::com_jmap
* @subpackage views
* @subpackage sitemap
* @subpackage tmpl
*
@AUTHOR Joomla! Extensions Store
*
@CopyRight (C) 2015 - Joomla! Extensions Store
* @license GNU/GPLv2
Для просмотра ссылки Войди или Зарегистрируйся
*/
defined ( '_JEXEC' ) or die ( 'Restricted access' );
echo "<?xml version='1.0' encoding='UTF-8'?>" . PHP_EOL;
if($this->xslt) {
echo "<?xml-stylesheet type='text/xsl' href='" . JURI::root() . "components/com_jmap/xslt/xml-sitemap.xsl'?>" . PHP_EOL;
}
?>
<urlset xmlns:xsi="
Для просмотра ссылки Войди или Зарегистрируйся" xmlns="
Для просмотра ссылки Войди или Зарегистрируйся" xsi:schemaLocation="
Для просмотра ссылки Войди или Зарегистрируйся Для просмотра ссылки Войди или Зарегистрируйся">
<?php
foreach ( $this->data as $source ) {
// Strategy pattern source type template visualization
if ($source->type) {
$this->source = $source;
$this->sourceparams = $source->params;
$this->asCategoryTitleField = $this->findAsCategoryTitleField($source);
if($this->sourceparams->get('xmlinclude', 1)) {
$subTemplateName = $this->_layout . '_xml_' . $source->type . '.php';
if (file_exists ( JPATH_COMPONENT_SITE . '/views/sitemap/tmpl/' . $subTemplateName )) {
echo $this->loadTemplate ( 'xml_' . $source->type );
}
}
}
}
?>
</urlset>
Последний тег здесь это </urlset> . Откуда же берется </head> ???
И правильно я понимаю что такую корявую XML карту не будут хавать Яндекс и Гугл???
P.S. Мля, точно, сохранил сейчас локально через Блокнот этот код в файл с расширением .xml на компьютер, открыл браузером - без тэга </head> открывается как надо, а с тэгом </head> вылетает та же ошибка. Как убрать эту заразу? Кто вставляет этот тэг???