Я занимаюсь разработкой локализованного расширения Typo3 и создаю репозиторий и модели, в настоящее время я могу просматривать каждую языковую версию контента на своей странице идентификатора языка на внешнем интерфейсе.
Однако мне нужно отобразить некоторые переведенные свойства (поля содержимого) на одной веб-странице, но я не знаю и не могу найти в других источниках, как обрабатывать весь переведенный контент в представлении моих шаблонов или как назначать переменные ,
Пример:
В моем контроллере есть:
$test = $this->testRepository->findAll();
$this->view->assign('test', $test);
Для которого я отображаю содержимое в моем шаблоне как:
{test.title}
Теперь Typo3 выполняет свою работу, и для EN он отображает английскую версию title, для DE — немецкую версию и так далее, но все это на отдельных страницах.
Как я могу взять все языковые версии test.title и отобразить их на одной странице?
Спасибо
Просто идея, я еще не проверял.
В вашем репозитории вставьте эту функцию:
public function initializeObject() {
$querySettings = $this->createQuery()->getQuerySettings();
$querySettings->setRespectSysLanguage(false);
$querySettings->setLanguageMode('ignore');
$this->setDefaultQuerySettings($querySettings);
}
Если вы не хотите игнорировать языковую фильтрацию во всем вашем расширении, просто измените параметры запроса только для одного запроса.
Теперь вы должны получить все переводы сразу по вашему запросу. Сделайте свою собственную фильтрацию языков с
$query->matching($query->equals('sysLanguageUid', 1));
Не забудьте определить sysLanguageUid
с функциями получения и установки в вашей модели.
Я занимаюсь разработкой локализованного расширения Typo3 и создаю репозиторий и модели, в настоящее время я могу просматривать каждую языковую версию контента на своей странице идентификатора языка на внешнем интерфейсе.
Однако мне нужно отобразить некоторые переведенные свойства (поля содержимого) на одной веб-странице, но я не знаю и не могу найти в других источниках, как обрабатывать весь переведенный контент в представлении моих шаблонов или как назначать переменные ,
Пример:
В моем контроллере есть:
$test = $this->testRepository->findAll();
$this->view->assign('test', $test);
Для которого я отображаю содержимое в моем шаблоне как:
{test.title}
Теперь Typo3 выполняет свою работу, и для EN он отображает английскую версию title, для DE — немецкую версию и так далее, но все это на отдельных страницах.
Как я могу взять все языковые версии test.title и отобразить их на одной странице?
Спасибо
Просто идея, я еще не проверял.
В вашем репозитории вставьте эту функцию:
public function initializeObject() {
$querySettings = $this->createQuery()->getQuerySettings();
$querySettings->setRespectSysLanguage(false);
$querySettings->setLanguageMode('ignore');
$this->setDefaultQuerySettings($querySettings);
}
Если вы не хотите игнорировать языковую фильтрацию во всем вашем расширении, просто измените параметры запроса только для одного запроса.
Теперь вы должны получить все переводы сразу по вашему запросу. Сделайте свою собственную фильтрацию языков с
$query->matching($query->equals('sysLanguageUid', 1));
Не забудьте определить sysLanguageUid
с функциями получения и установки в вашей модели.