Несколько (два) шаблона для одной страницы

То что для разных категорий можно делать разные шаблоны, это хорошо везде описано и вообщем понятно как сделать, даже чайнику 🙂 т.е. мне.
Но, хочется следующего, чтобы для категории у пользователя была возможность выбирать разные шаблоны, т.е. чтобы по действию пользователя, лучше по клику на ссылку он мог переключаться между шаблонами.
В качестве примера:
Есть категории, которые отображаются так: http://morre.ru/category/nablyudeniya/
А есть шаблон, который отображает так: http://morre.ru/category/vidy/
Как сделать, чтобы на странице выбраной категории пользователь мог переключаться между двумя этими шаблонами?
А да, WP версии 2.1

Style sheet Chooser

* Version: 0.3
* License: GPL
* Description:
It shows a drop down box showing the available style sheets and allows the user to choose one. Using a cookie, this setting will be remembered for the duration of the browser session.
* Author: Jonathan Foucher

Позволяет выбирать пользователю тему (не для категории, а для всего блога).

Не, вы меня не поняли, ну или я не точно выразился. Мне нужно переключаться не между css, а между template файлами.
Т.е. у меня есть два темплейт файла – archive.php и archive_thumb.php — как в данном случае дать пользователю возможность выбрать между двумя этими файлами?
В идеале хочется, чтобы на странице сверху было две ссылки — "списком" и "матрицей". По-умолчанию открывается "списком" как здесь http://morre.ru/category/nablyudeniya/ ,а нажал пользователь на "матрицей" и у него вид страницы такой http://morre.ru/category/vidy/

Не очень понятна задача. Я понял так, что вам нужно сделать две ссылки, кликая на которые посетитель получает различный вывод (структуру, дизайн) это страницы.

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

...?code=1
...?code=2
...?code=3

После этого в файле шаблона, например index.php вам нужно проанализировать $_GET[‘code’]:

   if ( $_GET['code'] == 1 ) require('code1.php');
   elseif ( $_GET['code'] == 2 ) require('code2.php');
   elseif ( $_GET['code'] == 3 ) require('code3.php');

Соответствено в code1(2,3).php содержатся ваши темплейт-файлы. Если вы делаете шаблон, по аналогии с rioni (см. рассылку), то подключить эти файлы будет очень просто.

Спасибо, наверно это то, что мне нужно.
Хочу уточнить синтаксис, – т.е. я пишу так < a href="…."?code=1 >ссылка < /a >
А в файле archive.php пишу только условие. Так?

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

Я кажется понял какая должна быть схема.
Пользователь кликает на категорию – попадает по умолчанию на шаблон archive.php, при этом надо задать какую-то переменную, например $template=0 – т.е. если используется шаблон archive.php, то переменная равна нулю. Потом надо поставить условие
< ? php if ($template=1) require(‘archive_thumb.php’); ? >
< ?php else : ? >
< ? php require(‘archive.php’); ? >
И соответственно это вставить в шаблон archive.php, а в шаблон archive_thumb.php вставить код обратный, что переменная равна 1, а если равна нулю, то использовать arhcive.php правильно я мыслю?
Вот только надо как-то переменную привязать к ссылке, точнее к клику по ссылке, а как это сделать я пока не очень понимаю. Может кто может подсказать, правильно ли я написал php код и что нужно сделать с ссылкой?

Вот так нужно: < a href="сайт/?code=1" >ссылка < /a >

А параметром вы как раз и передаете, какой именно шаблон вывода использовать.

Простите мою тупость, но я все равно не до конца понимаю.
У меня есть template archive.php если я в него вставляю код

<a href="?template=1">матрицей</a>
<?php if ( $_GET[‘template’] == 1 )require(‘archive_thumb.php’);
?>

То у меня получается странная картина http://morre.ru/category/nablyudeniya/?template=1, сверху отображается как я хочу, а после футера идет вариант по-умолчанию. Т.е. получается, что шаблон archive_thumb.php вложен в шаблон archive, даже если template=1 ((( Что я делаю не так?

Так и должно быть. Вы же находитесь в файле archive.php, и в нем выводится сначала то, что делает файл archive_thumb.php, а потом остальное, что должно быть выведено в файле archive.php. То есть Вам либо нужно анализировать template ранее (index.php), либо не создавать лишних файлов, а в archive.php в условии прописать сам темплейт:

<?php if ( $_GET['template'] == 1 )
//здесь содержимое файла archive.php, исключая общую часть с archive_thumb.php
else
//здесь выведение "матрицей", которое Вы разместили в archive_thumb.php
?>

У меня была такая попытка ) но сейчас попробую понастойчивей, видимо не сработало, т.к. я не очень внимательно отнесся к общей части.

Читайте рассылку по созданию шаблона (rioni). В ней приведен код для подключения различных темплейтов. Делайте аналогично.

Arien, спасибо большое 🙂 все заработало!
Максим, и вам тоже спасибо :))

Anonymous
Отправить
Ответ на: