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

1.3.x Template Modification System

Тема в разделе "Made in XF-Russia.ru", создана пользователем guiltar, 20.02.2012.

Загрузка
  1. guiltar

    guiltar Местный

    Регистрация:
    15.04.11
    Сообщения:
    137
    Симпатии:
    231
    Template Modification System

    Тема на оф. сайте:
    HTML:
    http://xenforo.com/community/resources/template-modification-system-tms.293/
    Плагин позволяет изменять шаблоны на этапе компиляции с помощью поиска/замены.
    Предлагаю протестировать эту версию и высказывать предложения и пожелания.
    На очереди
    1) добавить регулярки и колбэки
    2) импорт/экспорт модификаций вместе с шаблонами и стилями
    3) лог компиляции


    Screenshot_1.png Screenshot_2.png Screenshot_3.png Screenshot_4.png Screenshot_17.png Screenshot_18.png
     

    Вложения:

    xorex, Diablolend, MAXIK1324 и 23 другим нравится это.
  2. CyberAP

    CyberAP Местный

    Регистрация:
    05.10.10
    Сообщения:
    2 604
    Симпатии:
    1 660
    Версия XF:
    1.5.10
    Fuck yeah! Дождались :)
    В будущем планируется поддержка хуков? (замена их содержимого или добавление)
     
  3. guiltar

    guiltar Местный

    Регистрация:
    15.04.11
    Сообщения:
    137
    Симпатии:
    231
    В каком смысле поддержка хуков?
    Там ведь любое место можно подменить, будь то внутри хука или вне.
    Можно конечно отключить хуки, но тогда почти все плагины перестанут работать.
    А заменять и напонять хуки перед компиляцией невозможно, потому что они обрабатываются только на лету и на момент компиляции неизвестно что там в них добавится.
     
    CyberAP нравится это.
  4. CyberAP

    CyberAP Местный

    Регистрация:
    05.10.10
    Сообщения:
    2 604
    Симпатии:
    1 660
    Версия XF:
    1.5.10
    Понял, ну тогда стандартным способом можно.
     
  5. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    Добавлю от себя - главный плюс - это при разработке хака - не надо думать что какой-то шаблон надо добавить в прелоад.
    И с точки зрения производительности вся страница рендерится за 1 проход, а не как с текущими хуками - страница отдельно, хуки отдельно.

    Да и стиль свой можно на тмс сделать и не практически не париться насчет его обновления между версиями (с очень большой вероятностью стиль будет полностью рабочий и после обновления форума).
     
  6. guiltar

    guiltar Местный

    Регистрация:
    15.04.11
    Сообщения:
    137
    Симпатии:
    231
    Вообще хорошо бы, чтобы разработчики размечали шаблоны комментами типа.
    <!-- h1 title, description -->
    Такие разметки в отличие от хуков не замедляют рендеринг.
    И вероятность конфликтов уменьшится в разы, если вставлять только до и после таких меток.
     
  7. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    таких пометок и так достаточно :)
     
  8. CyberAP

    CyberAP Местный

    Регистрация:
    05.10.10
    Сообщения:
    2 604
    Симпатии:
    1 660
    Версия XF:
    1.5.10
    Ну если стиль на ТМС сделать то им невозможно будет пользоваться другим пользователям, так как обязательно наличие аддона.
     
  9. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    А не проще ли при сохранении шаблонов автоматически сохранять копию в другую таблицу (история шаблонов)? Я лично так планировал делать. Тогда все будет работать прозрачно, включая установку шаблонов из плагинов. А просмотр и откат изменений можно было бы сделать отдельным меню.
     
  10. guiltar

    guiltar Местный

    Регистрация:
    15.04.11
    Сообщения:
    137
    Симпатии:
    231
    Тогда и любым другим аддоном невозможно пользоваться, т.к. любой аддон требует установки :)

    Копия итак сохраняется рядом с текущим шаблоном в той же таблице.
    Шаблон перехватывается в момент компиляции, применяются модификации. Дальше идет попытка парсинга. Если она успешна, то подменяется template_parsed, а модифицированный шаблон сохраняется рядом (иначе обнуляется). Также сохраняется инфа о модификациях в сериализованном виде.
     
  11. infis

    infis Местный

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

    Можно попробовать сделать немного другой вариант. Добавить предпросмотр полученного результата с указанием того, как все модификации влияют на шаблон. Тогда будет значительно проще выяснить, что и как вносит изменения.
     
  12. guiltar

    guiltar Местный

    Регистрация:
    15.04.11
    Сообщения:
    137
    Симпатии:
    231
    Так почему же не наглядно? Рядом с каждой модификацией есть кнопка diff она сравнивает итоговый и начальный шаблоны. Тестовая компиляция будет позже.

    Насчет лишней зависимости согласен, лучше если бы это было в ядре. Но если гора не идет к Магомеду... Я там поэтому и написал чтобы не боялись править модифицировать и т.д., чтобы не было страха потерять все модификации.
     
  13. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    Именно это и выводит diff, изменения внесенные всеми модификациями, а не одной конкретной (хотя могу и ошибаться ибо так было в ранних альфах).
    Ну тут все от разработчика зависит. Например для той же булки, многие разработчики использовали TMS в своих продуктах. В стилях очень редко, ибо учитывая верстку булки - не известно что легче было - написать с нуля или через TMS. Я например на булке стиль перенес полностью на TMS и к примеру обновление с 3.6.1 до 3.8.4 у меня прошло довольно безпроблемно (на небольшие правки стиля у меня ушло меньше 15 минут, учитывая что сильно измененных шаблонов между 3.6 и 3.8 линейками - уйма)

    Также добавлю что все равно будут разработчики которые принципиально не будут пользоваться хаком, даже если из-за этого в реалтайме придется постоянно делать поиск замену по готовому html-коду (что конечно же может не работать на нестандартных шаблонах). Вот почему хотелось бы что бы что-то подобное было в ядре. Но т.к. до следующего мажорного релиза ждать еще долго, то лучше уж хаком пользоваться, чем темплейт хуками.
     
  14. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Хм... Установил. Начинаю тестировать. Дальше со скриншотов должно быть понятно.

    screen1.jpg

    Сохраняется. Кстати, а почему в названии Modification нельзя русские символы. С чем связано?
    После сохранения модификация не отображается...

    screen2.jpg

    Ок. Пробуем снова создать модификацию. Точно такую же. Но тут уже появляется ошибка, что такая модификация существует.

    screen3.jpg

    Как я понимаю, где-то оно хранится, но в списке не отображается.

    А теперь сразу вопросы:
    1) почему недопустимы русские символы в названии модификации?
    2) почему нет выбора из списка шаблонов или автодополнения названия, что было бы логичным?
    3) почему нельзя пустую строку в замену поставить?
    4) как используется поле "Дополнение"?
     
  15. guiltar

    guiltar Местный

    Регистрация:
    15.04.11
    Сообщения:
    137
    Симпатии:
    231
    Спасибо!!
    Оно не выводится как раз потому что дополнение не указано дополнение. Скоро пофиксю.

    1) Русские буквы недоступты по той же причине что и для обычных шаблонов. Бывает поиск по title
    2) Сначала нужно переключить шаблон вверху в списке. Потом создать новую модификацию
    3) Пустая строка. Пофиксил. Будет в новой версии.
    4) Дополнение - так же как для обработчиков событий и обычных шаблонов. Сейчас этспорт настраиваю. И все модификации будут в XML плагинов и стилей также как обычные шаблоны.
     
    TAIFUN нравится это.
  16. CyberAP

    CyberAP Местный

    Регистрация:
    05.10.10
    Сообщения:
    2 604
    Симпатии:
    1 660
    Версия XF:
    1.5.10
    Я имел ввиду что на TMS стили сделать нельзя, они предназначены будут только для внутреннего использования на одном форуме.
     
  17. guiltar

    guiltar Местный

    Регистрация:
    15.04.11
    Сообщения:
    137
    Симпатии:
    231
    Почему? Просто стиль будет состоять из набора модификаций, свойств и дополнительных шаблонов.
     
  18. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Остался 2-й вопрос. Я про поле "Шаблон". Там нужно вручную вписывать имя шаблона, для которого создается модификация. Логичнее, наверное, выбирать из списка, либо использовать автодополнение. Не?
     
  19. guiltar

    guiltar Местный

    Регистрация:
    15.04.11
    Сообщения:
    137
    Симпатии:
    231
    точно надо автодополнение чтоли сделать. но пока не стал заморачиваться. а список слишком большой
     
  20. TAIFUN

    TAIFUN Человек

    Регистрация:
    27.09.10
    Сообщения:
    2 258
    Симпатии:
    1 613
    Версия XF:
    1.5.23
    Супер! :thumbsup:


    P.S. infis, quiltar.. респект вам за то, что привносите новое! :)
     

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