Exemplo n.º 1
0
function default_components()
{
    // запоминаем результат, чтобы несколько раз не вызывать функцию mso_get_path_files
    static $all = false;
    if ($all === false) {
        $all = mso_get_dirs(getinfo('template_dir') . 'components/', array(), true);
    }
    return '0||' . tf('Отсутствует') . '#' . implode($all, '#');
}
Exemplo n.º 2
0
/**
*  возвращает массив структуры всех pages
*  включается title description keywords date dir url, а также массива $DATA в variables.php
*  date — время создания файла text.php (или явно заданное в $DATA['date'])
*  
*  @param $include — включить только указанные страницы
*  @param $exclude — исключить указанные страницы
*  @param $dir — основной каталог, если не указано то это PAGES_DIR
*  @param $url — основной http-путь, если не указано то это BASE_URL
*  
*  @return array
*  
*  [home] => Array (
*  		   // обязательные
*          [page] => home
*          [title] => Blog
*          [description] => Best page
*          [keywords] => 
*          [date] => 2014-10-22 12:56
*  		   [dir] => путь к странице
*  		   [url] => http-адрес страницы
*          
*          // все что задано в $DATA
*          [menu_name] => home
*          [menu_class] => icon star
*          [menu_order] => 23
*          [cat] => news, blog
*          [tag] => first, second
*   )
*/
function mso_pages_data($include = array(), $exclude = array(), $dir = false, $url = false, $cache_time = 3600)
{
    static $cache = array();
    // кеш хранится как массив с ключам = входящим параметрам
    $cache_key = md5(serialize($include) . serialize($exclude) . serialize($dir) . serialize($url));
    // уже получали данные, отдаем результат
    if (isset($cache[$cache_key])) {
        return $cache[$cache_key];
    } else {
        // возможно есть данные в файловом кеше
        if ($out = mso_get_cache('pages_data' . $cache_key, $cache_time)) {
            $cache[$cache_key] = $out;
            // статичный кеш
            return $out;
        }
    }
    $out = array();
    // путь на сервере
    if ($dir === false) {
        $dir = PAGES_DIR;
    }
    // url-путь
    if ($url === false) {
        $url = BASE_URL;
    }
    $pages = mso_get_dirs($dir, $exclude, 'variables.php');
    if ($pages) {
        if ($include) {
            $pages = array_intersect($include, $pages);
        }
        // для вложенных страниц добавляем префикс равный отличию от PAGES_DIR
        // pages/about => about
        // pages/blog/about => blog/about
        $prefix = str_replace(PAGES_DIR, '', $dir);
        foreach ($pages as $page) {
            if (!file_exists($dir . $page . '/text.php')) {
                continue;
            }
            // если нет text.php выходим
            $page_k = $prefix . $page;
            if ($page == HOME_PAGE) {
                $out[$page_k] = array('page' => '/');
            } else {
                $out[$page_k] = array('page' => $page_k);
            }
            // обнуляем данные
            $TITLE = '';
            $META = array();
            $DATA = array();
            // считываем данные
            require $dir . $page . '/variables.php';
            $out[$page_k]['title'] = $TITLE;
            $out[$page_k]['description'] = isset($META['description']) ? $META['description'] : '';
            $out[$page_k]['keywords'] = isset($META['keywords']) ? $META['keywords'] : '';
            // дата создания text.php
            $out[$page_k]['date'] = date('Y-m-d H:i', filemtime($dir . $page . '/text.php'));
            // путь на сервере
            $out[$page_k]['dir'] = $dir . $page;
            // url
            $out[$page_k]['url'] = $url . $page;
            if (isset($DATA)) {
                $out[$page_k] = array_merge($out[$page_k], $DATA);
            }
        }
    }
    $cache[$cache_key] = $out;
    // статичный кеш
    mso_add_cache('pages_data' . $cache_key, $out);
    // файловый
    return $out;
}
Exemplo n.º 3
0
function default_header_image()
{
    $dirs = mso_get_dirs(getinfo('uploads_dir'), array('_mso_float', 'mini', '_mso_i', 'smiles'));
    return '-template-||' . tf('Каталог шаблона') . '#' . implode($dirs, '#');
}
Exemplo n.º 4
0
    $options = array_merge($options, $add);
}
if (file_exists(getinfo('template_dir') . 'custom/my_options.php')) {
    require getinfo('template_dir') . 'custom/my_options.php';
}
if (file_exists(getinfo('template_dir') . 'custom/my_options.ini')) {
    $add = mso_get_ini_file(getinfo('template_dir') . 'custom/my_options.ini');
    // и свой
    $options = array_merge($options, $add);
}
// подключим все опции компонентов из components
// в них ini-файлы, а также php-файлы, обслуживающие ini (для PHP_START PHP_END)
// поэтому подключаем все php-файлы, после все ini-файлы
// подключаем только те опции и ini компонентов, которые реально существуют
// каждый компонент в своем каталоге
$all_component = mso_get_dirs(getinfo('template_dir') . 'components/', array(), true);
// проверяем опции (options.php)
foreach ($all_component as $dir) {
    $file = getinfo('template_dir') . 'components/' . $dir . '/options.php';
    if (file_exists($file)) {
        require $file;
    }
    // php-файлы
}
// проверяем options.ini
foreach ($all_component as $dir) {
    $file = getinfo('template_dir') . 'components/' . $dir . '/options.ini';
    if (file_exists($file)) {
        $add = mso_get_ini_file($file);
        // чтобы позволить испльзовать в компонентах одинаковые названия опций,
        // добавим к названию имя компонета в скобках