Joomla {}括号实现

时间:2012-01-18 20:25:22

标签: php joomla joomla1.7

我是Joomla的新手,Joomla中的插件很少使用{}括号等变量。例如,“{mosmap}”在Joomla中显示Google地图。我想知道它是如何工作的,这样我就可以根据我的要求自定义插件。

2 个答案:

答案 0 :(得分:3)

{}标记在Joomla插件中用作替换标记。它使用正则表达式匹配和替换。 作为示例,我们可以看到使用{loadposition}作为替换标记的加载模块插件的代码(您可以在文件中找到完整代码<Joomla_installation_folder>/plugins/content/loadmodule.php

它的工作方式如下 -

// expression to search for
$regex = '/{loadposition\s*.*?}/i';
$pluginParams = new JParameter( $plugin->params );

// check whether plugin has been unpublished
if ( !$pluginParams->get( 'enabled', 1 ) ) {
    $row->text = preg_replace( $regex, '', $row->text );
return true;
}

// find all instances of plugin and put in $matches
preg_match_all( $regex, $row->text, $matches );

以上代码适用于Joomla 1.5。 Joomla 1.7使用相同的方法但存在一些差异,但您可以在<Joomla_installation_folder>plugins/content/loadmodule/loadmodule.php函数中的onContentPrepare()找到确切的代码。

答案 1 :(得分:1)

在joomla中的

{},在wordpress中的[],它们被称为替换标签。我从未做过Joomla插件,虽然我做了一些模块和组件,但我在Wordpress中做了短标签,我猜他们的工作方式完全相同。

引擎,Joomla或Wordpress,检测{}或[]并将内容解析为可以转移到您的插件的内容,然后您的插件可以对其进行操作。

例如,在Wordpress中:

[mytag id="6" image="blabla.jpg"]

在我的函数中继续使用我的wordpress插件作为数组:

function mytag_plugin($data){
    var_dump($data);
}

array(2){
    [id] => (int)6,
    [image] => (string)"blabla.jpg",
}

我建议您阅读http://docs.joomla.org/Plugin了解更多信息......