最近在开发组件的时候遇到一个很奇怪的问题,在安装自己写的组件的时候,前台怎么执行都不正确,更让人吃惊的是,前台居然拷贝的是后台的文件,这到底是什么原因造成的?本节将就此问题进行一下分析和讨论
经过分析,最后发现是组件的XML文件的位置的问题。
一个正常的XML文件应该是这样:
<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="1.0.0" method="upgrade">
<name>CAPTCHA</name>
<!-- The following elements are optional and free of formatting constraints -->
<creationDate>2014-09-12</creationDate>
<author>min.zhang</author>
<authorUrl>http://www.zmax99.com</authorUrl>
<copyright>All right (c)zmax</copyright>
<license>License</license>
<!-- The version string is recorded in the components table -->
<version>1.0.0</version>
<!-- The description is optional and defaults to the name -->
<description>
ZMAX Catpchar Server
</description>
<install> <!-- run on install-->
<sql>
<file driver="mysql" charset="utf8">sql/install.mysql.utf8.sql</file>
</sql>
</install>
<uninstall>
<sql>
<file driver="mysql" charset="utf8">sql/uninstall.mysql.utf8.sql</file>
</sql>
</uninstall>
<update>
<schemas>
<schemapath type="mysql">sql/updates/mysql</schemapath>
</schemas>
</update>
<!-- Site Main File Copy Section -->
<files folder="site">
<folder>language</folder>
<folder>models</folder>
<file>captcha.php</file>
<file>controller.php</file>
<file>index.html</file>
</files>
<administration>
<!-- Administration Menu Section-->
<menu>COM_CAPTCHA_MENU</menu>
<!-- Administration Main File Copy Section -->
<files folder="admin">
<folder>controllers</folder>
<folder>helpers</folder>
<folder>language</folder>
<folder>lib</folder>
<folder>models</folder>
<folder>sql</folder>
<folder>tables</folder>
<folder>views</folder>
<filename>captcha.php</filename>
<filename>controller.php</filename>
<filename>version.php</filename>
<filename>index.html</filename>
</files>
</administration>
<updateservers>
<server type="extension" priority="1" name="ZMAX Captcha">
http://www.zmax99.com/autoupdate/captchar_server_auto_update.xml
</server>
</updateservers>
</extension>
需要注意前台的文件和后台的文件标示。前台文件有一个folder=site的属性。后台文件有一个folder=admin的属性。
这个XML需要有如下的文件结构(即组件的文件的组织形式)才能正确安装。
(图书文件和文件夹的图标是SVN产生的和JOOMLA代码无关)
另外需要注意的是 captcha.xml只能在admin和site的最外面。不能将captcha.xml文件放到admin目录。
系统在安装的时候,会自动将captcha.xml文件拷贝到组件的后台目录中。
如果在制作组件安装包的时候,请注意不要将组件的自述文件(*.xml)文件放到admin目录下。否则你的更目录下的*.xml将会不起作用。系统会使用admin目录下的xml文件来代替。这就会造成你在xml文件中指定的文件夹路径出现错误。

评论 (0)