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

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

rss

Вы не зашли.

Объявление

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

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

vitaly
Администратор
Откуда: Россия
Зарегистрирован: 2008-10-08
Сообщений: 2785
Рейтинг :   115 
Профиль

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 или просто переключаетесь между шаблонами, то помните, что собственные шаблоны категорий необходимо создавать во всех используемых шаблонах!



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-26 23:19:00

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

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

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

Неактивен

 

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

vitaly
Администратор
Откуда: Россия
Зарегистрирован: 2008-10-08
Сообщений: 2785
Рейтинг :   115 
Профиль

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

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

Неактивен

 

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

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

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

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

Неактивен

 

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

Styler
Пользователь
Зарегистрирован: 2008-10-13
Сообщений: 266
Рейтинг :   11 
Профиль

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

coreldraw, так и есть.

Неактивен

 

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

vitaly
Администратор
Откуда: Россия
Зарегистрирован: 2008-10-08
Сообщений: 2785
Рейтинг :   115 
Профиль

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

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

Неактивен

 

#7 2008-11-24 11: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 11:31:20)

Неактивен

 

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

vitaly
Администратор
Откуда: Россия
Зарегистрирован: 2008-10-08
Сообщений: 2785
Рейтинг :   115 
Профиль

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

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

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

Неактивен

 

#9 2008-11-24 12: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 12:57:22

vitaly
Администратор
Откуда: Россия
Зарегистрирован: 2008-10-08
Сообщений: 2785
Рейтинг :   115 
Профиль

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

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

Неактивен

 

#11 2008-11-24 13: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 15:21:57)

Неактивен

 

#12 2008-11-24 23:36:00

vitaly
Администратор
Откуда: Россия
Зарегистрирован: 2008-10-08
Сообщений: 2785
Рейтинг :   115 
Профиль

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

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

Неактивен

 

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

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

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

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

Неактивен

 

#14 2008-12-08 07: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 15:30:27)

Неактивен

 

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

vitaly
Администратор
Откуда: Россия
Зарегистрирован: 2008-10-08
Сообщений: 2785
Рейтинг :   115 
Профиль

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

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

Неактивен

 

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

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

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

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

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

Отредактированно graf (2009-01-17 20:25:12)

Неактивен

 

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

vitaly
Администратор
Откуда: Россия
Зарегистрирован: 2008-10-08
Сообщений: 2785
Рейтинг :   115 
Профиль

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

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

Неактивен

 

#18 2009-03-09 13: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 22: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-09 23:11:39

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

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

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

vitaly написал:

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

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

Неактивен

 

#21 2009-03-09 23:28:30

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

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

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

Неактивен

 

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

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

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

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

Неактивен

 

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

vitaly
Администратор
Откуда: Россия
Зарегистрирован: 2008-10-08
Сообщений: 2785
Рейтинг :   115 
Профиль

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

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

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

Неактивен

 

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

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

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

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

graf написал:

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

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

Неактивен

 

#25 2009-03-18 19: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 19:26:28)

Неактивен

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

Board footer

Powered by FluxBB

[ Generated in 0.026 seconds, 31 queries executed ]