我正在使用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';
}
现在我正在考虑在数据库中搜索页面/组件/模块/插件ID,但是有更快/更简单的方法来编辑它吗?
解决方法
如前所述,页面标题生成的图标确实是一个坏主意。但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';
答案 0 :(得分:1)
基于页面标题上的图标是一个坏主意。纯粹因为您已经提到过,您的网站是多语言的,因此不同的语言会产生不同的结果。
我个人会将这些图标基于组件名称。例如:
$jinput = JFactory::getApplication()->input;
$view = $jinput->get('option');
以上代码将输出com_content
,并且对于所有语言将始终相同。
然后,您只需将图标命名为 com_content.png ,然后按以下方式调用图标:
$iconPath = 'templates/' . $this->template . '/images/icons/' . $view . '.png';
希望这有帮助