Ejemplo n.º 1
0
<?php

if (!defined('BASEPATH')) {
    exit('No direct script access allowed');
}
// получим массив всех рубрик
$cats = mso_cat_array_single('page', 'category_menu_order', 'ASC', '', true, false);
// pr($cats);
// если массив рубрик получен
if ($cats) {
    // найдем нужную рубрику и получим данные о ней
    foreach ($cats as $cat) {
        if (mso_segment(2) == $cat['category_slug']) {
            $cat_id = $cat['category_id'];
            $cat_descr = $cat['category_desc'];
            $cat_name = $cat['category_name'];
            $cat_url = $cat['category_slug'];
            break;
        }
    }
    // сделаем запрос за записями этой рубрики
    $par = array('type' => false, 'cat_id' => $cat_id, 'limit' => mso_get_option('limit_post', 'templates', '10'), 'cut' => mso_get_option('more', 'templates', 'Читать полностью »'), 'type' => false, 'content' => false, 'get_page_count_comments' => false);
    $pages = mso_get_pages($par, $pagination);
    // pr($pages);
    // определим метаданные
    mso_head_meta('title', $cat_name . ' - ' . getinfo('name_site'));
    mso_head_meta('description', $cat_descr);
    mso_head_meta('keywords', $cat_descr);
    $admin_link = '';
    if (is_login()) {
        $admin_link = ' <a href="' . getinfo('siteurl') . 'admin/page_edit/' . $page['page_id'] . '">Редактировать</a>';
Ejemplo n.º 2
0
function mso_new_category($data)
{
    global $MSO;
    $CI =& get_instance();
    if (isset($data['user_login'])) {
        $user_login = $data['user_login'];
    } else {
        $user_login = $MSO->data['session']['users_login'];
    }
    if (isset($data['password'])) {
        $password = $data['password'];
    } else {
        $password = $MSO->data['session']['users_password'];
    }
    # проверка доступа этому пользователю с этим паролем и этим разрешением
    if (!mso_check_user_password($user_login, $password, 'admin_cat')) {
        return array('result' => 0, 'description' => 'Login/password incorrect');
    }
    $data = mso_xss_clean_data($data, array('category_name', 'category_slug'), true, true);
    $data = mso_xss_clean_data($data, array('category_desc'));
    $category_id_parent = isset($data['category_id_parent']) ? (int) $data['category_id_parent'] : 0;
    $category_menu_order = isset($data['category_menu_order']) ? (int) $data['category_menu_order'] : 0;
    $category_name = isset($data['category_name']) ? trim($data['category_name']) : '';
    $category_desc = isset($data['category_desc']) ? trim($data['category_desc']) : '';
    $category_slug = isset($data['category_slug']) ? mso_slug($data['category_slug']) : '';
    $ok = true;
    if ($ok and $category_name == '') {
        $ok = false;
    }
    if ($ok and $category_slug == '') {
        $category_slug = mso_slug($category_name);
    }
    if ($ok and $category_id_parent < 0) {
        $category_id_parent = 0;
    }
    if ($ok and $category_menu_order < 0) {
        $category_menu_order = 0;
    }
    if ($ok) {
        // проверим существование уже такой же рубрики с таким же именем
        $CI->db->select('category_id');
        // $CI->db->where(array('category_name'=>$category_name, 'category_id_parent'=>$category_id_parent));
        $CI->db->where(array('category_slug' => $category_slug));
        $query = $CI->db->get('category');
        if ($query->num_rows() == 0) {
            # проверим, чтобы category_id_parent был существующим
            if ($category_id_parent > 0) {
                $all_cats = mso_cat_array_single();
                if (!isset($all_cats[$category_id_parent])) {
                    // нет такой рубрики
                    $category_id_parent = 0;
                }
                // сбрасываем парент
            }
            $ins_data = array('category_id_parent' => $category_id_parent, 'category_menu_order' => $category_menu_order, 'category_name' => $category_name, 'category_desc' => $category_desc, 'category_slug' => $category_slug);
            $res = $CI->db->insert('category', $ins_data) ? '1' : '0';
            if ($res) {
                $response = array('result' => $res, 'description' => 'Inserting new category');
                mso_flush_cache();
                // сбросим кэш
            } else {
                $response = array('result' => 0, 'description' => 'Error inserting new category');
            }
        } else {
            // есть такая рубрика - не добавляем
            $response = array('result' => '0', 'description' => 'Category slug existing');
        }
    } else {
        $response = array('result' => '0', 'description' => 'Error data');
    }
    if ($response['result']) {
        mso_hook('new_category');
    }
    return $response;
}
Ejemplo n.º 3
0
 // pr($new_categorys);
 if ($new_categorys) {
     $out .= '<h2>' . t('Добавленные рубрики') . '</h2>';
     foreach ($new_categorys as $val) {
         $result = mso_new_category(array('category_name' => $val['name'], 'category_slug' => $val['slug']));
         if ($result['result']) {
             $out .= '<span style="color:green">+ ' . $val['name'] . ' : ' . $result['description'] . '</span><br>';
         } else {
             $out .= '<span style="color:red">- ' . $val['name'] . ' : ' . $result['description'] . '</span><br>';
         }
     }
     $out .= '<br><hr><br>';
 }
 mso_flush_cache();
 // сбросим кэш
 $mycategorys = mso_cat_array_single('page', 'category_name', 'ASC', 'blog', false);
 // существующие рубрики
 $mycategorys0 = array();
 // обработаем массив для удобства
 foreach ($mycategorys as $key => $val) {
     $mycategorys0[$val['category_name']] = $val;
 }
 $mycategorys = $mycategorys0;
 // рубрики готовы
 // pr($mycategorys);
 // pr($categorys);
 /*
 	далее нужно добавить все записи и сразу же их комментарии
 */
 $out .= '<h2>' . t('Добавленные страницы') . '</h2>';
 foreach ($all->items as $item) {
Ejemplo n.º 4
0
function mso_next_prev_page($r = array())
{
    $out = array();
    if (!isset($r['page_id']) or !isset($r['page_categories']) or !isset($r['page_date_publish'])) {
        $out['next'] = false;
        $out['prev'] = false;
        return $out;
    }
    // передаем дату отдельно, она используется в function_add_custom_sql
    mso_set_val('_sql_next_prev_pages_page_date_publish', $r['page_date_publish']);
    // $r['use_category'] — если нужно учитывать рубрику
    if (!isset($r['use_category'])) {
        $r['use_category'] = true;
    }
    if ($r['use_category']) {
        // рубрики
        $cat = $r['page_categories'];
        // если несколько рубрик, то ищем те, в которых
        // category_id_parent не равен 0 — это подрубрики
        // если такие есть, то по ним и делаем навигаци
        if (count($r['page_categories']) > 1) {
            $all_cat = mso_cat_array_single();
            // все рубрики
            foreach ($r['page_categories'] as $id) {
                if ($all_cat[$id]['parents'] > 0) {
                    $cat = array($id);
                    break;
                }
            }
        }
        $cat = implode(',', $cat);
    } else {
        $cat = '';
        // рубрика не учитывается
    }
    if (!isset($r['type'])) {
        $r['type'] = 'blog';
    }
    // можно задать тип записей
    // next
    if ($pages = mso_get_pages(array('content' => false, 'cat_id' => $cat, 'order_asc' => 'asc', 'limit' => 1, 'pagination' => false, 'custom_type' => 'home', 'function_add_custom_sql' => '_sql_next_page', 'get_page_categories' => false, 'get_page_meta_tags' => false, 'get_page_count_comments' => false, 'type' => $r['type'], 'exclude_page_id' => $r['page_id']), $temp)) {
        $out['next'] = $pages[0];
    } else {
        $out['next'] = false;
    }
    // prev
    if ($pages = mso_get_pages(array('content' => false, 'cat_id' => $cat, 'order_asc' => 'desc', 'limit' => 1, 'pagination' => false, 'custom_type' => 'home', 'function_add_custom_sql' => '_sql_prev_page', 'get_page_categories' => false, 'get_page_meta_tags' => false, 'get_page_count_comments' => false, 'type' => $r['type'], 'exclude_page_id' => $r['page_id']), $temp)) {
        $out['prev'] = $pages[0];
    } else {
        $out['prev'] = false;
    }
    // $r['reverse'] — меняем местами пункты
    if (isset($r['reverse']) and $r['reverse']) {
        $o = array();
        $o['next'] = $out['prev'];
        $o['prev'] = $out['next'];
        $out = $o;
    }
    return $out;
}
Ejemplo n.º 5
0
    $categories = false;
    // нет рубрик
    $tags = false;
    // нет меток
} else {
    $par = array('limit' => 7, 'cut' => false, 'type' => false);
    // подключаем кастомный вывод, где можно изменить массив параметров $par для своих задач
    if ($f = mso_page_foreach('search-mso-get-pages')) {
        require $f;
    }
    $pages = mso_get_pages($par, $pagination);
    // получим все - второй параметр нужен для сформированной пагинации
    // рубрики
    $categories = array();
    // параметры ($type = 'page', $order = 'category_name', $asc = 'ASC', $type_page = 'blog', $cache = true)
    $all_categories = mso_cat_array_single();
    // получаем все рубрики в один массив
    foreach ($all_categories as $cat) {
        // сверяем названия рубрик с исходной фразой
        $category_name = mb_strtolower($cat['category_name'], 'UTF8');
        // если нужно искать по части вхождения: плагин -> плагины, плагинюшки, плагинячки
        if (strpos($category_name, $searh_to_text) !== false) {
            $categories[$cat['category_slug']] = $cat['category_name'];
        }
    }
    // метки
    require_once getinfo('common_dir') . 'meta.php';
    $tags = array();
    $all_tags = mso_get_all_tags_page();
    // получаем все метки
    foreach ($all_tags as $key => $val) {
Ejemplo n.º 6
0
function catclouds_widget_custom($options = array(), $num = 1)
{
    // кэш
    $cache_key = 'catclouds_widget_custom' . serialize($options) . $num;
    $k = mso_get_cache($cache_key);
    if ($k) {
        return $k;
    }
    // да есть в кэше
    // формат вывода  %SIZE% %URL% %TAG% %COUNT%
    // параметры $min_size $max_size $block_start $block_end
    // сортировка
    $out = '';
    if (!isset($options['header'])) {
        $options['header'] = '';
    }
    if (!isset($options['block_start'])) {
        $options['block_start'] = '<div class="catclouds">';
    }
    if (!isset($options['block_end'])) {
        $options['block_end'] = '</div>';
    }
    if (!isset($options['min_size'])) {
        $min_size = 90;
    } else {
        $min_size = (int) $options['min_size'];
    }
    if (!isset($options['max_size'])) {
        $max_size = 230;
    } else {
        $max_size = (int) $options['max_size'];
    }
    if (!isset($options['cat_id'])) {
        $cat_id = 0;
    } else {
        $cat_id = (int) $options['cat_id'];
    }
    if (!isset($options['format'])) {
        $options['format'] = '<span style="font-size: %SIZE%%"><a href="%URL%">%CAT%</a><sub style="font-size: 7pt;">%COUNT%</sub></span>';
    }
    if (!isset($options['sort'])) {
        $sort = 0;
    } else {
        $sort = (int) $options['sort'];
    }
    $url = getinfo('siteurl') . 'category/';
    require_once getinfo('common_dir') . 'category.php';
    // функции мета
    $all_cat = mso_cat_array_single('page', 'category_name', 'ASC', 'blog');
    $catcloud = array();
    foreach ($all_cat as $key => $val) {
        if ($cat_id) {
            // выводим саму рубрику и всех её детей
            if ($val['category_id'] == $cat_id or $val['category_id_parent'] == $cat_id) {
                if (count($val['pages']) > 0) {
                    // кол-во страниц в этой рубрике > 0
                    $catcloud[$val['category_name']] = array('count' => count($val['pages']), 'slug' => $val['category_slug']);
                }
            }
        } else {
            if (count($val['pages']) > 0) {
                // кол-во страниц в этой рубрике > 0
                $catcloud[$val['category_name']] = array('count' => count($val['pages']), 'slug' => $val['category_slug']);
            }
        }
    }
    asort($catcloud);
    $min = reset($catcloud);
    $min = $min['count'];
    $max = end($catcloud);
    $max = $max['count'];
    if ($max == $min) {
        $max++;
    }
    // сортировка перед выводом
    if ($sort == 0) {
        arsort($catcloud);
    } elseif ($sort == 1) {
        asort($catcloud);
    } elseif ($sort == 2) {
        ksort($catcloud);
    } elseif ($sort == 3) {
        krsort($catcloud);
    } else {
        arsort($catcloud);
    }
    // по умолчанию
    foreach ($catcloud as $cat => $ar) {
        $count = $ar['count'];
        $slug = $ar['slug'];
        $font_size = round(($count - $min) / ($max - $min) * ($max_size - $min_size) + $min_size);
        $af = str_replace(array('%SIZE%', '%URL%', '%CAT%', '%COUNT%'), array($font_size, $url . $slug, $cat, $count), $options['format']);
        $out .= $af . ' ';
    }
    if ($out) {
        $out = $options['header'] . $options['block_start'] . $out . $options['block_end'];
    }
    mso_add_cache($cache_key, $out);
    // сразу в кэш добавим
    return $out;
}
Ejemplo n.º 7
0
function mso_get_cat_from_id($id = 0, $find_key = false)
{
    static $all_cats = false;
    if ($all_cats === false) {
        $all_cats = mso_cat_array_single('page', 'category_name', 'ASC', '', true, false);
    }
    if (is_array($id) and count($id) > 0) {
        $id = $id[0];
    }
    if ($find_key === false) {
        if (isset($all_cats[$id])) {
            return $all_cats[$id];
        } else {
            return '';
        }
    }
    // ищем id и ключ
    foreach ($all_cats as $val) {
        if ($val['category_id'] == $id) {
            if (isset($val[$find_key])) {
                return $val[$find_key];
            }
            return '';
        }
    }
    return '';
}
Ejemplo n.º 8
0
<?php

if (!defined('BASEPATH')) {
    exit('No direct script access allowed');
}
// Использовать в type/ шаблона
// Директория должна быть уже создана, иначе смерть
$dirName = getinfo('template_dir') . 'type/export/';
if (!file_exists($dirName)) {
    die("Directory {$dirName} is not found in root folder");
}
// Плоский массив всех рубрик
$allCategories = mso_cat_array_single('page', 'category_name', 'ASC', '', true, false);
// pr($allCategories);
// Делаем запрос к БД штатными средствами
$par = array('type' => 'blog', 'get_page_count_comments' => false, 'cut' => '', 'custom_type' => 'home', 'no_limit' => true);
$pages = mso_get_pages($par, $pag);
// pr($pages);
// Обходим массив с результатами запроса и пишем файлы
foreach ($pages as $page) {
    // pr($page);
    // Имя создаваемого файла
    $fileName = mso_page_date($page['page_date_publish'], 'Y-m-d', '', '', false) . '-' . $page['page_slug'] . '.md';
    // pr($fileName);
    // Рубрики
    $categories = '';
    foreach ($page['page_categories'] as $catId) {
        $categories .= $allCategories[$catId]['category_slug'] . ', ';
    }
    // Метки
    $tags = '';
Ejemplo n.º 9
0
function _sitemap_cat_elem($elem)
{
    static $all_cat = false;
    static $all_page = array();
    $out = '';
    if ($all_cat === false) {
        $all_cat = mso_cat_array_single();
    }
    foreach ($elem['pages'] as $page) {
        // page_id page_title page_date_publish page_status page_slug
        if ($page['page_status'] == 'publish') {
            // все рубрики этой записи
            if (isset($all_page[$page['page_id']])) {
                $cur_cats = $all_page[$page['page_id']];
            } else {
                $cur_cats = mso_get_cat_page($page['page_id']);
                $all_page[$page['page_id']] = $cur_cats;
            }
            if ($cur_cats) {
                $max_level = 0;
                $cat_vybr = 0;
                foreach ($cur_cats as $cat) {
                    $level = $all_cat[$cat]['level'];
                    if ($level > $max_level) {
                        $max_level = $level;
                        $cat_vybr = $cat;
                    }
                }
                if ($cat_vybr == $elem['category_id'] or $cat_vybr == 0) {
                    $out .= '<li><a href="' . getinfo('siteurl') . 'page/' . $page['page_slug'] . '">' . htmlspecialchars($page['page_title']) . '</a></li>';
                }
            } else {
                $out .= '<li><a href="' . getinfo('siteurl') . 'page/' . $page['page_slug'] . '">' . htmlspecialchars($page['page_title']) . '</a></li>';
            }
        }
    }
    if ($out) {
        $out = '<ul>' . $out . '</ul>';
    }
    return $out;
}
Ejemplo n.º 10
0
 }
 echo '<p class="admin_page_filtr"><strong>' . t('Рубрика') . ':</strong> ';
 /*
 if (mso_segment(3) and mso_segment(3) != 'next')
 {
 	echo '<a class="no_filtr" href="' . getinfo('site_admin_url') . 'page">' . t('Без фильтра') . '</a> ';
 }
 else
 {
 	echo '<a class="current" href="' . getinfo('site_admin_url') . 'page">' . t('Без фильтра') . '</a> ';
 
 }
 */
 require_once getinfo('common_dir') . 'category.php';
 // функции рубрик
 $all_cats = mso_cat_array_single('page', 'category_id', 'ASC', '');
 // все рубрики для вывода кол-ва записей
 # pr($all_cats);
 echo '<select class="admin_page_filtr">';
 $selected = (mso_segment(3) and mso_segment(3) != 'next') ? '' : ' selected';
 echo '<option value="' . getinfo('site_admin_url') . 'page"' . $selected . '>' . t('Любая') . '</option>';
 foreach ($query->result_array() as $nav) {
     $selected = $cat_segment_id != $nav['category_id'] ? '' : ' selected';
     echo '<option value="' . getinfo('site_admin_url') . 'page/category/' . $nav['category_id'] . '"' . $selected . '>' . $nav['category_name'] . ' (' . count($all_cats[$nav['category_id']]['pages']) . ')</option>';
     /*
     if ($cat_segment_id != $nav['category_id']) 
     {
     	echo ' <a href="' . getinfo('site_admin_url'). 'page/category/' . $nav['category_id'] .'">'
     		. $nav['category_name'] 
     		. ' <small>('.  count($all_cats[$nav['category_id']]['pages']) . ')</small></a> ';
     } 
Ejemplo n.º 11
0
function mso_page_other_pages($page_id = 0, $page_categories = array())
{
    if ($bl_title = mso_get_option('page_other_pages', 'templates', tf('Еще записи по теме'))) {
        // алгоритм получения записей
        $algoritm = mso_get_option('page_other_pages_algoritm', 'templates', 'all');
        if ($algoritm == 'lowlewel') {
            $all_cat = mso_cat_array_single();
            // все рубрики
            $bl_page_categories = array();
            // обработаный массив id-level
            foreach ($page_categories as $cat_id) {
                $bl_page_categories[$cat_id] = $all_cat[$cat_id]['level'];
            }
            arsort($bl_page_categories);
            // сортируем в обратном порядке
            $bl_page_categories = array_keys($bl_page_categories);
            // оставляем только ключи (id)
            // если что-то есть, то оставляем только первую рубрику, иначе $page_categories
            if (isset($bl_page_categories[0])) {
                $bl_page_categories = array($bl_page_categories[0]);
            } else {
                $bl_page_categories = $page_categories;
            }
        } else {
            // обычный вывод по всем рубрикам
            $bl_page_categories = $page_categories;
        }
        $bl_pages = mso_get_pages(array('type' => false, 'content' => false, 'pagination' => false, 'custom_type' => 'category', 'categories' => $bl_page_categories, 'exclude_page_id' => array($page_id), 'content' => false, 'limit' => mso_get_option('page_other_pages_limit', 'templates', 7), 'order' => mso_get_option('page_other_pages_order', 'templates', 'page_date_publish'), 'order_asc' => mso_get_option('page_other_pages_order_asc', 'templates', 'random')), $_temp);
        if ($bl_pages) {
            echo '<div class="page_other_pages">' . mso_get_val('page_other_pages_start', '<h3>') . $bl_title . mso_get_val('page_other_pages_end', '</h3>') . '<ul>';
            foreach ($bl_pages as $bl_page) {
                mso_page_title($bl_page['page_slug'], $bl_page['page_title'], '<li>', '</li>', true);
            }
            echo '</ul></div>';
        }
    }
}
Ejemplo n.º 12
0
function last_pages_widget_custom($arg = array(), $num = 1)
{
    if (!isset($arg['count'])) {
        $arg['count'] = 7;
    }
    if (!isset($arg['page_type'])) {
        $arg['page_type'] = 'blog';
    }
    if (!isset($arg['sort'])) {
        $arg['sort'] = 'page_date_publish';
    }
    if (!isset($arg['sort_order'])) {
        $arg['sort_order'] = 'desc';
    }
    if (!isset($arg['date_format'])) {
        $arg['date_format'] = 'd/m/Y';
    }
    if (!isset($arg['format'])) {
        $arg['format'] = '%TITLE%';
    }
    if (!isset($arg['comments_format'])) {
        $arg['comments_format'] = t(' - комментариев: ') . '%COUNT%';
    }
    if (!isset($arg['exclude_cat'])) {
        $arg['exclude_cat'] = '';
    }
    if (!isset($arg['include_cat'])) {
        $arg['include_cat'] = '';
    }
    if (!isset($arg['img_prev'])) {
        $arg['img_prev'] = '';
    }
    if (!isset($arg['img_prev_def'])) {
        $arg['img_prev_def'] = '';
    }
    if (!isset($arg['img_prev_attr'])) {
        $arg['img_prev_attr'] = 'class="left"';
    }
    if (!isset($arg['max_words'])) {
        $arg['max_words'] = 20;
    }
    if (!isset($arg['text_posle'])) {
        $arg['text_posle'] = '';
    }
    if (!isset($arg['header'])) {
        $arg['header'] = mso_get_val('widget_header_start', '<h2 class="box"><span>') . t('Последние записи') . mso_get_val('widget_header_end', '</span></h2>');
    }
    if (!isset($arg['block_start'])) {
        $arg['block_start'] = '<div class="last-pages"><ul class="is_link">';
    }
    if (!isset($arg['block_end'])) {
        $arg['block_end'] = '</ul></div>';
    }
    $cache_key = 'last_pages_widget' . serialize($arg) . $num;
    $k = mso_get_cache($cache_key);
    if ($k) {
        $current_url = getinfo('siteurl') . mso_current_url();
        // текущий урл
        $k = str_replace('<a href="' . $current_url . '">', '<a href="' . $current_url . '" class="current_url">', $k);
        return $k;
    }
    $arg['exclude_cat'] = mso_explode($arg['exclude_cat']);
    // рубрики из строки в массив
    $arg['include_cat'] = mso_explode($arg['include_cat']);
    // рубрики из строки в массив
    $CI =& get_instance();
    if (strpos($arg['format'], '%TEXT%') === false and strpos($arg['format'], '%TEXT_CUT%') === false and strpos($arg['format'], '%TEXT_PREV%') === false) {
        $CI->db->select('page.page_id, page_type_name, page_type_name AS page_content, page_slug, page_title, page_date_publish, page_status, COUNT(comments_id) AS page_count_comments', false);
    } else {
        $CI->db->select('page.page_id, page.page_content, page_type_name, page_slug, page_title, page_date_publish, page_status, COUNT(comments_id) AS page_count_comments');
    }
    $CI->db->from('page');
    $CI->db->where('page_status', 'publish');
    //$CI->db->where('page_date_publish <', date('Y-m-d H:i:s'));
    $time_zone = getinfo('time_zone');
    if ($time_zone < 10 and $time_zone > 0) {
        $time_zone = '0' . $time_zone;
    } elseif ($time_zone > -10 and $time_zone < 0) {
        $time_zone = '0' . $time_zone;
        $time_zone = str_replace('0-', '-0', $time_zone);
    } else {
        $time_zone = '00.00';
    }
    $time_zone = str_replace('.', ':', $time_zone);
    // $CI->db->where('page_date_publish < ', 'NOW()', false);
    $CI->db->where('page_date_publish < ', 'DATE_ADD(NOW(), INTERVAL "' . $time_zone . '" HOUR_MINUTE)', false);
    if ($arg['page_type']) {
        $CI->db->where('page_type_name', $arg['page_type']);
    }
    $CI->db->join('page_type', 'page_type.page_type_id = page.page_type_id');
    $CI->db->join('comments', 'comments.comments_page_id = page.page_id AND comments_approved = 1', 'left');
    if ($arg['exclude_cat']) {
        $CI->db->join('cat2obj', 'cat2obj.page_id = page.page_id', 'left');
        $CI->db->where_not_in('cat2obj.category_id', $arg['exclude_cat']);
    }
    if ($arg['include_cat']) {
        $CI->db->join('cat2obj', 'cat2obj.page_id = page.page_id', 'left');
        $CI->db->where_in('cat2obj.category_id', $arg['include_cat']);
    }
    $CI->db->order_by($arg['sort'], $arg['sort_order']);
    $CI->db->group_by('page.page_id');
    $CI->db->group_by('comments_page_id');
    $CI->db->limit($arg['count']);
    $query = $CI->db->get();
    if ($query->num_rows() > 0) {
        $pages = $query->result_array();
        require_once getinfo('common_dir') . 'category.php';
        require_once getinfo('common_dir') . 'meta.php';
        $all_cat = mso_cat_array_single();
        // все рубрики
        $out = '';
        foreach ($pages as $key => $page) {
            // метаполе превьюшки
            if (strpos($arg['format'], '%IMG_PREV%') !== false) {
                if ($img_prev = mso_get_meta($arg['img_prev'], 'page', $page['page_id'])) {
                    if (isset($img_prev[0]['meta_value']) and $img_prev[0]['meta_value']) {
                        $img_prev = '<img src="' . $img_prev[0]['meta_value'] . '" alt="" ' . $arg['img_prev_attr'] . '> ';
                    } else {
                        $img_prev = '<img src="' . $arg['img_prev_def'] . '" alt="" ' . $arg['img_prev_attr'] . '> ';
                    }
                } else {
                    if ($arg['img_prev_def']) {
                        $img_prev = '<img src="' . $arg['img_prev_def'] . '" alt="" ' . $arg['img_prev_attr'] . '> ';
                    } else {
                        $img_prev = '';
                    }
                }
            } else {
                $img_prev = '';
            }
            $out .= $arg['format'];
            $out = str_replace('%TITLE%', mso_page_title(mso_slug($page['page_slug']), $page['page_title'], '', '', true, false), $out);
            $out = str_replace('%URL%', getinfo('site_url') . 'page/' . mso_slug($page['page_slug']), $out);
            $out = str_replace('%DATE%', mso_page_date($page['page_date_publish'], $arg['date_format'], '', '', false), $out);
            if ($page['page_count_comments']) {
                $comments_format = str_replace('%COUNT%', $page['page_count_comments'], $arg['comments_format']);
            } else {
                $comments_format = '';
            }
            $out = str_replace('%COMMENTS%', $comments_format, $out);
            $page_content = $page['page_content'];
            $page_content = mso_hook('content', $page_content);
            $page_content = mso_hook('content_auto_tag', $page_content);
            $page_content = mso_hook('content_balance_tags', $page_content);
            $page_content = mso_hook('content_out', $page_content);
            $out = str_replace('%TEXT%', mso_balance_tags(mso_auto_tag(mso_hook('content_complete', $page['page_content']))), $out);
            if (strpos($arg['format'], '%TEXT_PREV%') !== false) {
                $page_content = $page['page_content'];
                $page_content = mso_hook('content', $page_content);
                $page_content = mso_hook('content_auto_tag', $page_content);
                $page_content = mso_hook('content_complete', $page_content);
                $page_content = mso_str_word(strip_tags($page_content), $arg['max_words']) . ' ...';
                $out = str_replace('%TEXT_PREV%', $page_content, $out);
            }
            # если есть cut, то обрабатываем и его
            $page_content = str_replace('[xcut', '[cut', $page_content);
            if (preg_match('/\\[cut(.*?)?\\]/', $page_content, $matches)) {
                $page_content = explode($matches[0], $page_content, 2);
                $page_content = $page_content[0];
                $page_content = mso_hook('content_complete', $page_content);
            }
            $out = str_replace('%TEXT_CUT%', mso_balance_tags(mso_auto_tag($page_content)), $out);
            $out = str_replace('%IMG_PREV%', $img_prev, $out);
            if (is_type_slug('page', mso_slug($page['page_slug']))) {
                $out = str_replace('<li>', '<li class="current_url_page">', $out);
            }
            if (isset($arg['include_cat'][0]) and is_page_cat($arg['include_cat'][0])) {
                $out = str_replace('<li>', '<li class="current_url_cat">', $out);
            }
            if (isset($arg['include_cat'][0]) and is_type_slug('category', $all_cat[$arg['include_cat'][0]]['category_slug']) and in_array($page['page_id'], $all_cat[$arg['include_cat'][0]]['pages'])) {
                $out = str_replace('<li>', '<li class="current_url_allcat">', $out);
            }
        }
        $out = $arg['header'] . $arg['block_start'] . NR . $out . $arg['block_end'];
        $out = str_replace('</li>', '<div class="clearfix"></div></li>', $out);
        $out .= $arg['text_posle'];
        mso_add_cache($cache_key, $out);
        // сразу в кэш добавим
        // отметим текущую рубрику. Поскольку у нас к кэше должен быть весь список и не делать кэш для каждого url
        // то мы просто перед отдачей заменяем текущий url на url с li.current_url
        $current_url = getinfo('siteurl') . mso_current_url();
        // текущий урл
        $out = str_replace('<a href="' . $current_url . '">', '<a href="' . $current_url . '" class="current_url">', $out);
        return $out;
    }
}
Ejemplo n.º 13
0
}
// Поскольку у нас вывод рубрик блоками, то нужно считать каждую указанную рубрику и в цикле
// получить для неё все данные и сразу вывести
// параметры для получения страниц - общие для всех
$par = array('limit' => mso_get_option('home_limit_post', 'templates', '7'), 'page_id' => mso_get_option('home_page_id', 'templates', '0'), 'content' => mso_get_option('home_full_text', 'templates', '1'), 'cut' => mso_get_option('more', 'templates', tf('Читать полностью »')), 'cat_order' => 'category_id_parent', 'cat_order_asc' => 'asc', 'pagination' => false);
$home_cat_block = mso_get_option('home_cat_id', 'templates', '0');
$home_cat_block = mso_explode($home_cat_block);
// в массив
# все блоки можно закэшировать
$key_home_cache = serialize($home_cat_block);
if ($k = mso_get_cache($key_home_cache)) {
    print $k;
} else {
    ob_start();
    if ($home_cat_block) {
        $all_cats = mso_cat_array_single();
        // список всех рубрик
        foreach ($home_cat_block as $cat_id) {
            // выводим кастомный вывод на этот цикл, чтобы иметь возможность менять его целиком
            if ($f = mso_page_foreach('home-cat-block')) {
                require $f;
                // подключаем кастомный вывод
                continue;
                // следующая итерация
            }
            $par['cat_id'] = $cat_id;
            // подключаем кастомный вывод, где можно изменить массив параметров $par для своих задач
            if ($f = mso_page_foreach('home-cat-block-mso-get-pages')) {
                require $f;
            }
            $pages = mso_get_pages($par, $pagination);