Страница 1 из 1

Шаблоны вывода для отдельной категории

Добавлено: 21 май 2013, 14:31
G1yyK
Добрый день.
Хочу на сайте в отдельной категории организовать каталог организаций.
Как я планирую это сделать. Создам категорию "Каталог" - для данной категории создам отдельный шаблон вывода и в нем уже выведу все дочерние категории в удобном для меня виде.
В папке options я создаю свой набор опций

Код: Выбрать все

[Шаблон вывода Категориия]
options_type = templates
options_key = main_template_catalog
type = select
description = "Укажите шаблон вывода (main-шаблон) по-умолчанию."
default = ""
values =  "<?php
   $dirs = mso_get_dirs(getinfo('template_dir') . 'main/', array(), 'main.php');
   
   if ($dirs)   echo ' ||Обычный #' . implode($dirs, '#');
      else echo ' ||Обычный';


?>"
section = "Шаблоны вывода"

[Шаблон вывода Категория 2]
options_type = templates
options_key = id_template_cat
type = textfield
description = "Укажите номер категории для которой будем менять шаблон вывода"
default = "0"
values =  ""



В первой опции я выберу шаблон вывода, а во второй опции я укажу номер категории к которой я хочу применить данный шаблон. Накидал немного кода для определения что я нахожусь в данной категории, и получаю нужный шаблон.

Столкнулся с проблемой, шаблон то я получил как его правильно применить что бы поменялся шаблон сайта. Какую функцию необходимо выполнить, что бы использовался новый шаблон?

Код: Выбрать все

$id_cat = mso_get_option('main_template_cat','templates','');

if ($id_cat == mso_get_cat_from_slug()) {
   if ($page_template = mso_get_option('main_template_cat_4', 'templates', ''))
      {         
         if ($fn = mso_fe('main/' . $page_template . '/main.php'))
         {   
            $fn_main = $fn; // выставляем путь к файлу
         }
      }
}

Re: Шаблоны вывода для отдельной категории

Добавлено: 21 май 2013, 17:45
MAX
Путь к main-файлу выставляется так:

Код: Выбрать все

mso_set_val('main_file', $fn);


— где $fn — полный путь к main-файлу.

Код можно прописать где-то до отработки main-end.php, например в custom/my_functions.php

Но в вашей задаче удобней сделать немного не так.

Делаем файл main/type/category/main.php

Код: Выбрать все

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');


$id_cat = mso_get_cat_from_slug(); // номер рубрики

... получаем из опции номер рубрики ...

... формируем имя main-файла в $fn ...

require($fn);

... если файла нет, то подключать дефолтный main.php ...

Re: Шаблоны вывода для отдельной категории

Добавлено: 21 май 2013, 18:13
G1yyK
Спасибо Максим. Все получилось и решение изящное.