0
huebert-webentwicklung.de/sitemap.xmlのprocesswire 3用のサイトマップを生成するには、どうすればPlugin MarkupSitemapXMLで動作しません。どのようにそれを動作させるためにどのようなアイデア?Sitemap-XML for Processwire 3
ありがとうございました。
huebert-webentwicklung.de/sitemap.xmlのprocesswire 3用のサイトマップを生成するには、どうすればPlugin MarkupSitemapXMLで動作しません。どのようにそれを動作させるためにどのようなアイデア?Sitemap-XML for Processwire 3
ありがとうございました。
新しいページテンプレート(sitemap.xml)を作成し、ページ出力をPWバックエンドのXMLに設定します。ページを作成してリンクします(非表示に設定します)。
function renderSitemapPage(Page $page) {
return
"\n<url>" .
"\n\t<loc>" . $page->httpUrl . "</loc>" .
"\n\t<lastmod>" . date("Y-m-d", $page->modified) . "</lastmod>" .
"\n</url>";
}
function renderSitemapChildren(Page $page) {
$out = '';
$newParents = new PageArray();
$children = $page->children;
foreach($children as $child) {
$out .= renderSitemapPage($child);
if($child->numChildren) $newParents->add($child);
else wire('pages')->uncache($child);
}
foreach($newParents as $newParent) {
$out .= renderSitemapChildren($newParent);
wire('pages')->uncache($newParent);
}
return $out;
}
function renderSitemapXML(array $paths = array()) {
$out = '<?xml version="1.0" encoding="UTF-8"?>' . "\n" . '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
array_unshift($paths, '/'); // prepend homepage
foreach($paths as $path) {
$page = wire('pages')->get($path);
if(!$page->id) continue;
$out .= renderSitemapPage($page);
if($page->numChildren) $out .= renderSitemapChildren($page);
}
$out .= "\n</urlset>";
return $out;
}
header("Content-Type: text/xml");
echo renderSitemapXML();
http://www.huebert-webentwicklung.de/sitemap.xmlがここで動作するようですか?とにかく、もう1つの役に立つリソースは次のようなものです:http://processwire-recipes.com/recipes/create-xml-sitemap-for-every-language/ – lynx