3

我正在尝试拆分我的 sitemap.xml,因为 Google 网站管理员工具只允许 sitemap.xml 少于 50k url。如果文件包含超过 50k 的 URL,我将以下代码放入: app\code\local\Mage\Sitemap\Model\Sitemap.php以拆分 sitemap.xml。

public function check_counter(&$io) {
static $counter;
$counter++;
$tRec = 50000; // total record per file

if ( ($counter % $tRec) == 0 ){
    $io->streamWrite('</urlset>');
    $io->streamClose();
    $filename = preg_replace('/\.xml/', '-'.
         round($counter/$tRec).
         '.xml', $this->getSitemapFilename());
    $io->streamOpen($filename);
    $io->streamWrite('<?xml version="1.0" encoding="UTF-8"?>'."\n");
    $io->streamWrite('<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">');
}

如果我从 Magento 管理面板手动生成站点地图,一切正常。它将创建 2 个文件:Sitemap.xml(50,000 个网址)和Sitemap-1.xml(12,312 个网址)

我已经设置了 cron 作业以每晚生成站点地图。问题是 cron 作业似乎不遵循代码。它生成 2 个文件:sitemap-1.xml(我不知道有多少,但肯定超过 50,000 个 url,因为 google 给我一个错误,说我在这个文件中有太多 url)和sitemap.xml(几百个 url .)

代码有什么问题?或者我的 cron 工作有什么问题?

编辑:

我放

$this->check_counter($io);

每次之后

$io->streamWrite($xml);

public function generateXml()
4

1 回答 1

1

聚会有点晚了,但这是我们解决这个问题的方法。

我们创建了一个单独的模块来容纳更改(不仅仅是将其移动到本地)例如:Namespace_Modulename

在 app/etc/modules/Namespace_Modulename.xml 文件中我们添加了如下依赖语句:

    <depends>
        <Mage_Sitemap/>
    </depends>

一旦我们这样做了,cron 作业就可以正常工作了。

于 2015-12-07T18:58:24.327 回答