
最近在开发组件的时候遇到一个很奇怪的问题,在安装自己写的组件的时候,前台怎么执行都不正确,更让人吃惊的是,前台居然拷贝的是后台的文件,这到底是什么原因造成的?本节将就此问题进行一下分析和讨论
经过分析,最后发现是组件的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)