Joomla!模板基础知识

Joomla!模板基础知识

如何获取Joomla!模板文件的参数

为取得Joomla!模板文件的参数,应该用以下的代码,最主要的是函数get

<?php
$myParam = $this->params->get( ‘parameterName’ );
?>

以 下是两个或者templateDetails.xml中参数的例子,例子一获取templateColor,并且根据templateColor的值,设置模板的CSS文件。例子二是取得authorCopyright参数,根据authorCopyright决定是否在模板文件中显示版本信息。

例子一:
<?php
$tplColor = $this->params->get( ‘templateColor’ );
$this->addStyleSheet( $this->baseurl  .’/templates/’.$this->template .’/css/’. $tplColor .’.css’ );
?>

例子二:

<?php if ($this->params->get( ‘authorCopyright’ )) :?>
<div class=”copyright”>
Your code…
</div>
<?php endif; ?>

 

模板的配置文件概述,如何定义模块的位置

下面是我的Ja_purity的 templateDetails.xml文件。

<?xml version=”1.0″encoding=”utf-8″?>
<install version=”1.5″ type=”template”>
<name>JA_Purity</name>
<version>1.1.3</version>
<creationDate>12/26/07</creationDate>
<author>JoomlArt.com</author>
<authorEmail> webmaster@joomlart.com</authorEmail>
<authorUrl>http://www.joomlart.com</authorUrl>
<copyright></copyright>
<license>GNU/GPL version 2</license>
<description>JA PURITY DESCRIPTION</description>
<files>
<filename>component.php</filename>
<filename>css/index.html</filename>
</files>
<images>
<filename>images/arrow.png</filename>
</images>
<css>
<filename>css/menu.css</filename>
</css>
<languages>
<languagetag=”en-GB”>en-GB.tpl_ja_purity.ini</language>
</languages>
<administration>
<languages>
<language tag=”en-GB”>admin/en-GB.tpl_ja_purity.ini</language>
</languages>
</administration>

<positions>
<position>hornav</position>
<position>breadcrumbs</position>
<position>banner</position>
</positions>

<params>
<param type=”spacer” default=”<B>TemplateLogo</B>” />
</params>
</install>

每个模板相应目录下面都有一个templateDetails.xml配置文件,这个文件包含这个模板的重要信息。这文件主要包含几个重要的部分

<files> 部分包含模板涉及到的重要文档
<images> 部分包含涉及到的图片文件
<css>  部分是css文件
<languages> 不用说是语言文件
<positions> 定义了模板中的模块位置
<params> 模板中的参数

从以上可以看到,模块定义需要在模板配置文件中<positions>增加相应的位置,来看看我的Ja_purity模板的模块位置定义:
<positions>
<position>hornav</position>
<position>breadcrumbs</position>
<position>banner</position>
<position>left</position>
<position>right</position>
<position>top</position>
<position>user1</position>
<position>user2</position>
<position>user3</position>
<position>user4</position>
<position>user5</position>
<position>footer</position>
<position>syndicate</position>
<position>debug</position>
</positions>

只有在配置文件中定义以后,在后台管理界面中才能可以将模块设置在相应的位置上。

 

Joomla! 模板中如何判断页面某一位置是否有模块显示

在Joomla!模板文件中,可以采用countModules方法来判断某一位置是否有模块处于激活状态,通常这个函数用于判断某一位置至少有一个模块处于激活转台,从而避免模板中显示一个空白的区域。

下面的代码就是判断 user1位置是否有模块处于激活状态。

<?php if ($this->countModules(‘user1’ )) : ?>
<jdoc:include type=”modules” name=”user1″ style=”rounded”/>
<?php endif; ?>

 

Joomla! 模板是怎样被执行的

模板的执行是一个2阶段的过程,这个过程充分利用了PHP解析器为模板设计师提供了相当大的灵活性。模板在JDocument对象作用域中执行,$this是JDocument对象的实例。

模板执行开始之前,组件和模块都已执行,他们的输出保存缓冲区中,以便日后使用。

模板执行的过程如下:

加载模板参数
加载模板语言
如果legacy模式,拷贝配置变量作为全局变量。
模板文件( index.php )被加载并执行),输出结果放在缓冲区中。这是第1阶段。在<? PHP和? >标签中的代码都被加载。这个过程中输出都放在缓冲中,没有内容输出到客户端。

