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()