Перейти к публикации

Рекомендованные сообщения

Для того, чтобы при открытии категории обрабатывался не стандартный 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, но в этом случае главный шаблон получается излишне захламленный ;)

Ссылка на сообщение
Поделиться на других сайтах

В 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 :rolleyes:

Ссылка на сообщение
Поделиться на других сайтах

Так неудобно на самом деле. Особенно если меняется вёрстка блоков, да и сами они.

Тем более при такой схеме DLE загрузит всё файлы, упомянутые в {include file="***"}, а уже потом будет отрезать ненужное.

Изменено пользователем Александр Медведев
Ссылка на сообщение
Поделиться на других сайтах
  • 3 недели спустя...

А как сделать чтобы у подкатегории ( /games/adventure/ ) был тот же шаблон, что и у категории?

Изменено пользователем TopSoft
Ссылка на сообщение
Поделиться на других сайтах

А как такой вариант?

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 (!) раз :) А таким образом, надо будет использовать теги только в определенном шаблоне и только для разделения "категория или полная новость".

Ссылка на сообщение
Поделиться на других сайтах

Ну так этот вариант подключает шаблон по ID родительской категории, которую надо указать. Если нет подкатегорий, то вариант в первом посте вполне подходит.

Ссылка на сообщение
Поделиться на других сайтах

А как сделать чтобы у подкатегории ( /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 );

Ссылка на сообщение
Поделиться на других сайтах

Александр Медведев

Гениально, работает !!! :rolleyes:

Изменено пользователем IgorA100
Ссылка на сообщение
Поделиться на других сайтах

Персональный шаблон для категории должен находиться в папке шаблона и иметь имя: main_cat.tpl, где cat - url категории

а как быть если не для всех категорий нужен свой main.tpl, а только для определенных категорий и страниц

Ссылка на сообщение
Поделиться на других сайтах

leksey, В моем варианте (Сообщение #5) шаблон для категорий назначается вручную. Можно и для страниц назначать.

В варианте Александра Медведева шаблон назначается для категорий, у которых есть файл шаблона с соответствующим названием, а если его нет используется обычный шаблон - main.tpl

Вообще, если категорий не много, то проще использовать стандартные теги скрипта - [category=1] Текст только для категории с ID 1 [/category]

Изменено пользователем TopSoft
Ссылка на сообщение
Поделиться на других сайтах

Персональный шаблон для категории должен находиться в папке шаблона и иметь имя: main_cat.tpl, где cat - url категории

а как быть если не для всех категорий нужен свой main.tpl, а только для определенных категорий и страниц

Если нет в папке с шаблонами файла main_cat.tpl, где cat - url категории, то будет подгружен шаблон main.tpl Т.е. все просто, создаете файлы main_cat.tpl только для тех категорий, для которых нужны свои шаблоны.

Ссылка на сообщение
Поделиться на других сайтах

Вообще, если категорий не много, то проще использовать стандартные теги скрипта - [category=1] Текст только для категории с ID 1 [/category]
не в количестве категорий дело, а в гибкости.

Так например, можно для определённой категории убрать боковые блоки или сделать другую шапку. Контролировать все эти изменения в одном файле main.tpl на мой взгляд сложнее. Вот мы с IgorA100 и придумали более эффективный способ)

Ссылка на сообщение
Поделиться на других сайтах

leksey, В моем варианте (Сообщение #5) шаблон для категорий назначается вручную. Можно и для страниц назначать.

В варианте Александра Медведева шаблон назначается для категорий, у которых есть файл шаблона с соответствующим названием, а если его нет используется обычный шаблон - main.tpl

Вообще, если категорий не много, то проще использовать стандартные теги скрипта - [category=1] Текст только для категории с ID 1 [/category]

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

Ссылка на сообщение
Поделиться на других сайтах

Так например, можно для определённой категории убрать боковые блоки или сделать другую шапку. Контролировать все эти изменения в одном файле main.tpl на мой взгляд сложнее. Вот мы с IgorA100 и придумали более эффективный способ)

Так то оно так, но с другой стороны напрягает и изменение индекса, тоесть при обновлении придётся его снова править, а если на сайте таких хаков этак так дцать, то тут уже таже жопа только вид сверху.

Ссылка на сообщение
Поделиться на других сайтах

Персональный шаблон для категории должен находиться в папке шаблона и иметь имя: main_cat.tpl, где cat - url категории

ЗЫ: Можно все разделение сделать и в main.tpl, но в этом случае главный шаблон получается излишне захламленный ;)

А как прописать чтоб свой main подгружался для статической страницы?

Ссылка на сообщение
Поделиться на других сайтах
  • 1 месяц спустя...

Немного расширенный код:


	$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)

Ссылка на сообщение
Поделиться на других сайтах

Очередная редакция хака:


	$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

ЗЫ: Немного потестил, вроде работает :)

Изменено пользователем IgorA100
Ссылка на сообщение
Поделиться на других сайтах

А как такой вариант?

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 (!) раз :) А таким образом, надо будет использовать теги только в определенном шаблоне и только для разделения "категория или полная новость".

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

Заранее спасибо...

Ссылка на сообщение
Поделиться на других сайтах

А подробнее можно как сделать для определенной страницы по твоему коду?

А чем мой вариант не устроил? :unsure:

Ссылка на сообщение
Поделиться на других сайтах

А чем мой вариант не устроил?

А где именно в твоем коде нужно прописать ссылку на нужную страницу? И где именно указать название нужного шаблона?

Ссылка на сообщение
Поделиться на других сайтах

Немного расширенный код:


	$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.

Очень нужно, чтобы при смене статических страниц подгружались другие блоки.

Помогите, люди добрые и вразумите.

Очень буду благодарен!

Ссылка на сообщение
Поделиться на других сайтах

zzzwww,

Начините с чтения правил форума

Если ваша тема начинается с вопроса и вам нужна какая либо помощь, то в самой теме в обязательном порядке вы должны указывать ссылку на ваш сайт. Если ваш сайт находится в локальной сети и вы не можете предоставить ссылку то отправляйте персональное сообщение с вопросом в службу поддержки непосредственно с сайта http://dle-news.ru/, вам ответят на ваш вопрос в персональном порядке, в случае если пользуетесь легальной копией скрипта. Если вы не указали сайт, то ваша тема будет закрыта, а аккаунт на форуме заблокирован.

Ссылка на сообщение
Поделиться на других сайтах
  • 3 недели спустя...

Очередная редакция хака:


	$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)

Ссылка на сообщение
Поделиться на других сайтах

подскажите где указывать id категории, и где указать название шаблона(tpl)

В моем первом сообщении написано:

Персональный шаблон для категории должен находиться в папке шаблона и иметь имя: main_cat.tpl, где cat - url категории

Например у Вас есть категория "game". Для того, что бы у нее был свой шаблон, достаточно создать файл шаблона с именем "main_game.tpl" в папке с Вашими шаблонами. Все, больше ничего нигде прописывать не надо. Если файла "main_game.tpl" не будет - подгрузится как и обычно main.tpl

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...