Получить английское название страницы Joomla

Я работаю с пользовательским внутренним шаблоном в Joomla, и теперь я пришел к выводу, что мне нужно поддерживать несколько языков.

В начале разработки я не думал о нескольких языках, и это доставляет мне некоторые проблемы. Я знаю, что лучше всего переписать код и сделать его «умнее», но на данный момент времени на переписывание этого кода не так много.

В бэкэнде я работаю с иконками, которые основаны на заголовке страницы. Например, страница Article Manager просит иконку images/icon/article-manager.png, Итак, вы видите, что происходит, если заголовок страницы, например, немецкий и называется Inhalt,

На данный момент я использую этот код для генерации iconpath:

#Loading Joomla Document Module
$doc             = JFactory::getDocument();

#Get the page title
$title =  explode("-", $doc->title);
$title = trim(end($title));

#Generate icon path

$lastTitle = explode("-", $title);

if (strpos(end($lastTitle), ':')) {
$lastTitle = explode(":", end($lastTitle));
$lastTitle = $lastTitle[0];
$iconPath = trim($lastTitle);
$iconPath =  'templates/' . $this->template . '/images/icons/' . strtolower(str_replace(" ", "-", $iconPath)) . '.png';
} else {
$iconPath = trim(end($lastTitle));
$iconPath =  'templates/' . $this->template . '/images/icons/' . strtolower(str_replace(" ", "-", $iconPath)) . '.png';
}

Сейчас я думаю о поиске в базе данных по идентификатору страницы / componetent / modul / plugin, но есть ли более быстрый / простой способ отредактировать его?

Работа вокруг

Как уже говорилось ранее, значки, генерируемые заголовком страницы, действительно плохая идея. Но Lodder пришел с довольно хорошей и легкой работой вокруг. Поэтому я решил последовать его идее. Я добавил дополнительную переменную, которая проверяет, является ли она «подстраницей», если да, тогда она расширяет имя файла значков этой подстраницей.

#Loading Joomla Application Module
$app            = JFactory::getApplication();

#Genrate page icon
$comp = $app->input->get('option');
$view = $app->input->get('view');

if(!empty($view)) {
$iconFileName = $comp . '-' . $view;
} else {
$iconFileName = $comp;
}

$iconPath =  'templates/' . $this->template . '/images/icons/' . $iconFileName . '.png';

2

Решение

Использование значков на заголовке страницы — плохая идея. Чисто потому, что, как вы уже упоминали, ваш сайт многоязычен, поэтому разные языки приведут к разным результатам.

Я бы лично основывал иконки на названии компонента. Например:

$jinput = JFactory::getApplication()->input;
$view   = $jinput->get('option');

Приведенный выше код будет выводить com_content и всегда будет одинаковым для всех языков.

Затем вы можете просто назвать свою иконку com_content.png и назовите иконки так:

$iconPath =  'templates/' . $this->template . '/images/icons/' . $view . '.png';

Надеюсь это поможет

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]