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

Use the Joomla Language override to create custom <title> tags

我有这段代码已经在我需要完成的页面上运行。 (整个 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”

在“文本”Id中输入我想要的页面标题。例如“便宜的秘鲁假期”。

编辑:

正在尝试使用 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

综上所述,问题似乎是由两部分增加的复杂性引起的。分开的话,就可以分别解决每一部分。