Реализация скобок в Joomla {} - PullRequest
1 голос
/ 19 января 2012

Я очень новичок в Joomla, и несколько плагинов в Joomla используют переменные, например, с {} скобками.Например, «{mosmap}» отображает карты Google в Joomla.Я хочу знать, как это работает, чтобы я мог настроить плагин под свои требования.

Ответы [ 2 ]

3 голосов
/ 19 января 2012

{} теги используются в плагинах 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 голос
/ 19 января 2012

{} в 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 для получения дополнительной информации об этом ...

...