Как начать работу с темами PHP?


У меня есть веб-приложение, разработанное с использованием PHP. Я хочу, чтобы мои пользователи выбирали темы для своих страниц по всему приложению.

  • С чего мне следует начать, прежде чем использовать темы PHP?

Что я должен знать о темах в PHP-приложении?

Редактировать:

Мой вопрос о темах касается только изменения цвета макета, а не изображений.

Предположим, что у моего АДМИНИСТРАТОРА будут белый и оранжевый цвета, но у моего штатного пользователя будут белый и зеленый...

Как это можно сделать в PHP с помощью CodeIgniter?

Author: Peter Mortensen, 2010-02-01

6 answers

Есть много направлений, в которых вы можете пойти с этим.

1) "CSS ДЗЕН"

Здесь разметка остается неизменной, но вы полностью меняете дизайн, просто используя CSS и изображения. Очень хорошо продемонстрировано на http://www.csszengarden.com/

2) Стиль MVC

Здесь вы создаете модель, представляющую данные страницы, а затем передаете ее в представление, которое содержит некоторые встроенные операторы echo. Идея заключается в том, что вы могли бы отправить ту же модель в совершенно другой вид, чтобы он мог выглядеть совершенно по-другому, HTML и все такое. PHP Cake - хорошее начало для этого: http://cakephp.org/

Пример:

<div class="content">
    <? echo $Page->Content ?>
</div>

3) Микроразметка

С помощью этого метода вы добавляете свои собственные "специальные теги" на HTML-страницу. Затем вы читаете свою обычную HTML-страницу и заменяете специальные теги информацией, которую хотите отобразить. Это хорошо, если вы хотите, чтобы ваши шаблоны были узнаваемы для HTML-парней, которые не знают PHP и могут сломать PHP код в приложении MVC.

Пример:

<div class="content">
    <#Content#>
</div>

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

Я реализовал эту концепцию во всех трех из них, в ситуациях, которые были подходящими для каждого из них.

Что Касается Правки В Вопросе

Я полагаю, что у вас будет "что-то", представляющее вашего пользователя, - так что это как просто, как:

(В случае, если вы просто хотите переопределить несколько настроек...)

<link href="style.css" type="text/css" rel="stylesheet">
<?php if ($User->Type === USER_ADMIN) {  ?>
<link href="admin.css" type="text/css" rel="stylesheet">
<?php } ?>

Вы можете настроить этот пример следующими способами:

  • Используйте оператор switch, если будет много типов пользователей
  • Если замена полная, а не просто несколько переопределений, вы можете полностью поменять таблицу стилей.
 4
Author: user75525, 2010-02-01 13:28:02

Обычно вы настраиваете файлы шаблонов, содержащие HTML и CSS, и создаете значения, сгенерированные PHP во время выполнения.

Лучший подход к этому - разместить тему в отдельном каталоге, не содержащем кода, только переменные шаблона, такие как {mainmenu}, {backbutton}, {content} ... ты понимаешь, к чему я клоню. Затем они заполняются вашим PHP-скриптом, возможно, с помощью шаблонизатора, такого как Умный ( Нет необходимости заново изобретать колесо здесь).

Существует также подход, заключающийся в наличии разметки PHP непосредственно в файле(файлах) шаблона, например echo $xyz; хотя это совершенно правильная практика, которую я часто использую сам, я рекомендую использовать механизм шаблонов вместо использования разметки PHP в коде, если вам нужна надежная, надежная система шаблонов, потому что:

  • Во-первых, меньше всего дизайнер может сломаться при работе с HTML.

  • Во-вторых, наличие разметки PHP в коде - это соблазн запрограммировать логику PHP внутри шаблона (циклы, условия) вместо того, чтобы должным образом подготовить их в коде PHP в точке, где создаются переменные шаблона. Это ужасно для обслуживания и дальнейшего использования ваших шаблонов, потому что вам придется снова копировать этот PHP-суп в каждый новый шаблон. В конце концов, вы хотите иметь механизм шаблонов, чтобы другие могли создавать новые образы для вашего продукта, не зная, как его программировать.

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

  • В-четвертых и наименее важных, это делает ваш шаблон менее удобным для экспорта в другие приложения и импорта шаблонов из других приложения.

Подход CSS Zen, упомянутый Sohnee, отлично подходит для веб-сайтов, но будет слишком ограничен для веб-приложения, которое использует сложные элементы ввода, меню на основе JS и тому подобное. Слишком часто эти элементы необходимо изменять и настраивать в разметке.

 3
Author: Pekka 웃, 2010-02-01 13:12:11

Если вы посмотрите на мою библиотеку шаблонов CodeIgniter , в ней кратко объясняется, как вы можете настраивать темы и макеты (эквивалент верхнего и нижнего колонтитулов).

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

Например:

if($user->role == 'admin')
{
    $this->template->set_theme('admin_skin');
}

else
{
    $this->template->set_theme($user->theme);
}

Это всего лишь ОЧЕНЬ простой пример того, для чего вы могли бы использовать эту библиотеку шаблонов.

 1
Author: Phil Sturgeon, 2010-02-01 12:25:57

Решения CMS

Magento и Wordpress упаковывают все файлы, связанные с темой, в свои собственные отдельные каталоги. Они содержат код на стороне сервера, таблицы стилей, изображения и JavaScript для темы. Пользователь фактически выбирает каталог для использования, который влияет на то, как страница оформлена и оформлена.

Более простой подход

Гораздо более простым способом начать работу было бы согласиться с тем, что фактическое содержимое, например HTML страницы, останется прежним, но пусть пользователь может выбирать из различных таблиц стилей CSS.

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

 0
Author: Jon Winstanley, 2010-02-01 10:52:33

Если у вас действительно хороший семантический HTML, вам будет достаточно изменить файлы CSS. Если только изменения в дизайне не будут действительно серьезными. Тогда имело бы смысл предоставить шаблоны PHP, которые строятся с помощью каких-то модулей: переменных, которые содержат определенную структуру HTML, такую как навигация или боковая панель и т.д.

 0
Author: antpaw, 2010-02-06 18:21:06

Для тем вам не нужен PHP. Просто определите свои темы в CSS (лучший способ - один файл для каждой темы) и используйте простой выбор JavaScript, как на этом сайте: http://www.fotokluburan.cz/switchcss.js.

 0
Author: Rusty Horse, 2010-02-06 18:22:07