1. Приветствуем Вас на неофициальном форуме технической поддержки XenForo на русском языке. XenForo - коммерческий форумный движок от бывших создателей vBulletin, написанный на PHP.

1.1.1 Как правильно править стиль форума?

Тема в разделе "Вопросы по стилям, изменения в CSS и шаблонах", создана пользователем Andyk, 31.01.2012.

Загрузка
  1. Andyk

    Andyk Местный

    Регистрация:
    27.01.12
    Сообщения:
    64
    Симпатии:
    6
    Версия XF:
    1.1.2
    Никак не могу понять систему стилей форума.
    Устанавливаю кастомный стиль. Хочу сменить, например, цвет какого-нибудь элемента. Смотрю фаербагом его клас или id, в админке используя поиск по активному стилю нахожу нужные строи, правлю, вижу изменения. После таких манипуляций в шаблонах данного стиля появляются иконки восстановления до дефолтного состояния. Такая правка чревата чем-нибудь? Допустим, при маленьком апдейте, например, разработчик залатает дырку у меня слетят все правки?
    Почему во многих темах рекомендуют править extra.css? Он "неубиваемый"? У него приоритет выше остальных файлов стилей? Это ведь лишний код, зачем?
    Есть разница между правкой *.css и изменением настроек стиля?
     
  2. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    У стиля есть редактор, в котором бОльшая часть различных элементов настраивается без правки шаблонов. Если нужно часть настроек CSS жестко исправить, то лучше делать через EXTRA, так как этот файл действительно не привязан к конкретному стилю и как раз предназначен для различных манипуляций, чтобы при апгрейде не затирались изменения.
    Правка самих шаблонов не желательна, но иногда необходима. В этом случае при обновлении движка нужно будет смотреть изменения и вносить их вручную в обновленные шаблоны.
     
  3. Andyk

    Andyk Местный

    Регистрация:
    27.01.12
    Сообщения:
    64
    Симпатии:
    6
    Версия XF:
    1.1.2
    Так, а если стиль кастомный? Его же апдейт не затронет? В таком случае правки не затрутся?
    Понимаю, что стиль уже может просто косячить из-за несоответствия версий.
     
  4. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Стиль обычно ведь наследует дефолтный, кастомизируя лишь часть. Т.е. получается, что есть мастер-стиль, который как эталон. Есть пользовательские стили. В пользовательских стилях в случае изменения непосредственно шаблонов придется как раз при апгрейдах приводить в соответствие внесенные изменения. Апгрейд не затирает пользовательские стили, но меняет версии мастер-стиля, что в результате можно затем наблюдать в виде появления сообщения об устаревших шаблонах. Ну и тогда нужно просто скопировать куда-то свой вариант, затем "Вернуть" шаблон (фактически удаляется пользовательский шаблон, а дефолтный становится действующим), затем скопировать этот возвращенный шаблон. Ну и остается лишь сравнить версию "до" и версию "после". Необходимые изменения нужно будет внести в уже новый шаблон. Это если в двух словах.
     
  5. Andyk

    Andyk Местный

    Регистрация:
    27.01.12
    Сообщения:
    64
    Симпатии:
    6
    Версия XF:
    1.1.2
    Более менее понятно. Спасибо.
     
  6. Romchik®

    Romchik® The Power of Dreams Команда форума

    Регистрация:
    26.09.10
    Сообщения:
    5 746
    Симпатии:
    5 311
    Версия XF:
    1.5.18
    Шаблон EXTRA.css пустой, он никогда не изменятся, т.к. разработчики никогда не будут его править. Как следствие его можно менять не боясь. Да, может быть проблема двойного CSS, но это лучше, чем проблемы при обновлении. Поэтому, чем править *.css шаблоны, лучше перезаписать их значения в EXTRA.css. При этом иногда бывает нужно дописывать !important некоторым свойствам.
     
  7. Andyk

    Andyk Местный

    Регистрация:
    27.01.12
    Сообщения:
    64
    Симпатии:
    6
    Версия XF:
    1.1.2
    А как обстоит дело с шаблонами не *.css? Те что содержат html. При апдейте, будут изменения в таких шаблонах КАСТОМНОГО стиля?
     
  8. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Еще раз. При апдейте шаблоны не переписываются. Переписывается только мастер-шаблон, который в стиле с номером 0 и не редактируется. Когда вы меняете оригинальный шаблон в рамках своего собственного стиля, на самом деле ксен создает копию мастера, которую вы затем и редактируете. Таким образом, если Вы изменяли шаблоны в своем стиле (HTML, CSS или JS), то у них версия будет слегка отличаться в большую сторону от текущей версии мастера (версия - это номер). При апгрейде меняется версия мастер-шаблона таким образом, чтобы быть в любом случае с бОльшим номером, чем любые измененные шаблоны. Именно так ксен затем сверяет версии шаблонов и показывает "устаревшие". Когда вы нажимаете для устаревшего шаблона кнопку "Вернуть", то этот шаблон просто удаляется и мастер-шаблон остается единственным для Вашего стиля. Получается, для того, чтобы шаблон проапгрейдить под новую версию, Вам по факту нужно опять внести изменения в этот конкретный шаблон. Для этого Вы нажимаете "Редактировать", ксен копирует его, автоматически нумеруя версию (номер версии Вы не видите, это чисто внутренняя обработка ксена). Вы вносите туда необходимые изменения и, вуаля, шаблон уже с нужными изменениями, но при этом ксен считает, что шаблон не устаревший, так как номер версии этого шаблона является бОльшим по отношению к мастер-шаблону. При следующем апгрейде все повторяется.
    Теоретически, если шаблон на самом деле и не изменяется кардинально, то можно вообще залезть в базу, исправить там номер версии шаблона своего. А ксен перестанет на него ругаться, что тот старый :)

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

    В принципе, уже речь заходила и о создании аналога TMS (как в булке). Может быть и есть смысл объединить усилия и сделать полноценную систему управления шаблонами.

    Ну а общий принцип, как внутри хранятся шаблоны, а также, что происходит при апгрейде, я описАл выше. Надеюсь, что доступно и понятно :)
     
    sanmitsu, Romchik® и Andyk нравится это.
  9. Andyk

    Andyk Местный

    Регистрация:
    27.01.12
    Сообщения:
    64
    Симпатии:
    6
    Версия XF:
    1.1.2
    Да, вполне.
     
  10. Romchik®

    Romchik® The Power of Dreams Команда форума

    Регистрация:
    26.09.10
    Сообщения:
    5 746
    Симпатии:
    5 311
    Версия XF:
    1.5.18
    Конечно, в любом шаблоне разработчики могут внести изменения. И если в новой версии разработчики обновили шаблон, который вы изменили в своем стиле, то после обновления у вас будет (как минимум) один устаревший шаблон. Поэтому и советуют менять шаблоны только в крайней необходимости. И лично мне проще вспомнить свои изменения в обычных шаблонах (во время сравнения в Araxis Merge), а не в CSS, где свойства боле-менее похожи.
    Совсем без правок обойтись нельзя. Тот же шаблон footer изменен у 99% стилей. Просто не нужно вносить изменения без крайней необходимости. Это не касается тех форумов, которые не собираются обновляться или админы которых не боятся геморроя при обновлениях :)

    Еще можно создавать свои шаблоны для каждой правки, давать именам особый префикс и инклюдить их в нужном месте. Потом при сравнении того же футера у вас будет не куча кода счетчиков, а всего лишь одна строчка, типа такой:
    Код:
    <xen:include template="andyk_footer_counters" />
    Все куда проще и я уже писал об этом. Достаточно войти в такой шаблон и НИЧЕГО НЕ МЕНЯЯ, просто нажать Сохранить. Шаблон пропадет из устаревших, но на самом деле будет все еще таковым.
     
    sanmitsu и infis нравится это.
  11. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Точно. Ведь номер версии у него автоматом изменится на бОльший по сравнению с мастером.
     

Поделиться этой страницей