Добрый день! Необходимо сгенерировать sitemap на сайте с shopkeeper+migx. Сниппет shk_sitemap генерирует правильный url до основных категорий, но для документов не указывает родительскую категорию. В настройках «Использовать вложенные URL» — нет. Так все категории имеют 2 уровень вложенности, но документы 3 уровень вложенности(у них отображается родительский контейнер). В итоге в sitemap.xml мы видим следующие урл для документов site.ru/page1, когда должно быть site.ru/category/page1
Вот собственно сам код:
foreach ( $packageNames as $key => $packageName ){

    $parentName = $packageName == 'modResource' ? "parent" : "resource_id";
    $select = array('id','alias','editedon','createdon',$parentName);
    if( $packageName != 'modResource' ){
        $modelpath = $modx->getOption('core_path') . 'components/' . $packageName . '/model/';
        $modx->addPackage($packageName, $modelpath);
    }
    else{
        $select = array_merge( $select, array('context_key','isfolder') );
    }

    $where=array( 'published' => 1 );
    if($config['excludeModResIds'] && $packageName == 'modResource'){
        $ids=array('id:NOT IN' => explode(',',$config['excludeModResIds'] ));
        array_push($where,$ids);
    }
    if($config['excludeModContIds']&& $packageName == 'modResource'){
        $ids=array('parent:NOT IN' => explode(',',$config['excludeModContIds'] ));
        array_push($where,$ids);
    }
    $resources = getMapQuery($classNames[$key],$select,$where);
    if(!empty($resources)){
        foreach ( $resources as $resource ){
            if(!empty($resource['alias'])){
                if (!isset($resource['context_key'])) {
                    $resource['context_key'] = !empty( $contexts[$key] ) ? $contexts[$key] : $contexts[0];
                }
                if ( $resource[$parentName] != 0 ){
                    $url = $modx->makeUrl($resource,'','modResource','full');
                }
                else{
                    $url = $config['site_url'];
                }

                $url .=substr($url, -1)=='/' ? $resource['alias'] : '/'.$resource['alias'];
                $url .= !empty( $resource['isfolder'] ) ? $config['containerSuffix'] : $config['urlSuffix'];



                if ($packageName == 'modResource'&& $resource['id']==$config['site_start']){
                    $url=$config['site_url'];
                }

                $date = !empty( $resource['editedon'] ) ? $resource['editedon'] : $resource['createdon'];
                $date = strftime( '%Y-%m-%d', $date );
                $date = date("Y-m-d", strtotime($date));

                /* Get the date difference */
                $datediff = datediff("d", $date, date("Y-m-d"));
                if ($datediff <=1) {
                    $priority = '1.0';
                    $update = 'daily';
                } elseif (($datediff >1) && ($datediff<=7)) {
                    $priority = '0.75';
                    $update = 'weekly';
                } elseif (($datediff >7) && ($datediff<=30)) {
                    $priority = '0.50';
                    $update = 'weekly';
                } else {
                    $priority = '0.25';
                    $update = 'monthly';
                }

                $output .= "
            <url>
                <loc>{$url}</loc>
                <lastmod>{$date}</lastmod>
                <priority>{$priority}</priority>
                <changefreq>{$update}</changefreq>
            </url>";
            }
        }
    }
}