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

Расширение класса XenForo_Template_Helper_Core

Тема в разделе "Вопросы и ответы по XenForo Framework", создана пользователем infis, 13 янв 2012.

Загрузка
  1. infis

    infis Местный Команда форума

    Регистрация:
    27.06.11
    Сообщения:
    5.525
    Симпатии:
    3.321
    Версия XF:
    1.5.9
    Нужно расширить этот класс, переписав один метод, который является защищенным.
    Это вообще реально? Если нет, то как вообще можно подменить защищенный метод, чтобы не переписывать пол ядра?
     
  2. Yoskaldyr

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

    Регистрация:
    27.09.10
    Сообщения:
    1.921
    Симпатии:
    1.160
    Версия XF:
    1.0.4
    Какой именно если не секрет? потому что все методы в хелпере статические, а защищенные вызываются не больше пары раз и то только из одного-двух публичных методов.
    Самый простой вариант написать свой класс хелпер, в котором будут описан публичный метод и соответствующий ему защищенный метод (как именно можно глянуть как в хаке хайда что присылал на почту)

    Еще добавлю. Расширять просто так смысла нет, т.к. все равно все хелперы - это статик методы и вызываются по полному имени, но вот имена их есть в кеше ксена и их можно переопределить.
    Например для темплейт хелпера 'avatar' - метод helperAvatarUrl и т.д.
    Т.е. изначально надо переопределить основной колбек для темплейт хелпера, а там уже все в руках программиста какие методы вызывать свои или встроенные.
     
  3. infis

    infis Местный Команда форума

    Регистрация:
    27.06.11
    Сообщения:
    5.525
    Симпатии:
    3.321
    Версия XF:
    1.5.9
    Да. Я уже вдоль и поперек полазил по этому классу, а также со всем, что связано с аватарами. Такой "жопы" по хотя бы минимальному изменению я уже давно не видел... Короче, не получится что-то переопределять, не переписав значительную часть всего, что работает с аватарами. Там либо что-то жестко прописано, либо защищено статиком. Понятно, что исходники ксена поправить можно быстро, и оно будет работать, только идеология не позволяет так издеваться :)

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

    Эм... Тему можно закрывать.
     
  4. Yoskaldyr

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

    Регистрация:
    27.09.10
    Сообщения:
    1.921
    Симпатии:
    1.160
    Версия XF:
    1.0.4
    Почему же?
    Зачем все переписывать - всего лишь 1 статик метод в собственном отдельном классе, которой будет дочерним от оригинального класса хелперов и все. Этот собственный паблик статик метод будет вызывать как свои паблик статик методы, так и методы родительского класса, как протектед так и паблик (и тоже статик).
    Ведь это protected а не private
    P.S. Именно так и сделал в хаке хайда и все норм работает. Главное правильно потом подмену колбека для массива шаблонных хелперов делать.
     

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