localizator sitemap
Ищу как можно настроить вывод sitemap.xml с помощью локализатора…
Но чет не могу понять как это должно работать.
Нашел на просторах вот это…
<.!--Под катом--.>
Пока ищу дальше…
Но чет не могу понять как это должно работать.
Нашел на просторах вот это…
<.!--Под катом--.>
Пока ищу дальше…
<?php
// Localizator SiteMap.xml
$output = "";
$resources = $modx->runSnippet('pdoResources', [
'parents' => 0,
'limit' => 0,
'leftJoin' => '{
"localizator" : {
"class" : "localizatorContent",
"alias" : "localizator",
"on" : "localizator.resource_id = modResource.id"
}
}',
'select' => '{ "localizator" : "modResource.*, localizator.*, modResource.id" }',
'where' => [
'localizator.key' => $modx->localizator_key,
'localizator.active' => 1,
],
'return' => 'json',
]);
if($resources) {
$resources = json_decode($resources);
foreach($resources as $resource) {
$url = $modx->config['site_url'] . $resource->uri;
$changefreq = 'weekly';
$priority = '0.5';
// дата изменения
$lastmod = date('Y-m-d', $resource->editedon ?: $resource->createdon);
/* if($row['last_review_date']){
$date = new DateTime($row['last_review_date']);
$lastmod = $date->format('Y-m-d');
} */
// пометка ежечастного обноавления, id категорий
if(in_array($resource->parent, [195, 2, 138, 196, 197, 198, 199, 24])) $changefreq = 'hourly';
// приоретитет
if(in_array($resource->id, [2, 24, 138])) $priority = '1.0';
$output .= "
<url>
<loc>{$url}</loc>
<lastmod>{$lastmod}</lastmod>
<changefreq>{$changefreq}</changefreq>
<priority>{$priority}</priority>
</url>
";
}
}
return $output;
Комментарии: 2
У меня это все выглядит таким образом:
<?php
$output = "";
$resources = $modx->runSnippet('pdoResources', [
'parents' => 0,
'limit' => 0,
'resources'=>'-9, -10',
'sortby'=>'{"id":"ASC"}',
'leftJoin' => '{
"localizator" : {
"class" : "localizatorContent",
"alias" : "localizator",
"on" : "localizator.resource_id = modResource.id"
}
}',
'select' => '{ "localizator" : "modResource.*, localizator.*, modResource.id" }',
'where' => [
'localizator.key' => $modx->localizator_key,
'localizator.active' => 1,
],
'return' => 'json',
]);
if($resources) {
$resources = json_decode($resources);
foreach($resources as $resource) {
$lang = $modx->localizator_key;
$out_uri = $resource->uri;
if($lang != 'ru'){
$url = $modx->config['site_url'] .$lang.'/'. $$out_uri;
}else{
$url = $modx->config['site_url'] . $out_uri;
}
$changefreq = 'weekly';
$priority = '0.5';
// дата изменения
$lastmod = date('Y-m-d', $resource->editedon ?: $resource->createdon);
/* if($row['last_review_date']){
$date = new DateTime($row['last_review_date']);
$lastmod = $date->format('Y-m-d');
} */
// пометка ежечастного обноавления, id категорий
if(in_array($resource->parent, [35, 36, 4])) $changefreq = 'hourly';
// приоретитет
if(in_array($resource->id, [1, 2, 3])) $priority = '1.0';
$url_our = str_replace('index', '', $url);
$output .= "
<url>
<loc>{$url_our}</loc>
<lastmod>{$lastmod}</lastmod>
<changefreq>{$changefreq}</changefreq>
<priority>{$priority}</priority>
</url>
";
}
}
return $output;
Мой вызов:<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
{'!getSiteMap' | snippet}
</urlset>
Хотя можно еще подшаманить и оставить просто вызов сниппета без обертки.
У меня вот так сделано.
Вызов тот же
<?php
$output = "";
$resources = $modx->runSnippet('pdoResources', [
'parents' => 0,
'limit' => 0,
'showHidden' => 0,
'return' => 'json',
]);
if($resources) {
$resources = json_decode($resources);
foreach($resources as $resource) {
if ($modx->localizator_key == ru) {
$url = $modx->config['site_url'] . $resource->uri;
} else {
$url = $modx->config['site_url'] . $modx->localizator_key . '/' . $resource->uri;
}
$changefreq = 'weekly';
$priority = '0.5';
// дата изменения
$lastmod = date('Y-m-d', $resource->editedon ?: $resource->createdon);
/* if($row['last_review_date']){
$date = new DateTime($row['last_review_date']);
$lastmod = $date->format('Y-m-d');
} */
// пометка ежечастного обновления, id категорий
if(in_array($resource->parent, [10, 11, 12,])) $changefreq = 'hourly';
// приоретитет
if(in_array($resource->id, [10, 11, 12])) $priority = '1.0';
$output .= "
<url>
<loc>{$url}</loc>
<lastmod>{$lastmod}</lastmod>
<changefreq>{$changefreq}</changefreq>
<priority>{$priority}</priority>
</url>
";
}
}
return $output;
Вызов тот же
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
{'!getSiteMap' | snippet}
</urlset>
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.