2010-02-01 3 views
4

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

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

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

Edit:

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

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

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

ответ

4

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

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) Micro-Markup

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

CMS Solutions

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

Простейшее подход

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

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

0

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

+0

Вы также можете помочь CSS-тематике, включив несколько «бесполезных» пустых разделов, которые могут быть размещены в таблице стилей и помещены в фоновое изображение. – bobince

3

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

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

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

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

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

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

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

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

+0

«Это нехороший подход по ряду причин, хотя« было бы полезно, если бы вы можете указать некоторые причины. Таким образом, большинство MVC-фреймворков связывают модель с представлением - так что нет логики, просто размещения данных. – Fenton

+0

У меня есть, см. Мой отредактированный ответ. –

0

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

1

Если вы посмотрите на мой CodeIgniter Template library, он кратко объяснит, как вы можете настраивать темы и макеты (эквивалент заголовка & footer).

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

Например:

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

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

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

Смежные вопросы