教程栏目

joomla中文网出品的官方教程

 

在本节中,我们将开始完成组件的后台。

 管理后台会看到一些很奇怪的现象,

点击之后:

从地址栏可以看出现在请求的的确是com_guestbook组件。可是为什么我们的组件的名称是一个日期呢?而不是我们在xml文件中设置的文件呢?为了解决这个问题,有必要深入研究一下XML自述文件。


 

 

 关于自述文件(.xml)的介绍


 

          在joomla中每一个扩展都必须有一个自述文件。这个文件的名称为扩展的名称.xml.这个文件描述了一般的安装信息同时也提供了组件的配置信息。自从joomla2.5之后,不同的类型的扩展的自述文件都基本类似,都允许扩展去充分使用安装程序。


命名规则

         这个文件必须取名为"manifest.xml"或者是"扩展的名称.xml",并且必须位于安装包的根目录下。

基本语法


 

  根元素

安装文件第一个元素就是:

<extension></extension>

开始和结束标签对所有的扩展都是有效的。在2.5中用<extension>提代了1.5中的<install></install>标签。下面是<extension>标签常用的属性:

属性 应用的范围 描述
type componentfilelanguagelibrarymodulepackageplugintemplate 所有的扩展 这个属性为安装程序指明了扩展的类型,安装程序根据这个属性来判断下面的标签的具体含义
version 2.53.0 所有的扩展 指定扩展的版本的字符串
method installupgrade 所以的扩展 如果没有指定method值,默认情况下为install.如果是install,那么当安装程序检查到文件或者文件夹存在时就会停止,并且给出错误提示
client siteadministrator 模块 指定该模块是前台模块还是后台模块
group 字符串 插件 指定插件属于的插件组。并且插件组必须为plugins文件夹下存在的文件夹,如果指定的组名不存在,安装程序将会创建

元数据

下面的元素能够被用来作为元数据。这些元数据都是可以缺少的。如果需要这些数据,他们一定要是根元素的子元素。

 
<name> --  未经处理的组件的名称  例如:com_guestbook

<author> --  作者的名称

<creationDate> -- 发行的日期

<copyright> -- 版权说明

<license> -- 许可声明

<authorEmail> --  作者的email

<authorUrl> --  作者的网站

<version> --  版本信息

<description> -- 扩展的描述信息,这个信息将会被翻译。例如:COM_GUESTBOOK_XML_DESCRIPTION

注意:<name>和<description>标签都是可以被翻译的字段,所以很容易进行本地化。

前台文件

<files folder="from-folder">

        <filename>examplet.php</filename>

         <folder>examples</folder>

</files>

需要拷贝到前台目录的文件应该放在<files>标签里面。你可以用folder属性去指定从那一个文件夹中拷贝。如果需要复制每一个文件,就需要用<filename>元素。如果你想拷贝一个完整的目录,就定义<folder>。

媒体文件

<media folder="media" destination="com_example">

        <filename>com_example_log.png</filename>

         <folder>css</folder>

         <folder>js</folder>

</media>

这 个例子将会拷贝文件(/media/com_example_logo.png)和文件夹(/media/css/和/media/js)到/media /com_example下面。如果com_example不存在就创建。同时也可以指定folder属性去指定从zip安装包的那一个目录拷贝。

如 果需要将资源给web访问(js,css,images)等,那么需要将这些资源储存在media中。 Amongst other things this feature was added as step in the progression to multi-site support and the eventual move of code files (PHP) out of the web accessible areas of the server.

后台管理部分

<administration>

         <!--  各种支持的元素-->

</administation>

后台部分被定义在<administration>元素中,由于只有组件才能在前后台使用,所以只有组件的自述文件才有这个元素。

后台文件

需要拷贝到后台目录下的文件应该放在<administration>的<files>元素下进行说明,和前台一样,你也可以用floder属性指定从哪一个文件夹中拷贝。

菜单链接和子菜单

<menu>COM_EXAMPLE</menu>

<submenu>

           <menu link="选项=值">COM_EXAMPLE_SUBMENU_ANOPETION</menu>

           <menu view="viewname">COM_EXAMPLE_SUBMENU_VIEWNAME</menu>

</submenu>

组 件的主菜单文本定义在<administration>下的<menu>元素里面。<submenu>元素也 是<administration>下面的一个子元素。这些可以包含更多的菜单,另外,<menu>元素可以包含下面的属性。

属性 描述
link 指定当点击的时候的链接
img 指定菜单项的背景图片,大小(16*16px)
string 一 个添加到链接中的URL的参数。例如<menu view="cpanel">COM_EXAMPLE</menu>在com_example组件的自述文件中,如果以菜单项指向这个 文件,将会产生一个URL,index.php?option=com_example&view=cpanel.

