使用 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_PERU
或 TITLENICK_PERU
。
然后,最简单的部分,确认如果你写: JString::str_ireplace("{%placeholder_country%}", $placeholder_country, $article->text);
当标签被正确生成时;它会按照您在“语言覆盖”部分中的定义进行替换。
如有疑问,Joomla 函数 JString::str_ireplace
只是 PHP 函数的包装,因此您可以在此处查看原始文档:https://www.php.net/str_ireplace
综上所述,问题似乎是由两部分增加的复杂性引起的。分开的话,就可以分别解决每一部分。
我有这段代码已经在我需要完成的页面上运行。 (整个 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_PERU
或 TITLENICK_PERU
。
然后,最简单的部分,确认如果你写: JString::str_ireplace("{%placeholder_country%}", $placeholder_country, $article->text);
当标签被正确生成时;它会按照您在“语言覆盖”部分中的定义进行替换。
如有疑问,Joomla 函数 JString::str_ireplace
只是 PHP 函数的包装,因此您可以在此处查看原始文档:https://www.php.net/str_ireplace
综上所述,问题似乎是由两部分增加的复杂性引起的。分开的话,就可以分别解决每一部分。