Отображение содержимого страницы с использованием нескольких шаблонов - WordPress - PullRequest
2 голосов
/ 08 марта 2012

Возможно ли иметь страницу типа: www.site.com / page /

и показывать разные шаблонные версии, используя, скажем:

www.site.com/page/?template=default

www.site.com / page /? template = archive

...?

Таким образом, он получает тот же контент страницы, но отображает его по-разному.

Возможно ли это с WordPress?Это стандартно или для этого понадобится какое-нибудь хулиганство?

Спасибо

Ответы [ 2 ]

3 голосов
/ 16 марта 2012

Я ответил на похожий вопрос минуту назад.

Вручную установить шаблон с использованием PHP в WordPress

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

function filter_page_template($template){

        /* Lets see if 'template is set' */
        if( isset($_GET['template']) ) {

            /* If so, lets try to find the custom template passed as in the query string. */
            $custom_template = locate_template( $_GET['template'] . '.php');

            /* If the custom template was not found, keep the original template. */
            $template = ( !empty($custom_template) ) ?  $custom_template : $template;
        }

        return $template;
}
add_filter('page_template', 'filter_page_template');

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

Я хотел бы отметить, что вам следует провести некоторую проверку по значению $ _GET ['template'] перед его использованием, но также вы можете захотеть сохранить текущий список для проверки, чтобы они не могли простоиспользуйте любой старый шаблон.

2 голосов
/ 08 марта 2012

Создайте «мастер» шаблон и назначьте его своей странице.Главный шаблон не содержит никакой информации о макете - просто набор условных операторов включения, который выбирает «настоящий» шаблон на основе переменной GET.Главный шаблон может выглядеть примерно так:

<?php
switch ($_GET["template"]) {
    case "foo":
        include(TEMPLATEPATH . "/foo.php");
        break;
    case "bar":
        include(TEMPLATEPATH . "/bar.php");
        break;
    case "baz":
        include(TEMPLATEPATH . "/baz.php");
        break;
    default:
        include(TEMPLATEPATH . "/default_template.php");
        break;
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...