接下来寻找favicon.ico,首先是在joomla!根目录,然后在模板根目录.

接下来用第一阶段中生成的模块内容填充<jdoc:include>,每个模块采用适当的渲染器进行渲染,渲染后的输出替换<jdoc:include>元素。

模板中指定的一些 HTTP headers 添加到头部输出中。

最后控制器将控制权交回JApplication,JApplication返回数据给客户端。

 

Joomla!系统默认模板中的error pages

默认情况下,Joomla!用户发生错误时候使用一个特定的系统模板报错页面,这些页面在templates/system目录中,errorpage的名称是根据HTTP的错误号命名的,以下是系统默认的报错页面:

templates/system/403.php (Status code:403 Forbidden)
templates/system/404.php (Status code: 404 Not Found)
templates/system/500.php (Status code: 500 Internal Server Error)

这些错误号在HTTP协议RFC2616中定义,更详细的关于HTTP协议信息请参考
:http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

这些error page的样式表可以修改以下这些:

errorboxheader
errorboxbody
techinfo

templates/system/目录下还有以下的errorpage
templates/system/component.php (not sure when this is used)
templates/system/offline.php 站点不在线时候的提示信息

注意: jdoc:include elements 不能在errorpages 中使用

 

如何自定义Joomla!模板的error page

Joomla!系统的默认errorpages可以由模板目录中的指定名称的自定义错误页面替代,不同的http错误代码对应着不同的error page,以下是几个error page的命名和路径规则:

templates/<template-name>/403.php(HTTP Status code: 403 Forbidden)
templates/<template-name>/404.php (HTTP Status code: 404 Not Found)
templates/<template-name>/500.php (HTTP Status code: 500 Internal ServerError)
templates/<template-name>/component.php (not sure when this is used)
templates/<template-name>/offline.php (“Site is offline” errorpage)

放在<template-name>目录下的error将替代在/templates/system目录下的error page,如果开启了调试模式,在error page中可以调用renderBacktrace方法显示错误信息。
<?php if ($this->debug) :
echo $this->renderBacktrace();
endif; ?>

注意: jdoc:include elements 不能在errorpages 中使用

 

怎样修改Joomla!核心输出内容的模板

标准的Joomla!核心输出的内容可以通过在自定义模板的html目录下增加相应的文件来进行修改,模板覆盖的功能涵盖 your_template/html/modules.php-覆盖相应模块的模板,your_template/html/pagination.php-覆盖相应分页输出的模板,同样也可以覆盖组件的输出样式。

Joomla!的发行包中有一个beez模板,Beez模板重载了Joomla!的核心输出,从而输出一个table-less的页面。如果要给你的模板中增加table-less的输出,可以将templates/beez/html/目录中的全部文件拷贝到你的模板中相应的位置,拷贝文件之后,需要在你的 templateDetails.xml文件中加入以下代码( <files>和</files> 标签之间):

