Next Generation CMS :: Форум поддержки

Заинтересовала наша система? Тогда этот форум для Вас!

Вы не зашли.

#1 2008-10-26 11:04:33

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

FYI: собственные шаблоны для (категорий/головной страницы)

Q: Можно ли для какой-то конкретной категории (или для нескольких) задать свой собственный шаблон?
A: Да, можно.

Для этого необходимо:
1. Создать в каталоге вашего шаблона (предположим, что вы используете шаблон default) создать каталог ncustom - в нём будут храниться "персональные" шаблоны категорий:
/templates/default/ncustom/

2. Внутри только что созданного каталога - создаём каталоги для персональных шаблонов, например - custom1 и custom2.
/templates/default/ncustom/custom1/
/templates/default/ncustom/custom2/

3. В каталоге персонального шаблона необходимо создать следующие файлы:
news.short.tpl - отвечает за вывод короткой новости
news.full.tpl - отвечает за вывод полной новости
comments.form.tpl - отвечает за вывод формы добавления комментария
comments.show.tpl - отвечаеи за вывод комментариев

Все эти файлы обязательно необходимо создавать. Проще всего для начала скопировать их из каталога шаблона.

4. Зайти в настройки нужных категорий (панель управления => настройка => управление категориями => редактировать) и в поле "шаблон для новостей категории" выбрать необходимый вам шаблон.

Внимание!
Если вы используете плагин switcher или просто переключаетесь между шаблонами, то помните, что собственные шаблоны категорий необходимо создавать во всех используемых шаблонах!

[hr]
Q: А я очень сильно хочу для главной страницы использовать один шаблон (main.tpl), а для остальных страниц - другой. Так можно?
A: Нельзя. Но если ОЧЕНЬ хочется, то можно smile

===< Для версии 0.9.0 >===
Штатно такой функции в движке нет.
Но вы можете немного пропатчить код движка и получить нужную вам возможность.
1. Открываете файл index.php, находите блок:

// ===================================================================
// Make page output
// ===================================================================

$tpl -> template('main', tpl_site);
$tpl -> vars('main', $template);
if (!$SUPRESS_TEMPLATE_SHOW) {
	echo $tpl -> show('main');
} else if (!$SUPRESS_MAINBLOCK_SHOW) {
	echo $template['vars']['mainblock'];
}

2. Заменяете этот блок на:

// ===================================================================
// Make page output
// ===================================================================
$masterTemplateName = 'main';

// BEGIN: ** AREA FOR HANDY CORRECTIONS **
// END: ** AREA FOR HANDY CORRECTIONS **

$tpl -> template($masterTemplateName, tpl_site);
$tpl -> vars($masterTemplateName, $template);
if (!$SUPRESS_TEMPLATE_SHOW) {
	echo $tpl -> show($masterTemplateName);
} else if (!$SUPRESS_MAINBLOCK_SHOW) {
	echo $template['vars']['mainblock'];
}

Всё, теперь движок готов к внесению безопасных изменений.

3. Между строками:

// BEGIN: ** AREA FOR HANDY CORRECTIONS **
// END: ** AREA FOR HANDY CORRECTIONS **

вставляете код (в нашем случае шаблоном для главной страницы будет шаблон mainroot.tpl):

if ((!$action)&&(!$category)&&(!$cstart)&&(!$year)&&(!$month)&&(!$id)) {
 $masterTemplateName = 'mainroot';
}

===< Для версии 0.9.1 >===
Открываем index.php, находим строки (202-203):

$mainTemplateName = isset($SYSTEM_FLAGS['template.main.name']) ? $SYSTEM_FLAGS['template.main.name'] : 'main';
$mainTemplatePath = isset($SYSTEM_FLAGS['template.main.path']) ? $SYSTEM_FLAGS['template.main.path'] : tpl_site;

После них пишем:

if (($CurrentHandler['pluginName'] == 'news') && ($CurrentHandler['handlerName'] == 'main')) {
 $mainTemplateName = 'имя_вашего_шаблона';
}

Вуаля, всё готово smile

Не в сети

#2 2008-10-27 00:19:00

d7p4x
Модератор
Зарегистрирован: 2008-10-13
Сообщений: 199
Рейтинг :   
Сайт

Re: FYI: собственные шаблоны для (категорий/головной страницы)

