IgorA100 90 Опубликовано: 17 июля 2009 Рассказать Опубликовано: 17 июля 2009 Для того, чтобы при открытии категории обрабатывался не стандартный main.tpl а персональный, нужно немного изменить код в index.php, а именно: найти строку: $tpl->load_template ( 'main.tpl' ); и заменить ее на: $f_ = 'main_' . $category . '.tpl'; $catTemplate = ($do == 'cat')&(file_exists(TEMPLATE_DIR . '/'. $f_)) ? $f_ : 'main.tpl'; $tpl->load_template ( $catTemplate ); Персональный шаблон для категории должен находиться в папке шаблона и иметь имя: main_cat.tpl, где cat - url категории За наводку использования $do == 'cat' и набросок кода огромное спасибо Александру Медведеву Надеюсь такой подход пригодится еще кому-то. ЗЫ: Можно все разделение сделать и в main.tpl, но в этом случае главный шаблон получается излишне захламленный Цитата Ссылка на сообщение Поделиться на других сайтах
WWW.ZEOS.IN 1 161 Опубликовано: 18 июля 2009 Рассказать Опубликовано: 18 июля 2009 В main.tpl прописать: [aviable=main]...html...[/aviable] [category=1]{include file="1.tpl"}[/category] [category=2]{include file="2.tpl"}[/category] [category=3]{include file="3.tpl"}[/category] Вот Вам для каждой категории свой main.tpl 1 Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 18 июля 2009 Рассказать Опубликовано: 18 июля 2009 (изменено) Так неудобно на самом деле. Особенно если меняется вёрстка блоков, да и сами они. Тем более при такой схеме DLE загрузит всё файлы, упомянутые в {include file="***"}, а уже потом будет отрезать ненужное. Изменено 18 июля 2009 пользователем Александр Медведев Цитата Ссылка на сообщение Поделиться на других сайтах
TopSoft 2 Опубликовано: 6 августа 2009 Рассказать Опубликовано: 6 августа 2009 (изменено) А как сделать чтобы у подкатегории ( /games/adventure/ ) был тот же шаблон, что и у категории? Изменено 6 августа 2009 пользователем TopSoft Цитата Ссылка на сообщение Поделиться на других сайтах
TopSoft 2 Опубликовано: 6 августа 2009 Рассказать Опубликовано: 6 августа 2009 А как такой вариант? if ($cat_info[$category_id]['id'] == '2' OR $cat_info[$category_id]['parentid'] == '2') { $tpl->load_template ('phone.main.tpl'); } elseif ($cat_info[$category_id]['id'] == '34' OR $cat_info[$category_id]['parentid'] == '34') { $tpl->load_template ('games.main.tpl'); } elseif ($cat_info[$category_id]['id'] == '45' OR $cat_info[$category_id]['parentid'] == '45') { $tpl->load_template ('soft.main.tpl'); } else { $tpl->load_template ( 'main.tpl' ); } На сколько лучше этот вариант вместо использования в шаблоне тегов [category] [not-category] [aviable] [not-aviable] ? Т.е. у меня в каждой категории выводится некоторая информация, например, ключевые слова, и из-за этого в main.tpl вышеуказанные теги используются около 200 (!) раз А таким образом, надо будет использовать теги только в определенном шаблоне и только для разделения "категория или полная новость". Цитата Ссылка на сообщение Поделиться на других сайтах
IgorA100 90 Опубликовано: 6 августа 2009 Рассказать Опубликовано: 6 августа 2009 Автор TopSoft Как-то громоздко получается... думать надо как лучше и универсальней.. Цитата Ссылка на сообщение Поделиться на других сайтах
TopSoft 2 Опубликовано: 6 августа 2009 Рассказать Опубликовано: 6 августа 2009 Ну так этот вариант подключает шаблон по ID родительской категории, которую надо указать. Если нет подкатегорий, то вариант в первом посте вполне подходит. Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 6 августа 2009 Рассказать Опубликовано: 6 августа 2009 А как сделать чтобы у подкатегории ( /games/adventure/ ) был тот же шаблон, что и у категории?может так? $f_ = is_array($cat_info[$cat_info[$category_id]['parentid']]) ? 'main_' . $cat_info[$cat_info[$category_id]['parentid']]['alt_name'] . '.tpl' : 'main_' . $category . '.tpl'; $catTemplate = ($do == 'cat')&(file_exists(TEMPLATE_DIR . '/'. $f_)) ? $f_ : 'main.tpl'; $tpl->load_template ( $catTemplate ); Цитата Ссылка на сообщение Поделиться на других сайтах
IgorA100 90 Опубликовано: 6 августа 2009 Рассказать Опубликовано: 6 августа 2009 (изменено) Автор Александр Медведев Гениально, работает !!! Изменено 6 августа 2009 пользователем IgorA100 Цитата Ссылка на сообщение Поделиться на других сайтах
leksey 0 Опубликовано: 6 августа 2009 Рассказать Опубликовано: 6 августа 2009 Персональный шаблон для категории должен находиться в папке шаблона и иметь имя: main_cat.tpl, где cat - url категории а как быть если не для всех категорий нужен свой main.tpl, а только для определенных категорий и страниц Цитата Ссылка на сообщение Поделиться на других сайтах
TopSoft 2 Опубликовано: 6 августа 2009 Рассказать Опубликовано: 6 августа 2009 (изменено) leksey, В моем варианте (Сообщение #5) шаблон для категорий назначается вручную. Можно и для страниц назначать. В варианте Александра Медведева шаблон назначается для категорий, у которых есть файл шаблона с соответствующим названием, а если его нет используется обычный шаблон - main.tpl Вообще, если категорий не много, то проще использовать стандартные теги скрипта - [category=1] Текст только для категории с ID 1 [/category] Изменено 6 августа 2009 пользователем TopSoft Цитата Ссылка на сообщение Поделиться на других сайтах
IgorA100 90 Опубликовано: 6 августа 2009 Рассказать Опубликовано: 6 августа 2009 Автор Персональный шаблон для категории должен находиться в папке шаблона и иметь имя: main_cat.tpl, где cat - url категории а как быть если не для всех категорий нужен свой main.tpl, а только для определенных категорий и страниц Если нет в папке с шаблонами файла main_cat.tpl, где cat - url категории, то будет подгружен шаблон main.tpl Т.е. все просто, создаете файлы main_cat.tpl только для тех категорий, для которых нужны свои шаблоны. Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 6 августа 2009 Рассказать Опубликовано: 6 августа 2009 Вообще, если категорий не много, то проще использовать стандартные теги скрипта - [category=1] Текст только для категории с ID 1 [/category]не в количестве категорий дело, а в гибкости. Так например, можно для определённой категории убрать боковые блоки или сделать другую шапку. Контролировать все эти изменения в одном файле main.tpl на мой взгляд сложнее. Вот мы с IgorA100 и придумали более эффективный способ) Цитата Ссылка на сообщение Поделиться на других сайтах
leksey 0 Опубликовано: 7 августа 2009 Рассказать Опубликовано: 7 августа 2009 leksey, В моем варианте (Сообщение #5) шаблон для категорий назначается вручную. Можно и для страниц назначать. В варианте Александра Медведева шаблон назначается для категорий, у которых есть файл шаблона с соответствующим названием, а если его нет используется обычный шаблон - main.tpl Вообще, если категорий не много, то проще использовать стандартные теги скрипта - [category=1] Текст только для категории с ID 1 [/category] а если сделать что б в админке можно выбрать свой main.tpl для каждой категории (по аналогии с выбором шаблона как для стат.страниц так и для новостей) Цитата Ссылка на сообщение Поделиться на других сайтах
baxus 49 Опубликовано: 9 августа 2009 Рассказать Опубликовано: 9 августа 2009 Так например, можно для определённой категории убрать боковые блоки или сделать другую шапку. Контролировать все эти изменения в одном файле main.tpl на мой взгляд сложнее. Вот мы с IgorA100 и придумали более эффективный способ) Так то оно так, но с другой стороны напрягает и изменение индекса, тоесть при обновлении придётся его снова править, а если на сайте таких хаков этак так дцать, то тут уже таже жопа только вид сверху. Цитата Ссылка на сообщение Поделиться на других сайтах
leksey 0 Опубликовано: 15 августа 2009 Рассказать Опубликовано: 15 августа 2009 Персональный шаблон для категории должен находиться в папке шаблона и иметь имя: main_cat.tpl, где cat - url категории ЗЫ: Можно все разделение сделать и в main.tpl, но в этом случае главный шаблон получается излишне захламленный А как прописать чтоб свой main подгружался для статической страницы? Цитата Ссылка на сообщение Поделиться на других сайтах
IgorA100 90 Опубликовано: 16 сентября 2009 Рассказать Опубликовано: 16 сентября 2009 Автор Немного расширенный код: $f_ = ($newsid !== 0) ? //Если вывод конкретной новости в полном формате 'main_' . $cat_info[$category_id]['alt_name'] . '.tpl' : //То берем ее шаблон (($do == 'cat') ? 'main_' . $category . '.tpl' : 'main.tpl' ); //Если вывод категории, то берем ее шаблон, иначе - основной if (file_exists(TEMPLATE_DIR . '/'. $f_)) { //Есть файл шаблона для конкретной категории $catTemplate = $f_; }else{//Нет файла шаблона для конкретной категории, припишем родительский шаблон (если у нас ПОДкатегория) $catTemplate = is_array($cat_info[$cat_info[$category_id]['parentid']]) ? 'main_' . $cat_info[$cat_info[$category_id]['parentid']]['alt_name'] . '.tpl' : 'main.tpl'; } $catTemplate = (file_exists(TEMPLATE_DIR . '/'. $catTemplate)) ? $catTemplate : 'main.tpl'; //Проверим на всякий случай присутствие файла шаблона Теперь полная новость открывается в шаблоне той категории, к которой она принадлежит. Но вот что делать, если одна новость принадлежит к нескольким категориям? Возможно использовать кукисы и открывать полную новость в шаблоне той категории откуда началось чтение полной новости. Есть мысли на эту тему?А как прописать чтоб свой main подгружался для статической страницы? В админке к любой статич странице можно задать свой шаблон (по умолчанию это: static.tpl, а не main.tpl) Цитата Ссылка на сообщение Поделиться на других сайтах
IgorA100 90 Опубликовано: 16 сентября 2009 Рассказать Опубликовано: 16 сентября 2009 (изменено) Автор Очередная редакция хака: $f_ = ($newsid !== 0) ? //Если вывод конкретной новости в полном формате 'main_' . $cat_info[$category_id]['alt_name'] . '.tpl' : //То берем ее шаблон (($do == 'cat') ? 'main_' . $category . '.tpl' : 'main.tpl' ); //Если вывод категории, то берем ее шаблон, иначе - основной if (file_exists(TEMPLATE_DIR . '/'. $f_)) { //Есть файл шаблона для конкретной категории $catTemplate = $f_; }else{//Нет файла шаблона для конкретной категории, припишем родительский шаблон (если у нас ПОДкатегория) $parentid_ = $cat_info[$category_id]['parentid']; $alt_name_cat_ = $cat_info[$parentid_]['alt_name']; while (isset($alt_name_cat_)) //Есть имя, т.е. не вамый верх! { if (isset ($alt_name_cat_)&file_exists(TEMPLATE_DIR . '/'. 'main_' . $alt_name_cat_ . '.tpl')) { $catTemplate = 'main_' . $alt_name_cat_ . '.tpl' ; break; }else{ $parentid_ = $cat_info[$parentid_]['parentid']; $alt_name_cat_ = $cat_info[$parentid_]['alt_name']; } } } $catTemplate = isset ($catTemplate)&(file_exists(TEMPLATE_DIR . '/'. $catTemplate)) ? $catTemplate : 'main.tpl'; //Проверим присутствие файла шаблона $tpl->load_template ( $catTemplate ); Теперь просматриваются ВСЕ родительские категории на предмет наличия шаблона. В случае отсутствия - выводится main.tpl ЗЫ: Немного потестил, вроде работает Изменено 16 сентября 2009 пользователем IgorA100 Цитата Ссылка на сообщение Поделиться на других сайтах
Mozg 0 Опубликовано: 24 сентября 2009 Рассказать Опубликовано: 24 сентября 2009 А как такой вариант? if ($cat_info[$category_id]['id'] == '2' OR $cat_info[$category_id]['parentid'] == '2') { $tpl->load_template ('phone.main.tpl'); } elseif ($cat_info[$category_id]['id'] == '34' OR $cat_info[$category_id]['parentid'] == '34') { $tpl->load_template ('games.main.tpl'); } elseif ($cat_info[$category_id]['id'] == '45' OR $cat_info[$category_id]['parentid'] == '45') { $tpl->load_template ('soft.main.tpl'); } else { $tpl->load_template ( 'main.tpl' ); } На сколько лучше этот вариант вместо использования в шаблоне тегов [category] [not-category] [aviable] [not-aviable] ? Т.е. у меня в каждой категории выводится некоторая информация, например, ключевые слова, и из-за этого в main.tpl вышеуказанные теги используются около 200 (!) раз А таким образом, надо будет использовать теги только в определенном шаблоне и только для разделения "категория или полная новость". А подробнее можно как сделать для определенной страницы по твоему коду? Я создал отдельный модуль, который открывается по определенной ссылке и хочу что бы эта страница была без рекламы, написать отдельный шаблон для нее и что бы он подгружался когда открывается эта страница. Заранее спасибо... Цитата Ссылка на сообщение Поделиться на других сайтах
IgorA100 90 Опубликовано: 25 сентября 2009 Рассказать Опубликовано: 25 сентября 2009 Автор А подробнее можно как сделать для определенной страницы по твоему коду? А чем мой вариант не устроил? Цитата Ссылка на сообщение Поделиться на других сайтах
Mozg 0 Опубликовано: 25 сентября 2009 Рассказать Опубликовано: 25 сентября 2009 А чем мой вариант не устроил? А где именно в твоем коде нужно прописать ссылку на нужную страницу? И где именно указать название нужного шаблона? Цитата Ссылка на сообщение Поделиться на других сайтах
zzzwww 0 Опубликовано: 25 сентября 2009 Рассказать Опубликовано: 25 сентября 2009 Немного расширенный код: $f_ = ($newsid !== 0) ? //Если вывод конкретной новости в полном формате 'main_' . $cat_info[$category_id]['alt_name'] . '.tpl' : //То берем ее шаблон (($do == 'cat') ? 'main_' . $category . '.tpl' : 'main.tpl' ); //Если вывод категории, то берем ее шаблон, иначе - основной if (file_exists(TEMPLATE_DIR . '/'. $f_)) { //Есть файл шаблона для конкретной категории $catTemplate = $f_; }else{//Нет файла шаблона для конкретной категории, припишем родительский шаблон (если у нас ПОДкатегория) $catTemplate = is_array($cat_info[$cat_info[$category_id]['parentid']]) ? 'main_' . $cat_info[$cat_info[$category_id]['parentid']]['alt_name'] . '.tpl' : 'main.tpl'; } $catTemplate = (file_exists(TEMPLATE_DIR . '/'. $catTemplate)) ? $catTemplate : 'main.tpl'; //Проверим на всякий случай присутствие файла шаблона Теперь полная новость открывается в шаблоне той категории, к которой она принадлежит. Но вот что делать, если одна новость принадлежит к нескольким категориям? Возможно использовать кукисы и открывать полную новость в шаблоне той категории откуда началось чтение полной новости. Есть мысли на эту тему? А как прописать чтоб свой main подгружался для статической страницы? В админке к любой статич странице можно задать свой шаблон (по умолчанию это: static.tpl, а не main.tpl) static.tpl - это понятно, но боковые блоки подгружает main.tpl. Очень нужно, чтобы при смене статических страниц подгружались другие блоки. Помогите, люди добрые и вразумите. Очень буду благодарен! Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 081 Опубликовано: 25 сентября 2009 Рассказать Опубликовано: 25 сентября 2009 zzzwww, Начините с чтения правил форума Если ваша тема начинается с вопроса и вам нужна какая либо помощь, то в самой теме в обязательном порядке вы должны указывать ссылку на ваш сайт. Если ваш сайт находится в локальной сети и вы не можете предоставить ссылку то отправляйте персональное сообщение с вопросом в службу поддержки непосредственно с сайта http://dle-news.ru/, вам ответят на ваш вопрос в персональном порядке, в случае если пользуетесь легальной копией скрипта. Если вы не указали сайт, то ваша тема будет закрыта, а аккаунт на форуме заблокирован. Цитата Ссылка на сообщение Поделиться на других сайтах
Rabben 0 Опубликовано: 15 октября 2009 Рассказать Опубликовано: 15 октября 2009 Очередная редакция хака: $f_ = ($newsid !== 0) ? //Если вывод конкретной новости в полном формате 'main_' . $cat_info[$category_id]['alt_name'] . '.tpl' : //То берем ее шаблон (($do == 'cat') ? 'main_' . $category . '.tpl' : 'main.tpl' ); //Если вывод категории, то берем ее шаблон, иначе - основной if (file_exists(TEMPLATE_DIR . '/'. $f_)) { //Есть файл шаблона для конкретной категории $catTemplate = $f_; }else{//Нет файла шаблона для конкретной категории, припишем родительский шаблон (если у нас ПОДкатегория) $parentid_ = $cat_info[$category_id]['parentid']; $alt_name_cat_ = $cat_info[$parentid_]['alt_name']; while (isset($alt_name_cat_)) //Есть имя, т.е. не вамый верх! { if (isset ($alt_name_cat_)&file_exists(TEMPLATE_DIR . '/'. 'main_' . $alt_name_cat_ . '.tpl')) { $catTemplate = 'main_' . $alt_name_cat_ . '.tpl' ; break; }else{ $parentid_ = $cat_info[$parentid_]['parentid']; $alt_name_cat_ = $cat_info[$parentid_]['alt_name']; } } } $catTemplate = isset ($catTemplate)&(file_exists(TEMPLATE_DIR . '/'. $catTemplate)) ? $catTemplate : 'main.tpl'; //Проверим присутствие файла шаблона $tpl->load_template ( $catTemplate ); Теперь просматриваются ВСЕ родительские категории на предмет наличия шаблона. В случае отсутствия - выводится main.tpl ЗЫ: Немного потестил, вроде работает подскажите где указывать id категории, и где указать название шаблона(tpl) Цитата Ссылка на сообщение Поделиться на других сайтах
IgorA100 90 Опубликовано: 18 октября 2009 Рассказать Опубликовано: 18 октября 2009 Автор подскажите где указывать id категории, и где указать название шаблона(tpl) В моем первом сообщении написано: Персональный шаблон для категории должен находиться в папке шаблона и иметь имя: main_cat.tpl, где cat - url категории Например у Вас есть категория "game". Для того, что бы у нее был свой шаблон, достаточно создать файл шаблона с именем "main_game.tpl" в папке с Вашими шаблонами. Все, больше ничего нигде прописывать не надо. Если файла "main_game.tpl" не будет - подгрузится как и обычно main.tpl Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.