ASP.NET Theme'ing вместе с изображениями для клиентов и CSS - PullRequest
0 голосов
/ 08 декабря 2011

У нас есть решение ASP.NET, использующее файлы изображений, css и .skin в App_Theme / {выбранная тема}.Сегодня темы содержат много, много файлов и изображений, и для темы клиента мы добавляем новую папку в App_Themes, копируем все файлы в новую папку и вносим 10-200 изменений в изображения, обложки и CSS.

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

Идеальным решением было бы иметь базовую тему, которая содержит базовые CSS, скин и изображения.И когда мы добавляем новую пользовательскую тему, мы только сообщаем системе, что было изменено, какие css-селекторы переопределить и какие изображения использовать вместо изображений из базовой темы.Насколько я понимаю, если использовать обычную функциональность темы ASP.NET в папке App_Themes, вы можете иметь только ОДНУ тему, а не тему BASE, а затем сказать тему DeliveryCustomer с другим фоном и некоторыми другими изображениями, которые вместо этого будет использовать решение.из них в BASE-теме.

Есть ли у кого-нибудь какие-либо рекомендации, чтобы решить эту проблему приемлемым образом в будущем.Я видел, что люди переопределяют путь App_Theme, чтобы он работал с пользовательскими оболочками.

спасибо!

Ответы [ 2 ]

0 голосов
/ 13 декабря 2011

Хорошо, вот как я это сделал, знаю. Я создал тему по умолчанию, которая является оригинальной темой со всеми css-файлами, скинами и изображениями, которые необходимы, и это много. Эта тема находится в папке App_Themes. Их я создал новую папку под названием ThemeSkins рядом с папкой App_Themes. В этой папке у меня есть все новые скины в разных папках. Имя папки - это название новой темы, которую нужно иметь. В каждой из папок скина есть css-файлы, которые содержат только те селекторы, которые я хочу перегрузить. Есть также изображения, которые я хочу заменить.

Я создал инструмент ThemeCreator, который выполняет три вещи:

  • Удалите все темы, кроме темы по умолчанию, в папке App_Themes. Это только одна основная тема для разработчиков. В ThemeSkins все еще будет работа, которую необходимо выполнить, но общая нагрузка будет минимальной.
  • Далее инструмент просматривает папки, которые есть в ThemeSkins, и создает папку в App_Themes для каждой обложки со своим именем. Затем он копирует тему по умолчанию во все новые папки скина, которые он только что создал.
  • И последнее, что он объединит файлы скинов во вновь созданный скин под App_Themes и сообщит пользователю, какие файлы были добавлены только для информации. Инструмент добавляет префикс "z_" ко всем css-файлам, так что они загружаются последними из всех css-файлов и там будут перегружать селекторы по умолчанию.

Осталось только обновить файлы скинов, пока ни одному клиенту не потребовались изменения в этих файлах. Но когда они это делают, я думаю, что я просто добавляю файлы скинов и должен автоматически обновить настройки по умолчанию, так как маркеры скинов не могут быть перегружены, как css-селекторы.

Это работает очень гладко и дает нам хороший и простой способ работать со скинами на наших темах. Кто-нибудь получил лучшую идею, как получить тот же результат? основная проблема с использованием тем ASP.NET заключается в том, что вы не можете использовать тему по умолчанию, а затем просто применять к ней скины, не используя атрибуты shape и color в файлах скинов. Это не рекомендуется, поскольку файлы скинов копируют все атрибуты во все места, которые им нужны в разметке, а не просто ссылаются на них, как это делают css-классы.

0 голосов
/ 08 декабря 2011

Используйте концепцию базовой темы, как вы описали. Вытащите все общие правила CSS в другой файл, назовем его base.css.

Возьмите base.css и все изображения, которые являются общими, и поместите их в папку вне из App_Themes, и просто включите файл CSS, как это обычно делается на любой другой главной странице.

<link rel="stylesheet" type="text/css" href="/styles/base.css" /> <!-- Note this isn't in app_themes -->

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

...