#css #dynamic #stylesheet #symfony #twig
#css #динамический #таблица стилей #symfony #twig
Вопрос:
У нас есть единый веб-интерфейс в Symfony2, который используется несколькими клиентами. Каждый клиент заходит на наш сайт по другому URL. Например:
- клиент A вводит с clientA.our-domain.com
- клиент B вводит из clientB.our-domain.com
- клиент C может даже присоединиться из clientC.com , т.е. используя их собственный выбранный домен вместо нашего поддомена
Однако, независимо от используемого URL-адреса, они попадают на один и тот же компьютер: наш веб-сайт.
Прямо сейчас мы используем один и тот же CSS для всех из них, независимо от того, какой клиент. Мы были бы рады, если бы мы могли разработать таблицу стилей для каждого клиента с цветовыми схемами, зависящими от клиента. Я не хочу настраивать отдельный веб-сервер для каждого клиента, поэтому я хочу выбрать таблицу стилей динамически.
Теперь в заголовке HTTP ‘Host’ можно увидеть, какой URL-адрес использовал клиент, верно. Можно ли это использовать, например, в app.php , чтобы установить некоторую глобальную переменную, которая определяет клиента? Возможно, Twig может прочитать эту переменную в основном шаблоне и решить, какую таблицу стилей использовать на ее основе?
Кроме того, должны ли мы затем использовать переменные css? Это может быть предпочтительнее, чем сохранение полных «клонов» таблиц стилей для каждого клиента, если меняются только цвета.
Итак, подведем итог:
- Можно ли использовать HTTP-заголовок ‘host’ в Symfony2, чтобы указать Twig, какую таблицу стилей использовать?
- Должны ли мы использовать переменные CSS для определения цветов в схеме, или есть лучший способ?
Заранее спасибо!
Dieter
Ответ №1:
Лично я бы предпочел использовать специальный файл CSS для каждого сайта (содержащий стиль, который отличается для каждого сайта, например, цвета или фоновые изображения). Например. site-clientA.our-domain.com.css
.
Тогда вы могли бы использовать что-то вроде этого:
<link rel="stylesheet" type="text/css"
href="/path/to/css/site-{{ app.request.host }}.css" />
Или
{% if app.request.host in ['site-clientA.our-domain.com', 'site-clientB.our-domain.com', 'site-clientC.our-domain.com'] %}
<link rel="stylesheet" type="text/css"
href="/path/to/css/site-style1.css" />
{% elseif ... %}
...
{% endif %}
Комментарии:
1. Спасибо за ваш ответ. Использование URL-адреса — это idd путь. К сожалению, для нашего дизайна недостаточно поместить все переменные в одну таблицу стилей. В нашем случае это привело бы к одному огромному, неуправляемому файлу css. Использование переменных CSS может быть решением? Затем мы можем сослаться на файл .css с помощью вашего метода url и поместить в этот файл все, что отличается по цвету, и использовать их в качестве переменных в других файлах css ( net.tutsplus.com/tutorials/html-css-techniques /… ) Главный вопрос в том, как лучше всего использовать переменные .css в Symfony?