12.1 为模板增加参数 - v0.0.17版本

本章中我们将讨论如何给模板增加参数,以便给用户更多的控制以适应更加复杂的环境。

1,本节目标


了解参数的定义和参数的使用

2,让网站的logo支持自定义


通常为了方便,我们会在logo部分提供自定义,最简单的方法就是使用模板参数来做。在后台提供一个让用户上传图片的地方,然后在前台显示用户的图片。

2.1,什么是模板的参数?

在模板管理中,点击系统默认的protostar - default这种风格。进入到编辑页面,在这个页面就可以看到模板的参数了。如图:

joomla模板参数

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模板,可以看到出现了我们定义的参数,如图:

joomla模板参数定义后台效果

看到这个图,说明我们的参数定义是成功的。

3,使用参数


在模板的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,v0.0.17版本


 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 前台效果

joomla_logo效果

4.3 v0.0.17版本

关于v0.0.17版本的代码,可以在此下载 tpl_plancv0.0.17_2019-01-19_for_j3x.zip

5,说明


在本版本中我们增加了image文件夹,在打包安装包的时候不要忘记在templateDetail.xml文件中增加 

 



作者:张敏
原文:http://www.joomlachina.cn/articles/1821-jiaocheng/joomla-plan-c/1563-first-template-35?tmpl=component&zhuanti=1

Joomla模板开发教程

获取最新资讯

© 广州市番禺区新造草云信息技术咨询服务部版权所有。
粤ICP备13002429号.

Joomla系列教程

站内链接