Мне кажется стоит еще сделать такую фишку, как загрузка другого main.tpl для разных категорий, без правки index.php )

Не в сети

#3 2008-10-27 01:00:10

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: FYI: собственные шаблоны для (категорий/головной страницы)

d7p4x, уже столкнулся с задачей где это нужно.
Буду делать.
А заодно - возможно "повесить" на головную страницу любую новость/статическую страницу или просто заданный пользователем шаблончик.

Не в сети

#4 2008-11-24 12:06:47

coreldraw
Участник
Откуда Ukraine
Зарегистрирован: 2008-10-21
Сообщений: 209
Рейтинг :   

Re: FYI: собственные шаблоны для (категорий/головной страницы)

Если я правильно понял, то я не могу сейчас поставить на главную один main.tpl, а на внутренние страницы другой?
Или я не прав?

Не в сети

#5 2008-11-24 12:20:45

Styler
Участник
Зарегистрирован: 2008-10-13
Сообщений: 279
Рейтинг :   11 

Re: FYI: собственные шаблоны для (категорий/головной страницы)

coreldraw, так и есть.

Не в сети

#6 2008-11-24 12:27:02

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: FYI: собственные шаблоны для (категорий/головной страницы)

coreldraw, ты можешь только сделать патч на 3-4 строчки в коде index.php
штатно такой возможности нет

Не в сети

#7 2008-11-24 12:30:34

coreldraw
Участник
Откуда Ukraine
Зарегистрирован: 2008-10-21
Сообщений: 209
Рейтинг :   

Re: FYI: собственные шаблоны для (категорий/головной страницы)

Господа кодеры, а вот такая чудасия, описаная тут ---> http://2z-project.ru/forum/viewtopic.php?id=1664
работать будить? (index.php конец файла)

// ===================================================================
// Make page output
// ===================================================================


if (category==novosti) {
$tpl -> template('main_novosti', tpl_site);
$tpl -> vars('main_novosti', $template);
echo $tpl -> show('main_novosti');
}
else if (category==novosti2) {
$tpl -> template('main_novosti2', tpl_site);
$tpl -> vars('main_novosti2', $template);
echo $tpl -> show('main_novosti2');
}
else {
$tpl -> template('main', tpl_site);
$tpl -> vars('main', $template);
echo $tpl -> show('main');
}

Изменено coreldraw (2008-11-24 12:31:20)

Не в сети

#8 2008-11-24 13:11:17

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: FYI: собственные шаблоны для (категорий/головной страницы)

coreldraw, я бы очень не советовал использовать такой механизм - возможно из-за него перестанут работать некоторые плагины (к примеру, rss_export). Но если есть желание поиграться и потестить - почему бы и нет smile

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

Не в сети

#9 2008-11-24 13:40:03

coreldraw
Участник
Откуда Ukraine
Зарегистрирован: 2008-10-21
Сообщений: 209
Рейтинг :   

Re: FYI: собственные шаблоны для (категорий/головной страницы)

Виталий, с выше описаным вариантом, как я понял, можно только поменять news_short, news_full, а main нельзя (по крайней мере у меня почему-то не получилось)...
Да и с моими познаниями в PHP (точнее с их отсутствием) я и поправить индекс.пхп не смог...
ПС. Может кто подскажет (пример напишет) что бы я по аналогии перекалбасил...
под такую конструкцию: категория: pervaya шаб: main2.tplvtoraya - main3.tpl...

Не в сети

#10 2008-11-24 13:57:22

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: FYI: собственные шаблоны для (категорий/головной страницы)

coreldraw, я тормоз. действительно - ты же main.tpl меняешь.
Действительно попробуй указанное тобой решение, в ближайшее время добавлю также возможность подмены и main.tpl

Не в сети

#11 2008-11-24 14:03:59

coreldraw
Участник
Откуда Ukraine
Зарегистрирован: 2008-10-21
Сообщений: 209
Рейтинг :   

Re: FYI: собственные шаблоны для (категорий/головной страницы)

wink Виталя ну ты на себя наговариваешь! Ты даже очень газ!
За то что проникся моей проблемкой спасибо!
А если б кто написал за меня эти строчки это было бы даже отдельная благодарность! Думаю не только от меня...

---------апдейтед-----------
сам разобрался. всё работает только пришлось закоментировать (или удалить) блок

// ===================================================================
// Make page output
// ===================================================================