<filename>html/com_contact/category/default.php</filename>
<filename>html/com_contact/category/default_items.php</filename>
<filename>html/com_contact/category/index.html</filename>
<filename>html/com_contact/contact/default.php</filename>
<filename>html/com_contact/contact/default_address.php</filename>
<filename>html/com_contact/contact/default_form.php</filename>
<filename>html/com_contact/contact/index.html</filename>
<filename>html/com_contact/index.html</filename>
<filename>html/com_content/article/default.php</filename>
<filename>html/com_content/article/index.html</filename>
<filename>html/com_content/article/form.php</filename>
<filename>html/com_content/category/blog.php</filename>
<filename>html/com_content/category/blog_item.php</filename>
<filename>html/com_content/category/blog_links.php</filename>
<filename>html/com_content/category/index.html</filename>
<filename>html/com_content/category/default_items.php</filename>
<filename>html/com_content/category/default.php</filename>
<filename>html/com_content/frontpage/default.php</filename>
<filename>html/com_content/frontpage/default_item.php</filename>
<filename>html/com_content/frontpage/default_links.php</filename>
<filename>html/com_content/frontpage/index.html</filename>
<filename>html/com_content/section/blog.php</filename>
<filename>html/com_content/section/blog_item.php</filename>
<filename>html/com_content/section/blog_links.php</filename>
<filename>html/com_content/section/default.php</filename>
<filename>html/com_content/section/index.html</filename>
<filename>html/com_content/index.html</filename>
<filename>html/index.html</filename>
<filename>html/com_search/search/default.php</filename>
<filename>html/com_search/search/default_error.php</filename>
<filename>html/com_search/search/default_form.php</filename>
<filename>html/com_search/search/default_results.php</filename>
<filename>html/com_search/search/index.html</filename>
<filename>html/com_search/index.html</filename>
<filename>html/editor_content.css</filename>
<filename>html/mod_latestnews/default.php</filename>
<filename>html/mod_latestnews/index.html</filename>
<filename>html/mod_login/default.php</filename>
<filename>html/mod_login/index.html</filename>
<filename>html/mod_newsflash/_item.php</filename>
<filename>html/mod_newsflash/default.php</filename>
<filename>html/mod_newsflash/horiz.php</filename>
<filename>html/mod_newsflash/vert.php</filename>
<filename>html/mod_newsflash/index.html</filename>
<filename>html/mod_poll/default.php</filename>
<filename>html/mod_poll/index.html</filename>
<filename>html/mod_search/default.php</filename>
<filename>html/mod_search/index.html</filename>
<filename>html/modules.php</filename>
<filename>html/pagination.php</filename>
<filename>html/com_poll/poll/default.php</filename>
<filename>html/com_poll/poll/default_graph.php</filename>
<filename>html/com_poll/poll/index.html</filename>
<filename>html/com_poll/index.html</filename>
<filename>html/com_newsfeeds/categories/default.php</filename>
<filename>html/com_newsfeeds/categories/index.html</filename>
<filename>html/com_newsfeeds/category/default.php</filename>
<filename>html/com_newsfeeds/category/default_items.php</filename>
<filename>html/com_newsfeeds/category/index.html</filename>
<filename>html/com_newsfeeds/newsfeed/default.php</filename>
<filename>html/com_newsfeeds/newsfeed/index.html</filename>
<filename>html/com_newsfeeds/index.html</filename>
<filename>html/com_weblinks/categories/default.php</filename>
<filename>html/com_weblinks/categories/index.html</filename>
<filename>html/com_weblinks/category/default.php</filename>
<filename>html/com_weblinks/category/default_items.php</filename>
<filename>html/com_weblinks/category/index.html</filename>
<filename>html/com_weblinks/weblinks/form.php</filename>
<filename>html/com_weblinks/weblinks/index.html</filename>
<filename>html/com_weblinks/index.html</filename>
<filename>html/com_user/user/index.html</filename>
<filename>html/com_user/user/default.php</filename>
<filename>html/com_user/user/form.php</filename>
<filename>html/com_user/login/index.html</filename>
<filename>html/com_user/login/default_login.php</filename>
<filename>html/com_user/login/default.php</filename>
<filename>html/com_user/login/default_logout.php</filename>
<filename>html/com_user/register/default.php</filename>
<filename>html/com_user/register/index.html</filename>
<filename>html/com_user/register/default_message.php</filename>
<filename>html/com_user/index.html</filename>
<filename>html/com_user/remind/index.html</filename>
<filename>html/com_user/remind/default.php</filename>
<filename>html/com_user/remind/default_message.php</filename>
<filename>html/com_user/reset/index.html</filename>
<filename>html/com_user/reset/default.php</filename>
<filename>html/com_user/reset/confirm.php</filename>
<filename>html/com_user/reset/complete.php</filename>

上述代码实质上就是告诉Joomla! packageinstaller这些文件需要展开,并且这些文件是整个模板的一部分。
更负载的模板重载
模板重载几乎是无限制的,你可以增加,修改,删除Joomla!核心组件的输出。

 

Joomla! 模板文件中可以使用的函数

Joomla!模板文件中可以使用一些特定的函数,实现一些指定的功能,具体的函数清单如下:

