我正在使用Sourcerer plugin在我的文章中使用PHP代码。我想在我的文章中使用Joomla API /框架来动态设置HTML元标记和其他内容。 I found setHeadData
方法应该允许我这样做,但我根本不知道如何调用它。
[问]有人可以给我一个例子,或者给我一个可以帮助我开始使用joomla API /框架的教程吗?
答案
基于所有指向同一方向的众多反馈,使用内容插件修改头部数据比通过文章这样做更好。如果像我一样你想在一篇文章中做到这一点我就是这样做的:
(1)我使用ezpresso提供的片段在我的文章中设置头部数据 (2)我修改了 libraries / joomla / document / html / renderer / head.php 文件来改变头数据的设置方式。
例如,您可以在步骤(1)设置标题元标记,然后在步骤(2)中替换以下行:
$strHtml .= $tab.'<title>'.htmlspecialchars($document->getTitle()).'</title>'.$lnEnd;
这一个:
$strHtml .= $tab.'<title>'.htmlspecialchars($document['metaTags']['standard']['title']).'</title>'.$lnEnd;
您可能还想查看 libraries / joomla / document / html / renderer / head.php 以在头脑中进行更多清理,例如摆脱generator
元Joomla插入的标签。
答案 0 :(得分:1)
以下是您所指的方法的源代码:
/**
* Set the html document head data
*
* @access public
* @param array $data The document head data in array form
*/
function setHeadData($data)
{
$this->title = (isset($data['title'])) ? $data['title'] : $this->title;
$this->description = (isset($data['description'])) ? $data['description'] : $this->description;
$this->link = (isset($data['link'])) ? $data['link'] : $this->link;
$this->_metaTags = (isset($data['metaTags'])) ? $data['metaTags'] : $this->_metaTags;
$this->_links = (isset($data['links'])) ? $data['links'] : $this->_links;
$this->_styleSheets = (isset($data['styleSheets'])) ? $data['styleSheets'] : $this->_styleSheets;
$this->_style = (isset($data['style'])) ? $data['style'] : $this->_style;
$this->_scripts = (isset($data['scripts'])) ? $data['scripts'] : $this->_scripts;
$this->_script = (isset($data['script'])) ? $data['script'] : $this->_script;
$this->_custom = (isset($data['custom'])) ? $data['custom'] : $this->_custom;
}
它在JDocumentHtml类中实现,该类位于libraries/joomla/document/html/html.php
目录中。
以下是一些如何使用它的示例的链接:
我猜您可以像这样调用setHeadData
方法:
$doc =& JFactory::getDocument();
$options = $doc->getHeadData();
$options['metaTags'] = array("tag1", "tag2", "tag3"); // you may change the meta tags here
$doc->setHeadData($options);
答案 1 :(得分:1)
将PHP放在文章中并不是一个很好的方法来完成你想要做的事情。 Joomla框架具有一个操作顺序,用于确定何时运行各种功能和插件。由于操作的顺序,在呈现文章后会发生许多功能,可能会否定您在文章中所做的任何更改。你最好使用扩展来处理标题和元标记,而不是试图在文章中做到这一点。