在PHP Joomla中使用参数创建短代码

在PHP Joomla中使用参数创建短代码,php,joomla,shortcode,Php,Joomla,Shortcode,我在Joomla上创建了一个简单的短代码插件。 实际上,我正在尝试将Cleeng视频与Joomla集成。并将连接它的用户在未来(我希望)。 我在创建shortcode的参数方面做了很多工作。我不知道如何解析它的参数和值。 我的短代码在这里(没有参数) 我想设置高度,宽度和5r8r9ib6di这个代码至少从短码。 请任何人帮助我添加和解析它的参数要获取参数,只需使用以下代码: $params->get('param_name', 'default_value'); 例如,在XML文件中,如

我在Joomla上创建了一个简单的短代码插件。 实际上,我正在尝试将Cleeng视频与Joomla集成。并将连接它的用户在未来(我希望)。 我在创建shortcode的参数方面做了很多工作。我不知道如何解析它的参数和值。 我的短代码在这里(没有参数)

我想设置高度,宽度和5r8r9ib6di这个代码至少从短码。
请任何人帮助我添加和解析它的参数

要获取参数,只需使用以下代码:

$params->get('param_name', 'default_value');
例如,在XML文件中,如果有如下字段:

<field name="width" type="text" label="Width" default="60px" />
请注意,您不必将默认值添加为第二个字符串,但我始终认为这是一种很好的做法


希望这有帮助,我想我能找到解决办法。 在这儿 代码是

$expr='/\[cleeng\u content(.*?[^\\])\](.*?[^\\])\[\/cleeng\u content\]/is';
preg_match_all($expr,$post->post_content,$m);
foreach($m[0]作为$key=>$content){
$paramLine=$m[1][$key];

$expr='/(\w+)\s*=\s*(?:\“|”)(*?(希望这有助于搜索短代码参数,对于短代码中的参数,我们可以像这样使用preg\u match\u

preg_match_all('/{cleengvideo(.*?)}(.*?){\/cleengvideo}/is', $article->text, $matches);
这将给出一个包含3个数组元素的数组,第二个数组具有可以用代码填充的参数


希望这能有所帮助。

谢谢你的回复,但我需要使用参数制作我的短代码。例如,我当前的短代码是{cleengvideo}视频URL{/cleengvideo},我想这样制作{cleengvideo width=150}视频URL{/cleengvideo}对不起,我的描述不好,英语也不好。我明白你的意思。试试这个:
preg_match_all('/{cleengvideo width=“'.$params->get('width')。“}(.*?{\/cleengvideo}/is',$article->text,$matches)
然后调用
标记中的宽度参数再次感谢您,很抱歉让您误解了。我应该选择另一个示例。添加joomla插件的参数没有问题。我正在尝试解析短代码的参数。我的意思是从此代码中提取OfferID{cleengvideo OfferID=“R57565444\u MN”}.但当我谈到“preg_match_all”和foreach循环时,我迷路了。preg_match_all出现在我的第一篇文章中。谢谢:)
<field name="width" type="text" label="Width" default="60px" />
$params->get('width', '60px');
$expr = '/\[cleeng_content(.*?[^\\\])\](.*?[^\\\])\[\/cleeng_content\]/is';
        preg_match_all( $expr, $post->post_content, $m );
        foreach ( $m[0] as $key => $content ) {
            $paramLine = $m[1][$key];
            $expr = '/(\w+)\s*=\s*(?:\"|&quot;)(.*?)(?<!\\\)(?:\"|&quot;)/si';
            preg_match_all( $expr, $paramLine, $mm );

            if ( ! isset( $mm[0] ) || ! count( $mm[0] ) ) {
                continue;
            }

            $params = array( );
            foreach ( $mm[1] as $key => $paramName ) {
                $params[$paramName] = $mm[2][$key];
            }
            if ( ! isset( $params['id'] ) ) {
                continue;
            }

            $content = array(
                'contentId' => $params['id'],
                'shortDescription' => @$params['description'],
                'price' => @$params['price'],
                'itemType' => 'article',
                'purchased' => false,
                'shortUrl' => '',
                'referred' => false,
                'referralProgramEnabled' => false,
                'referralRate' => 0,
                'rated' => false,
                'publisherId' => '000000000',
                'publisherName' => '',
                'averageRating' => 4,
                'canVote' => false,
                'currencySymbol' => '',
                'sync' => false
            );

            if ( isset( $params['referral'] ) ) {
                $content['referralProgramEnabled'] = true;
                $content['referralRate'] = $params['referral'];
            }

            if ( isset( $params['ls'] ) && isset( $params['le'] ) ) {
                $content['hasLayerDates'] = true;
                $content['layerStartDate'] = $params['ls'];
                $content['layerEndDate'] = $params['le'];
            }

            $this->cleeng_content[$params['id']] = $content;
        }
preg_match_all('/{cleengvideo(.*?)}(.*?){\/cleengvideo}/is', $article->text, $matches);