在 这个标签中的值是这个菜单的标题。不同于1.5,你不能用一个本地的语言字符串。举例说明,如果你输入“Example Component”代替“COM_EXAMPLE”,这就会导致你组件在菜单中的名称为example-componet,并且不能提供翻译。为了提供 一个翻译功能,你需要创建一个文件名称为en-GB.com_example.sys.ini文件,并且将这个文件放到 administrator/languages/en-GB(当然,当你安装的时候你可以用自述文件提供的<languages>标签去拷 贝这个文件)或者在administrator/componets/com_example/languages/en-GB下面。如果你使用后者,那 么你就不能在<language>中再次包含了。只要你将语言文件目录放到<files>标签中,系统会自动完成拷贝。

语言文件的内容为:

COM_EXAMPLE = "Example Component"

COM_EXAMPLE_SUBMENU_ANOPTION = "Another Option"

COM_EXAMPLE_SUBMENU_VIEWNAME ="Another View"

请注意,这个语言字符串必须为双引号。另外,joomla1.6+对菜单项的排序将根据XML自述文件翻译后的字符串,这意味着不管你是什么语言,这个排序都是正确的。当然,在1.5中这是一个bug.因为他没有考虑大非英语国家。

 Configuration

注意,组件不支持在自述文件中定义configuration。

<config>元素是跟元素的一个子元素,他描述了扩展的配置选项。如果可用,这个选项将会被适当的管理程序(插件管理,模块管理,模版管理)显示。配置选项同时也可单独定义在config.xml文件中。他的根元素为<config>.

在<config> 元素下面,一个或者多个<fieldset>元素可以是出现,每一个元素代表了一个HTML<fieldset>,他们一组的形 式组织在一起。可选的name属性可以在<fieldset>中使用,用来该字段的名称。例如:<fieldset name="params">.

每一个fieldset字段必须保护一个或者多个<field>元素。每一个元素代表了一个单独的表单域。

SQL

<install folder="admin">

   <sql>

           <file driver="mysql" charset="uft8">sql/example.install.sql</file>

   </sql>

</install>

<uninstall folder="admin">

     <sql>

        <file driver="mysql" charset="utf8'>sql/example.uninstall.sql</file>

    </sql>

</uninstall>

在上面的例子中,我们将SQL文件放到了安装文件的admin/sql下面。你必须在你的administration文件下包涵"sql“文件夹。在安装或者卸载的过程中可以指定<install>和<uninstall>中指定的SQL文件。

Update of the SQL schema

<update>

<schemas>

            <schemapath type=”mysql">sql/updates/mysql</schemapath>

           <schemapath type="sqlsrv">sql/updates/sqlsrv</schemapath>

</schemas>

</update>

自从1.6后,就开始使用<update>标签。这个标签允在更新的时候执行SQL文件。

 语言文件

在joomla1.5中,通过使用<languages>标签,我们将扩展的语言文件也放到主语言文件下面。在1.6以后就不赞成使用这个方法。鼓励放扩展的语言文件在扩展的文件夹下面。

<languages folder="langfiles">

      <language tag="en-GB">en-GB.com_example.ini</language>

</languages>

将语言文件存储在扩展的文件夹下,可以避免当你删除joomla的语言的时候,同时也删除了扩展的语言文件。当你再次安装该语言的时候,扩展的语言文件还在,因此你不需要再次安装了。

前 台后台的语言文件夹的结构是一样的,放他们在<language>标签下面。例如<language>language/en- GB/</language>.记住,你必须指定是前台文件夹还是后台。当开发的时候,可以开启语言诊断,这样可以避免一些错误。

脚本文件。

 

解决问题

看到了菜单部分,基本上就理解了第一个截图中我们的组件为什么会只显示一个日期了。原因可能是因为我们使用了中文的名称,而组件的名称在joomla中会经过一些处理,中文字被直接过滤掉了,所以,对joomla来说我们并没有指定menu字段,因此就显示了一个日期。

我感到最疑惑的地方就是,当我手动修改xml自述文件中的menu字段为英文的时候,系统并没有响应我的改变。对这个问题,我百思不得其解。我原先以为这个名称会存放在数据库中,可是当进入数据库中查看的时候并没有发现,十分不解。

本问题的完整解决方案是,先卸载组件,然后打包所有文件,重新安装。注意menu字段不要用中文。

至此第一个问题已经解决。

对于第二个问题,需要了解,joomla管理后台和前台基本按照一样的方式来处理用户请。也是组件 视图控制器的结构。由于本篇文章篇幅已经很长,将在下节中继续。敬请期待!

 

评论 (0)

  • 最新在前
  • 最佳在前

第1章 Joomla入门教程

第3章 C计划

第5章 E计划

第6章 H计划

第7章 G计划

第9章 运行环境

第11章 主从与集群

第12章 模块开发

第13章 插件开发

第14章 j2.x组件开发教程

第15章 页面定制教程

第16章 页面构造器

第17章 joomla升级