Как начать работу с темами PHP? - PullRequest
4 голосов
/ 01 февраля 2010

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

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

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

Edit:

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

Предположим, у моего пользователя ADMIN будет белый и оранжевый, а у моего штатного пользователя - белый и зеленый ...

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

Ответы [ 6 ]

4 голосов
/ 01 февраля 2010

Существует множество направлений, по которым вы можете идти.

1) "CSS ZEN"

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

2) MVC Stylee

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

Пример:

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

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

С помощью этого метода вы добавляете свои собственные «специальные теги» на страницу 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, если будет много типов пользователей
  • Если замена полная, а не просто несколько переопределений, вы можете полностью заменить таблицу стилей.
3 голосов
/ 01 февраля 2010

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

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

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

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

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

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

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

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

1 голос
/ 01 февраля 2010

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

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

Например:

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

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

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

0 голосов
/ 01 февраля 2010

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

0 голосов
/ 01 февраля 2010

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

0 голосов
/ 01 февраля 2010

CMS Solutions

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

Более легкий подход

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...