Поиск по сайту
Вход на сайт
Обратите внимание
Топ-новости
Архив сайта
Апрель 2016 (1)
Апрель 2014 (1)
Ноябрь 2013 (1)
Октябрь 2013 (1)
Май 2013 (2)
Апрель 2013 (8)
Партнеры

seo-monster.ru - сервис проверки доменов
хочешь такой же информер? Информер ТИЦ и PR

» » Инструкция include в шаблонах DataLife

Инструкция include в шаблонах DataLife

Хаки

Задача: Нужно добавить в шаблонный движек возможность инструкции inсlude.
Предположим у нас есть много - мгого категорий на сайте. И при заходе в каждую мы видим новости/статьи сайта.
Но если ещё нужно добавить в каждый раздел текст оформленный каким-либо образом отличным от самой новости, тут нам может понадобится делать для каждой категории кучу шаблонов и папок для каждого или делать [category=X]text bla bla bla[/category] что я и делал пока не получил длиннюще полотно :).


Решение:
1. В файл engine/modules/functions.php
дописываем перед

?>

добавляем

function include_file ($custom_category, $file, $do ,$current_category )
{
  global $db;
  $sql_get_cat = "SELECT alt_name FROM ".PREFIX."_category WHERE `id`={$custom_category}";
  $res_get_cat = $db->query($sql_get_cat);
  list($alt_name) = $db->get_array($res_get_cat);
  if ($alt_name<>$current_category)
      return "";
  $file = file(TEMPLATE_DIR.'/include/'.$file);
  if (sizeof($file)>0)
  {
      $file = implode("",$file);
        return $file;
  }
        else
    {
        return "";
    }
}

Это функция подключения файла.
2.Далее в файле main.tpl пишем

{include category="9" file="9.tpl"}

Где 9 это номер категории а 9.tpl это включаемый шаблон.
Здесь мы указываем куда подключить файл.
3. Файл index.php
Пишем после
    if ( stristr( $tpl->copy_template, "{custom" ) ) {

        $tpl->copy_template = preg_replace( "#\\{custom category=['\"](.+?)['\"] template=['\"](.+?)['\"] aviable=['\"](.+?)['\"] from=['\"](.+?)['\"] limit=['\"](.+?)['\"] cache=['\"](.+?)['\"]\\}#ies",
         "custom_print('\\1', '\\2', '\\3', '\\4', '\\5', '\\6', '{$do}')",
          $tpl->copy_template );

    }

вот это:

    if ( stristr( $tpl->copy_template, "{include" ) )
    {
        if ($_GET['subaction']!=="showfull")
        {
        $do = $_GET['do'];
        $category = $_GET['category'];
            $tpl->copy_template = preg_replace( "#\\{include category=['\"](.+?)['\"] file=['\"](.+?)['\"]\\}#ies",
            "include_file('\\1', '\\2',  \"{$do}\", \"{$category}\")",
                        $tpl->copy_template );
        }
        else
        {
            $tpl->copy_template = preg_replace( "#\\{include category=['\"](.+?)['\"] file=['\"](.+?)['\"]\\}#ies",
            "",
            $tpl->copy_template );

        }
    }



Теперь записывая вот так:
{include category="9" file="9.tpl"}
Мы включаем в main.tpl файл 9.tpl из директории ВАШ_ШАБЛОН/include/ если текущая категория с id = 9.
Эта вставка работает только в списке новостей(ну мне так нужно было :) )

У вас не ставится dle модуль или dle шаблон работает не правильно? Задайте вопрос на нашем форуме по DLE(Datalife Engine CMS) и Вам обязательно помогут!



Если появились вопросы по поводу Инструкция include в шаблонах DataLife или Вы хотите высказаться, то пройдите регистрацию или авторизируйтесь и оставляйте комментарии.
#1 написал: koribo (10 сентября 2007 16:29)

Публикаций: 0
Комментариев: 0
А для чего это?
Что такое inсlude?
#2 написал: guma (10 сентября 2007 22:41)

Публикаций: 0
Комментариев: 0
не загоняйся ) выучи php друг !
Спасибо автор помог smile
#3 написал: vladimir (10 сентября 2007 22:46)

Публикаций: 263
Комментариев: 754
koribo,
К примеру у тебя на сайте есть несколько категорий. И в каждой есть свои новости. Но кроме того тебе нужно ещё и в каждую категорию вставить свой текст/приветствие.
Чтобы всё это не тулить в main.tpl с инструкцией [category=X]text bla bla bla[/category] можно эти тексты подключать в зависимости от вызванной категории.

Надеюсь понятно что я имел ввиду ;)


guma,
На здоровье!
#4 написал: koribo (10 сентября 2007 23:50)

Публикаций: 0
Комментариев: 0
Да, спасибо, я понял smile
#5 написал: cyberkoenig (12 января 2009 08:24)

Публикаций: 0
Комментариев: 0
неподскажите ли как зделать тожесамое только чтоб выводило, например 9.tpl только на главной странице (www.website.ru) и все
#6 написал: vladimir (13 января 2009 21:02)

Публикаций: 263
Комментариев: 754
cyberkoenig,


[ main ]text[ /main ]


Убери пробелы.
#7 написал: cyberkoenig (14 января 2009 10:25)

Публикаций: 0
Комментариев: 0
нет, ето не то получаеться если зделать так то будет выводиться только на www.website.ru/main/, а я хотел чтоб выводилось только на www.website.ru

все разобрался :)
зделал через [ aviable=main ] текст [ /aviable ]
спасибо vladimir,
Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.

Вверх