使用 Joomla 语言覆盖创建自定义<title>标签



我有一段代码已经在需要完成的页面上运行。(整个Joomla 3.9网站是一个自定义代码、组件等的弗兰肯斯坦(

$placeholder_country = JText::_('COM_ACME_PLACEHOLDER_COUNTRY_'.strtoupper(str_replace('-','_',$var['country'])));
if($placeholder_country === 'COM_ACME_PLACEHOLDER_COUNTRY_'.strtoupper(str_replace('-','_',$var['country'])) || !$placeholder_country) $placeholder_country = '';
$article->text = JString::str_ireplace("{%placeholder_country%}", $placeholder_country, $article->text);

我试着添加以下内容,看看我是否可以用同样的方式设置标题。

$placeholder_country = JText::_('titlenick_'.strtoupper(str_replace('-','_',$var['country'])));
if($placeholder_country === 'titlenick_'.strtoupper(str_replace('-','_',$var['country'])) || !$placeholder_country) $placeholder_country = '';
$document->setTitle = JString::str_ireplace("{%placeholder_country%}", $placeholder_country, $article->text);

意思是,我进入Joomla语言覆盖部分,添加语言常量,例如,";TITLENICK_ PERU";

在";文本";我输入我想要的页面标题"廉价的秘鲁度假"例如

编辑:

试图使用Anibal的以下答案解决问题:

在给出上述见解之后,取得了进展。

我已经确认这个工作

$placeholder_nicktitle = JText::_('titlenick_'.strtoupper(str_replace('-','_',$var['country'])));
if($placeholder_nicktitle === 'titlenick_'.strtoupper(str_replace('-','_',$var['country'])) || !$placeholder_nicktitle) $placeholder_nicktitle = '';
$article->text = JString::str_ireplace("{%placeholder_nicktitle%}", $placeholder_nicktitle, $article->text);

在Joomla文章中放置{%placeholder_nicktitle%}会触发覆盖,并显示我在覆盖中键入的文本。

现在的问题是,我如何让它发挥作用,以便无论我在覆盖中键入什么文本;文本";字段最终将成为页面标题?

我想这需要改变

$article->text = JString::str_ireplace("{%placeholder_nicktitle%}", $placeholder_nicktitle, $article->text);

这是一个很长的机会,但我试着用这个替换上面的行(它抛出了500个错误(

$document =& JFactory::getDocument();
$document->setTitle("JString::str_ireplace(". 
{%placeholder_nicktitle%}", $placeholder_nicktitle, $article- 
>text);");

旁注:现在页面的标题来自Joomla文章标题本身"{%country_name%}廉价度假"就是我们在那里所拥有的。我相信是自定义编码的。我尝试在Joomla文章标题中添加{%placeholder_nicktitle%},但由于某种原因不起作用

在您的代码中有几点需要注意。所以,这更多的是一个代码审查,而不是一个问题的答案。

代码的第一部分生成LABEL,然后第二部分使用Joomla语言系统生成翻译文本。

首先,我要确认PHP代码是否生成了预期的标签:COM_ACME_PLACEHOLDER_COUNTRY_PERUTITLENICK_PERU

然后,简单的部分,确认如果您写:JString::str_ireplace("{%placeholder_country%}", $placeholder_country, $article->text);时标签正确生成;当您在"语言覆盖"部分中定义时,它会被替换。

如果有疑问,Joomla函数JString::str_ireplace只是PHP函数的包装器,因此您可以在此处查看原始文档:https://www.php.net/str_ireplace

总之,问题似乎是由这两个部分的复杂性增加引起的。如果你把它们分开,你可以分别求解每个部分。

最新更新