joomla:在文章中使用API

时间:2011-04-24 08:34:46

标签: api frameworks joomla joomla1.5

我正在使用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插入的标签。

2 个答案:

答案 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框架具有一个操作顺序,用于确定何时运行各种功能和插件。由于操作的顺序,在呈现文章后会发生许多功能,可能会否定您在文章中所做的任何更改。你最好使用扩展来处理标题和元标记,而不是试图在文章中做到这一点。