3

Google ウェブマスター ツールでは、sitemap.xml を 50,000 URL 未満にすることしか許可されていないため、sitemap.xml を分割しようとしています。次のコードを配置しました: app\code\local\Mage\Sitemap\Model\Sitemap.phpファイルに 50k 以上の URL が含まれている場合、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 管理パネルから手動でサイトマップを生成すると、すべて正常に動作します。Sitemap.xml (50,000 URL) とSitemap-1.xml (12,312 URL)の2 つのファイルが作成されます。

毎晩サイトマップを生成する cron ジョブをセットアップしました。問題は、cron ジョブがコードに従っていないように見えることです。2 つのファイルが生成されます: sitemap-1.xml (いくつあるかはわかりませんが、間違いなく 50,000 以上の URL です。なぜなら、このファイルに 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 ステートメントを追加しました。

    <depends>
        <Mage_Sitemap/>
    </depends>

これを行うと、cron ジョブが適切に機能しました。

于 2015-12-07T18:58:24.327 に答える