$tpl -> template('main', tpl_site);
$tpl -> vars('main', $template);
if (!$SUPRESS_TEMPLATE_SHOW) {
  echo $tpl -> show('main');
} else if (!$SUPRESS_MAINBLOCK_SHOW) {
  echo $template['vars']['mainblock'];
}

Только мучат собмнения... Я какую-то фичу обрубил этим?

Изменено coreldraw (2008-11-24 16:21:57)

Не в сети

#12 2008-11-25 00:36:00

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: FYI: собственные шаблоны для (категорий/головной страницы)

coreldraw, да. ты "убил" плагины rss_export, rating, voting. Возможно кого-то ещё smile
Завтра выложу корректный вариант решения.

Не в сети

#13 2008-11-25 13:43:19

coreldraw
Участник
Откуда Ukraine
Зарегистрирован: 2008-10-21
Сообщений: 209
Рейтинг :   

Re: FYI: собственные шаблоны для (категорий/головной страницы)

ну я млин маньяк-убивца...
ждём решений проблемса

Не в сети

#14 2008-12-08 08:49:09

RocketBoy
Участник
Откуда Калининград
Зарегистрирован: 2008-10-14
Сообщений: 552
Рейтинг :   27 
Сайт

Re: FYI: собственные шаблоны для (категорий/головной страницы)

vitaly, нужна помощь. Как грамотно в индексе написать?
Задача такая.
Нужны mainы.tpl для каждой категории
-Главная (main.tpl)
-Информация (main_info.tpl)
-Блоги (main_blog.tpl)
-Контакты (main_contact.tpl)
-Для всяких там регистраций, профайлов и проч. (main2.tpl)

Раньше делал как coreldraw в посте№7. Работало. Но насторожило

я бы очень не советовал использовать такой механизм - возможно из-за него перестанут работать некоторые плагины (к примеру, rss_export)

Интересно, если пострадает только rss, он мне на Х не нужен. Или, что то еще?

Изменено RocketBoy (2008-12-08 16:30:27)

Не в сети

#15 2009-01-09 23:47:27

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: FYI: собственные шаблоны для (категорий/головной страницы)

Добавлено описание патча, который позволит использовать собственный шаблон (main.tpl) для головной страницы.

Не в сети

#16 2009-01-17 21:08:33

graf
Участник
Откуда Днепр
Зарегистрирован: 2008-10-13
Сообщений: 394
Рейтинг :   

Re: FYI: собственные шаблоны для (категорий/головной страницы)

не корректно работают обе функции вместе. сделал дизайн главной странички mainroot.tpl, в также 3 разных шаблона для новостей в категориях.
хотел изменить шаблон короткой новости на главной сайта, но столкнулся с тем, что шаблон news.short.tpl в корне папки с шаблоном, не отвечает за вывод

т.е. за вывод новостей на главной отвечает шаблоны с папки ncustom. или так и задумано?

Изменено graf (2009-01-17 21:25:12)

Не в сети

#17 2009-01-22 03:02:10

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: FYI: собственные шаблоны для (категорий/головной страницы)

graf, так и задумано.
Шаблоны из папки ncustom отвечают за вывод конкретный новостей, относящихся к данным категориям. Т.е. этот шаб - свойство самой новости, а не отображаемой страницы.

Не в сети

#18 2009-03-09 14:16:08

graf
Участник
Откуда Днепр
Зарегистрирован: 2008-10-13
Сообщений: 394
Рейтинг :   

Re: FYI: собственные шаблоны для (категорий/головной страницы)

можно увидеть пример вставки кода в index.php при нескольких шаблонах main.tpl?
для примера такое:

-Главная (main.tpl)
-Информация (main_info.tpl)
-Блоги (main_blog.tpl)
-Контакты (main_contact.tpl)
-Для всяких там регистраций, профайлов и проч. (main2.tpl)
-Статические страницы (main_static.tpl)

ато непонял логики формирования

Не в сети

#19 2009-03-09 23:50:05

RocketBoy
Участник
Откуда Калининград
Зарегистрирован: 2008-10-14
Сообщений: 552
Рейтинг :   27 
Сайт

Re: FYI: собственные шаблоны для (категорий/головной страницы)

У меня вот так сделано (все работает!)

