XOOPS

短代码即将登陆XOOPS 2.6.0 :D

Mamba  01-Nov-2015 11:19 2932 阅读 6 评论(s)
但在我们深入之前,先简要介绍一下 短代码。 短代码和宏或脚本没有什么不同,它们是为了重复执行某些活动而创建的。它们可以非常简单,也可以非常复杂。一些是真正的代码片段,没有直接交互,而一些则相当复杂,具有帮助你选择选项的图形GUI。与短代码交互的方式也有很多:a) 没有任何属性的简单短代码,基本使用单个命令,例如,我们的BBcodes是我们通过放置 [b][/b] 在文本周围来使其加粗的简单短代码 b) 更复杂的带有属性的短代码,如上文Richard展示的YouTube示例
[youtube url="JxS5E-kZc2s" width="640" height="385" /]
创建Google地图的短代码 针对 yesterday Richard 关于XOOPS中短代码的公告,我非常兴奋,并决定探究它们。为了创建短代码,我们将使用 ExtensionAbstract 类。我们会在/Extensions文件夹中创建一个名为"Googlemap.php"的新文件。我们将从这里开始
class Googlemap extends ExtensionAbstract
{
}
Google地图仅仅只有一些非常基本的功能,比如宽度、高度等等。所以首先,我们可以为它创建一个默认配置。这也会让我们更容易,因为我们不用每次使用它时都要填写所有选项。
受保护的静态变量$defaultConfiguration= [
'enabled'    => true,
'template'   => '',
'clickable'  => true,  // 点击以在新窗口中全尺寸打开地图
'resize'     => true,     // 将地图调整大小到下面的max_width
'max_width'  => 640,   // 在页面上显示地图的最大宽度
'max_height' => 480,   // 在页面上显示地图的最大高度
'allowmap'   => true// 允许显示地图,false则强制仅显示链接
];
当然,您可以自己决定包含哪些选项,不包含哪些选项。下一步,我们需要使用Sanitizer注册我们的扩展。这是通过覆盖ExtensionAbstract中的抽象方法registerExtensionProcessing来实现的。
public function registerExtensionProcessing()
{
}
现在我们需要使用ShortCodes类的"addShortcode()"方法注册我们的简码。 缩略图
此方法需要两个参数:a)简码的名称 b)每当简码被使用时将被调用的回调函数。在我们的案例中,我们将它命名为"Googlemap"简码,并将具有以下签名的方法
$this->shortcodes->addShortcode'googlemap', function ($attributes$content$tagName) use ($config) {
如前所述,因为我们使用了一个"回调"函数,我们可以使简码非常复杂和精巧。但这可能需要下次再说 我们的"addShortcode"方法将如下所示
public function registerExtensionProcessing()
{
$config $this->ts->getConfig('googlemap'); // direct load to allow Sanitizer to change 'allowchart'

$this->shortcodes->addShortcode('googlemap', function ($attributes$content$tagName) use ($config) {
 
$xoops   Xoops::getInstance();
$defaults = ['width'  => 640,
                
'height' => 480,
                
'src'    => '',];
$cleanAttributes $this->shortcodes->shortcodeAttributes$defaults$attributes);
$width  $cleanAttributes['width'];
 if (
preg_match('/[0-9]{1}$/'$width)) {$width .= 'px';}
    
$height $cleanAttributes['height'];
    if (
preg_match('/[0-9]{1}$/'$height)) {
       
$height .= 'px';
     }
$src $cleanAttributes['src'];
$newContent '$width '" height="' $height '" src="' $src '&output=embed" >';

return 
$newContent;
});
}
}
一旦测试确认其功能正常,我们就可以通过使用简码"[googlemap]"直接在任何新闻或发布者模块的文章中,或任何其他XOOPS模块中插入谷歌地图。当然,我们需要向其提供更多信息,因此最终可能看起来是这样的
[googlemap width="600" height="300" src="http://maps.google.com/maps?q=Heraklion,+Greece&hl=en&ll=35.327451,25.140495&spn=0.233326,0.445976& sll=37.0625,-95.677068&sspn=57.161276,114.169922& oq=Heraklion&hnear=Heraklion,+Greece&t=h&z=12"]
这就是XOOPS 2.6.0中发布器模块中这个短代码的结果:调整大小后的图像
下一步是什么?我对XOOPS中的短代码非常兴奋,以至于昨天测试了几种其他的短代码:Google图表 - 国旗 - 二维码 - 日期时间小部件例如,要在任何内容中添加一个国旗,我们现在可以只放置这些短代码
[countryflag]
这将显示一个具有默认大小(我设置为美国和64px)的默认国旗,但你可以选择自己喜欢的。标准国旗尺寸为:16、32、64。或者你可以手动指定所需的国旗和尺寸
[qrcode] [countryflag size=64 country="CA"]
这将创建一个64px长的加拿大国旗。国家代码是使用标准两位字母的国家代码来选择的,例如,US代表USA,FR代表法国,DE代表德国等。请注意,您也可以以编程方式执行此操作,最好的方法是安装XOOPS 2.6.0中的“Codex”模块,查看XOOPS 2.6.0的新增功能。通过使用此Google图表短代码
[chart charttype="pie" title="示例饼图" data="41.12,32.35,21.52,5.01" labels="第一个标签|第二个标签|第三个标签|第四个标签" background_color="FFFFFF" colors="D73030,329E4A,415FB4,DFD32F" size="450x180"]
我们可以得到这个图表:调整大小后的图像
我们还可以创建XOOPS内部功能的短代码,例如当前页面的二维码
[qrcode]
,还有前面提到的国旗:调整大小后的图像
感谢Richard,XOOPS的快捷代码正开辟着许多非常酷的机会。WordPress上有很多快捷代码,其中一些非常酷,所以请随时将它们转换为XOOPS并与我们分享。要了解更多如何创建快捷代码,您可以这样做:a) 研究Richard重构的TextSanitizer类,这些类基本上就是快捷代码自身;b) 研究其他CMS(如WordPress)中的某些快捷代码,并尝试将它们转换为XOOPS。如果您感兴趣,我昨天正在试验的五个快捷代码已放在我的GitHub仓库中。请随意fork它们并回贡献显然,Richard在核心上的所有激动人心的工作,以及Eduardo将RM Common Utilities合并到核心中,XOOPS的下一个版本将非常酷! 加油,XOOPS!
评分 0/5
评分: 0/5(0票)
投票已禁用!


Login

Who's Online

278 user(s) are online (8 user(s) are browsing Publisher)


Members: 0


Guests: 278


more...

Donat-O-Meter

Stats
Goal: $100.00
Due Date: Aug 31
Gross Amount: $0.00
Net Balance: $0.00
Left to go: $100.00
Make donations with PayPal!

Latest GitHub Commits

Categories