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;
Oleg
22 мая 2018, 12:07
modx.pro
2
1 499
0

Комментарии: 2

Oleg
01 июня 2018, 13:20
0
У меня это все выглядит таким образом:
<?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>
Хотя можно еще подшаманить и оставить просто вызов сниппета без обертки.
    Alex Zhuravlev
    09 июля 2018, 17:42
    0
    У меня вот так сделано.

    <?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>
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      2