本章中我们将讨论如何给模板增加参数,以便给用户更多的控制以适应更加复杂的环境。
了解参数的定义和参数的使用
通常为了方便,我们会在logo部分提供自定义,最简单的方法就是使用模板参数来做。在后台提供一个让用户上传图片的地方,然后在前台显示用户的图片。
2.1,什么是模板的参数?
在模板管理中,点击系统默认的protostar - default这种风格。进入到编辑页面,在这个页面就可以看到模板的参数了。如图:
2.2 如何定义模板参数?
Joomla模板参数都是在templateDetails.xml文件中定义的。定义的方式如下:
<?xml version="1.0" encoding="utf-8"?> <extension version="3.0" type="template" method="upgrade" client="site"> <name>planc</name> <version>0.0.16</version> <creationDate>2019-01-18</creationDate> <files> <filename>index.php</filename> <folder>css</folder> <folder>html</folder> <folder>js</folder> <folder>bootstrap-3.3.7-dist</folder> </files> <positions> <position>logo</position> <position>main_menu</position> <position>sub_menu</position> <position>sidebar</position> <position>footer1</position> <position>footer2</position> <position>footer3</position> <position>footer4</position> <position>copyright</position> </positions> <config> <fields name="params"> <fieldset name="advanced"> <field name="logo" type="media" label="网站LOGO" description="网站的LOGO ,大小建议100*80(px)" default="templates/planc/image/logo.png" /> </fieldset> </fields> </config> </extension>
重点关注后面的config结点。这个结点下新增了一个fields结点,并且这个结点的name属性值为params.然后在其下增加了一个fieldset结点,结点的name属性值为advanced.这是标准的参数定义,你只需要记住就行了。fieldset下面的field结点才是我们真正的参数。
Joomla中我们通常将field称为一个字段,一般情况下,一个字段就可以定义一个参数。在上面我们定义了一个字段,这个字段的名称为logo,类型为media,label属性就是参数的名称,description属性就是参数的说明。default为参数的默认值。
如果你需要多个参数,就直接添加多个字段即可。
关于Joomla的字段使用说明,请参考:XXXX TODO
2.3 参数的后台效果
再次打开我们的planc模板,可以看到出现了我们定义的参数,如图:
看到这个图,说明我们的参数定义是成功的。
在模板的index.php中使用参数的方法非常的简单
<?php $logo = $this->params->get("logo");?>
系统会自动将后台的参数设置到模板的params对象中,我们通过调用params对象的get方法来获得后台设置的参数的值。params的get方法可以接受两个参数,一个是需要获取的参数的名称,另外一个是这个参数的默认值
因此,自定义网站logo的代码如下:
<div class="logo"> <?php if($this->countModules("logo")):?> <jdoc:include type="modules" name="logo" style="html5" /> <?php else:?> <a href="/<?php echo JUri::root();?>"> <img src="/<?php echo $this->params->get("logo");?>" /> </a> <?php endif;?> </div>
上面的代码中首先判断logo位置是否发布了模块,如果发布了,就使用模块的内容作为logo部分的输出,否则就使用模板后台设置的图片作为输出。另外,通常情况下,点击logo我们应该让网用户跳转到首页。因此,我们给他增加了一个链接。JUri::root()就是获得网站首页的意思
4.1 代码
在本次版本中,我们给模板定义了参数。参数的定义是在templateDetails.xml这个文件中完成的。具体的定义:
<config> <fields name="params"> <fieldset name="advanced"> <field name="logo" type="media" label="网站LOGO" description="网站的LOGO ,大小建议100*80(px)" default="templates/planc/image/logo.png" /> </fieldset> </fields> </config>
为了在前台使用后台参数,我们修改了logo位置的定义,代码如下:
<div class="logo"> <?php if($this->countModules("logo")):?> <jdoc:include type="modules" name="logo" style="html5" /> <?php else:?> <a href="/<?php echo JUri::root();?>"> <img src="/<?php echo $this->params->get("logo");?>" /> </a> <?php endif;?> </div>
4.2 前台效果
4.3 v0.0.17版本
关于v0.0.17版本的代码,可以在此下载 tpl_plancv0.0.17_2019-01-19_for_j3x.zip
在本版本中我们增加了image文件夹,在打包安装包的时候不要忘记在templateDetail.xml文件中增加