XF 2.2 Где прописываются функции в движке ?

Версия XenForo
2.2

AnteFil

Проверенные
Сообщения
31
Реакции
3
Баллы
8,105
Есть такая функция getLanguage
PHP:
public function getLanguage()
    {
        return $this->language;
    }
Я не могу найти где она прописана подскажите.
 
Лучший вариант
Я пытаюсь с движком разобраться как что устроено. например сейчас возникла необходимость с языком вот и ковыряю.
Есть такой файл \src\XF\Entity\Phrase.php
Есть там вот такая функция.
PHP:
public function getLanguage()
    {
        if ($this->language_id == 0)
        {
            return $this->getLanguageRepo()->getMasterLanguage();
        }
        else
        {
            return $this->getRelation('Language');
        }
    }
На сколько я успел разобраться с движком то language_id присваивается при установке языка. Следовательно если его не устанавливали то движёк его грузит по дефолту вот тут я придумал это.
PHP:
if ($this->language_id == 0)
        {
            $locale = locale_accept_from_http($_SERVER['HTTP_ACCEPT_LANGUAGE']);
            if(empty($locale)){
                $registr = mb_strtoupper($locale);
                $result = $locale.'-'.$registr;
                return $result;
            } else {
            return $this->getLanguageRepo()->getMasterLanguage();
            }
        }
логика такая если нет language_id получаем язык из браузера приводим к стандарту написания и отдаём. Если из браузера получить не удалось то отдаём по дефолту.
Проблема в том что эта функция ещё где то прописываеться если кто знает где подскажите !
 
Вот вам документация:

Хотите самостоятельно городить костыль без понимания как работает движок - флаг в руки, а документация сверху
 
AnteFil, где-то в движке есть функция аля setVisitorLanguage, тебе ее нужно расширить и написать там свою логику.
Этот метод вообще не надо трогать. А вот вызвать его в конце инициализации приложения уже имеет смысл
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу