Вход на сайт
Последние комментарии

7 минут назад - rap1us
Download here guyz...

2 часа и 30 минут назад - BasssTa
Прикольно

8 часов назад - idal
дякую

9 часов назад - Aribova
Бывают в жизни огорченья

1 день и 12 часов назад - vladimir
ПриватБанк,Нажать СПАСИБО и тогд ...

1 день и 16 часов назад - ПриватБанк
как скачят

1 день и 16 часов назад - vladimir
Да не я ж. Парень по имени ДЕЛ :)

1 день и 16 часов назад - arowana
Спасибо что рипнул мой шаблон

1 день и 21 час назад - k12st
Извините за отнятое время, но ка ...

2 дня и 17 часов назад - Spaun
Показать / Скрыть текст[hide]Нор ...

Опрос


Новые сверху
Новые последние
Разберусь по дате


Календарь

«    Сентябрь 2007    »
ПнВтСрЧтПтСбВс
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

Какие-то ссылки

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

Главная страница » Хаки » Инструкция 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.
Эта вставка работает только в списке новостей(ну мне так нужно было :) )





Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо зайти на сайт под своим именем.
#1 написал: koribo (10 сентября 2007 16:29)

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

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

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

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


guma,
На здоровье!


--------------------
#4 написал: koribo (10 сентября 2007 23:50)

Публикаций: 0
Комментариев: 6
Да, спасибо, я понял smile
Информация

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