获得英文页面标题Joomla

时间:2014-10-13 15:25:20

标签: php joomla multilingual

我正在使用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';

1 个答案:

答案 0 :(得分:1)

基于页面标题上的图标是一个坏主意。纯粹因为您已经提到过,您的网站是多语言的,因此不同的语言会产生不同的结果。

我个人会将这些图标基于组件名称。例如:

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

以上代码将输出com_content,并且对于所有语言将始终相同。

然后,您只需将图标命名为 com_content.png ,然后按以下方式调用图标:

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

希望这有帮助