addCustomTag
addFavicon
addHeadLink
addScript
addScriptDeclaration
addStyleDeclaration
addStyleSheet
countModules
getBase
getBuffer
getCharset
getDescription
getHeadData
getInstance
getLanguage
getLink
getMetaData
getModifiedDate
getTitle
getType
loadRenderer
render
setBase
setBuffer
setCharset
setDescription
setDirection
setGenerator
setHeadData
setLanguage
setLineEnd
setLink
setMetaData
setMimeEncoding
setModifiedDate
setTab
setTitle
setType

 

[翻译] joomla 模板制作中的 jdoc 介绍

jdoc:include
<jdoc:include type=”component” />
<jdoc:include type=”head” />
<jdoc:include type=”installation” />
<jdoc:include type=”message” />
<jdoc:include type=”module” name=”breadcrumbs” />
<jdoc:include type=”module” name=”menu” />
<jdoc:include type=”module” name=”submenu”style=”rounded” id=”submenu-box” />
<jdoc:include type=”modules” name=”debug” />
<jdoc:include type=”modules” name=”icon” />
<jdoc:include type=”modules” name=”left”style=”rounded” />
<jdoc:include type=”modules” name=”left” style=”xhtml”/>
<jdoc:include type=”modules” name=”right”style=”xhtml” />
<jdoc:include type=”modules” name=”status”  />
<jdoc:include type=”modules” name=”syndicate” />
<jdoc:include type=”modules” name=”title” />
<jdoc:include type=”modules” name=”toolbar” />
<jdoc:include type=”modules” name=”top” />
<jdoc:include type=”modules” name=”top”style=”xhtml” />
<jdoc:include type=”modules” name=”user1″style=”xhtml” />
<jdoc:include type=”modules” name=”user2″style=”xhtml” />
<jdoc:include type=”modules” name=”user3″ />
<jdoc:include type=”modules” name=”user4″ />

type 属性

jdoc:include 元素中的type属性指定要渲染的内容类型,属性值可以是component,head,installation,message,module,modules
component
页面内容主输出部分,在模板页面<body>元素中应该只出现一次。

head
填充当前页的style, script,meta的相关元素,应该在模板的<head>元素中只出现一次。

installation
仅仅在安装模板中有用,在前台和后台的模板中没有用到,某种程度上与 component类型相似,渲染安装步骤中中的一个页面主内容。

message
在模板的<body>元素中只出现一次,填充系统或者报错信息。

module
渲染由name属性指定的单一模块,模块必须是发布的并且当前用户有权访问,还可以有layout以及controller属性。

modules
渲染模板中所有指定名称的模块,模块必须是发布的并且当前用户有权访问,还可以有layout以及controller属性。
style 属性

对于module 和modules类型,style是一个可选属性,这一属性指定了模块被渲染风格,如果没指定style,默认是none

/templates/system/html/modules.php 声明了标准的style:table,horz,xhtml,rounded,outline
模板设计者可以在以下文件自定义style
/user-template/html/modules.php.

 

Joomla 模块的chrome是什么

chrome找不到合适的词,暂时就用chrome吧。

通过chrome使设计者可以对于模块的输出稍作控制,chrome是一部分预定义的html包围着模块,通常chrome用来改变边框,添加圆角等等,当然chrome能做的不止这么多。

在模块的声明中添加style属性就可以设置模块的chrome,比如这样:<jdoc:includetype=”modules” name=”user1″ style=”custom” />,这个声明对于user1位置的模块添加一个custom的模块chrome.一个模块位置只能有一个style.

Joomla默认有6中模块的chromestyle,你还可以根据需要添加自己的chrome.

1.rounded

2.none

3.table

4.horz

5.xhtml

6.outline

 

 

郑重声明:

1 本资源来源于互联网,资源的版权归资源原作者所持有,受《中华人民共和国著作权法》等相关法律保护。

2 由于无法和原作者取得联系,所以上传的部分资源无法先通过原作者的同意就分享给大家了,如本资源侵犯了您(原作者)的权益,请联系我们(微信号 xiaohaimei1989),我们会立马删除您的资源,并向您表达诚挚的歉意!

3 本站是一个公益型网站,分享资源的目的在于传播知识,分享知识,收取一点点打赏的辛苦费是用于网站的日常运营开支,并非用于商业用途。

4 本站资源只提供学习和参考研究使用,使用过后请在第一时间内删除。本站不承担资源被单位或个人商用带来的法律责任。

发表评论