// ===================================================================
// Make page output
// ===================================================================
if ( ($action == 'static') || ($action == 'profile') || ($year) || ($action == 'users') || ($action == 'activation') || ($action == 'lostpassword') || ($action == 'search') || ($action == 'registration') || ($action == 'plugin') || ($plugin == 'sitemap') || ($action == 'addnews')) {
$tpl -> template('main2', tpl_site);
$tpl -> vars('main2', $template);
echo $tpl -> show('main2');
}


else if (category=="info") {
$tpl -> template('main_info', tpl_site);
$tpl -> vars('main_info.tpl', $template);
echo $tpl -> show('main_info.tpl');
}
else if (category=="blogs") {
$tpl -> template('main_blog', tpl_site);
$tpl -> vars('main_blog', $template);
echo $tpl -> show('main_blog');
}
else if (category=="contact") {
$tpl -> template('main_contact', tpl_site);
$tpl -> vars('main_contact', $template);
echo $tpl -> show('main_contact');
}

else {
$tpl -> template('main', tpl_site);
$tpl -> vars('main', $template);
echo $tpl -> show('main');
}

Тут main2.tpl используется и Для всяких там регистраций, профайлов и проч

Не в сети

#20 2009-03-10 00:11:39

graf
Участник
Откуда Днепр
Зарегистрирован: 2008-10-13
Сообщений: 394
Рейтинг :   

Re: FYI: собственные шаблоны для (категорий/головной страницы)

пока я так и сделал, но это временно. вот что виталий выше писал

vitaly пишет:

coreldraw, я бы очень не советовал использовать такой механизм - возможно из-за него перестанут работать некоторые плагины (к примеру, rss_export). Но если есть желание поиграться и потестить - почему бы и нет smile

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

Не в сети

#21 2009-03-10 00:28:30

RocketBoy
Участник
Откуда Калининград
Зарегистрирован: 2008-10-14
Сообщений: 552
Рейтинг :   27 
Сайт

Re: FYI: собственные шаблоны для (категорий/головной страницы)

Друк самое главное, что работает или я не прав?:rolleyes:

Не в сети

#22 2009-03-10 01:28:23

graf
Участник
Откуда Днепр
Зарегистрирован: 2008-10-13
Сообщений: 394
Рейтинг :   

Re: FYI: собственные шаблоны для (категорий/головной страницы)

такой способ, временный костыль

Не в сети

#23 2009-03-10 02:34:37

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: FYI: собственные шаблоны для (категорий/головной страницы)

RocketBoy, проблема в том, что при таком способе есть риск что-то сломать.
Если у тебя всё работает - значит ты просто правильно вставил блок.

Но вообще - это действительно временный костыль..

Не в сети

#24 2009-03-10 04:15:08

RocketBoy
Участник
Откуда Калининград
Зарегистрирован: 2008-10-14
Сообщений: 552
Рейтинг :   27 
Сайт

Re: FYI: собственные шаблоны для (категорий/головной страницы)

Ну я тоже надеюсь, что это костыль временный:)
Очень хочется, что бы в новом костыле, была та же гибкость, как и в способе который, временный (см. выше). Т.е. можно было поставить шаблон и к категориям (к любой) и к статической стр. (любой - при желании). А в админке это будет или правкой индекса, лично мне все равно.
Ждем костыль lol

graf пишет:

пока я так и сделал

И у тебя все работает?

Не в сети

#25 2009-03-18 20:22:13

graf
Участник
Откуда Днепр
Зарегистрирован: 2008-10-13
Сообщений: 394
Рейтинг :   

Re: FYI: собственные шаблоны для (категорий/головной страницы)

За помощ спасибо ROZARDу.

Если нужно задать для какой либо категории свой main.tpl, используем такой код:
между строками

// BEGIN: ** AREA FOR HANDY CORRECTIONS **
// END: ** AREA FOR HANDY CORRECTIONS **

вставляем

if (category==news)
{
$masterTemplateName = 'main_news';
}
else if (category==blog)
{
$masterTemplateName = 'main_blog';
} 
else if (category==foto)
{
$masterTemplateName = 'main_foto';
} 
else (category==video)
{
$masterTemplateName = 'main_video';
}

news, blog, foto, video - это альтнейм категорий, и каждой категории присваевается свой main.tpl

Изменено graf (2009-03-18 20:26:28)

Не в сети

Подвал раздела

Работает на FluxBB