Вход Регистрация
Файл: system/controllers/sitemap/hooks/cron_generate.php
Строк: 60
<?php

class onSitemapCronGenerate extends cmsAction {

    public function 
run(){

        
// автоматическое получение опций через $this->options здесь не
        // работает, потому что форма опций не содержит полей, они заполняются
        // динамически в админке
        
$options = $this->loadOptions($this->name);

        if (!
$options) { return false; }

        
$sources_list = $options['sources'];

        if (!
$sources_list) { return false; }

        
$config = cmsConfig::getInstance();

        
$sources = array();
        
$sitemaps = array();

        foreach(
$sources_list as $item=>$is_enabled){
            if (!
$is_enabled) { continue; }
            list(
$controller_name, $source) = explode('|', $item);
            
$sources[$controller_name][] = $source;
        }

        foreach(
$sources as $controller_name => $items){

            
$urls = array();

            
$controller = cmsCore::getController($controller_name);

            foreach(
$items as $item){

                
$urls = $controller->runHook('sitemap_urls', array($item));
                
                if (!
$urls) { continue; }

                
$xml = cmsTemplate::getInstance()->renderInternal($this, 'sitemap', array(
                    
'urls' => $urls
                
));

                
$sitemap_file = "sitemap_{$controller_name}_{$item}.xml";

                
file_put_contents($config->root_path . "cache/static/sitemaps/{$sitemap_file}", $xml);

                
$sitemaps[] = $sitemap_file;

            }

        }

        
$xml = cmsTemplate::getInstance()->renderInternal($this, 'sitemap_index', array(
            
'sitemaps' => $sitemaps,
            
'host' => $config->host
        
));

        
file_put_contents(cmsConfig::get('root_path') . 'cache/static/sitemaps/sitemap.xml', $xml);

        return 
true;

    }

}
Онлайн: 1
Реклама