我在Joomla 3.3.0上写了我的第一个Joomla组件,跟随着这本书Learning Joomla! 3 Extension Development, Third Edition.
我遵循作者的建议并直接在Jommla的文件夹下编写代码,例如\administrator\components\com_coup
,其中com_coup
是优惠券管理系统的组件。我有一个完整的文件夹结构,在一章的最后,作者说我应该有一个特定的文件夹和文件结构,并准备好通过 Discovery 安装,Joomla在{{1}中找到我的组件}和Site
,安装管理员似乎进展顺利,但Administration
菜单中没有插入任何菜单项。
我是否应该发现两个组件,为什么我的菜单项没有插入。我的'coup.xml'文件包含以下行:
Components
并且文本项<administration>
<menu img="class:categories">COM_COUP_MENU</menu>
存在于COM_COUP_MENU
文件中。
我的language\en-GB\en-GB.com_coup.sys.ini
文件是:
coup.xml
和我的<?xml version ="1.0" encoding ="utf-8"?>
<extension type="component" version="3.0" method="upgrade">
<name>com_coup</name>
<author>Brady Kelly</author>
<creationDate>2014-06-14</creationDate>
<copyright>(C) Erisia Web Development. All rights reserved.</copyright>
<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
<authorEmail>brady@bradykelly.net</authorEmail>
<authorUrl>http://thepraxis.co.za/</authorUrl>
<version>1.0.0</version>
<description>COM_COUP_XML_DESCRIPTION</description>
<scriptfile>script.php</scriptfile>
<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>
<files folder="site">
<filename>index.html</filename>
</files>
<administration>
<menu img="class:categories">COM_COUP_MENU</menu>
<files folder="admin">
<filename>index.html</filename>
<filename>access.xml</filename>
<filename>config.xml</filename>
<filename>controller.php</filename>
<filename>coup.php</filename>
<folder>controllers</folder>
<folder>helpers</folder>
<folder>models</folder>
<folder>sql</folder>
<folder>tables</folder>
<folder>views</folder>
</files>
<languages folder="admin">
<language tag="en-GB">language/en-GB/en-GB.com_coup.ini</language>
<language tag="en-GB">language/en-GB/en-GB.com_coup.sys.ini</language>
</languages>
</administration>
</extension>
文件是:
en-GB.com_coup.sys.ini
答案 0 :(得分:1)
可能会在几个不同的地方失败,首先要检查的是您的错误报告设置为&#34; 开发&#34; (Global Configuration—>Server->Server Settings
)和Debug System
已启用(Global Configuration—>System->Debug Settings
),您可能还需要启用Debug Language
(它位于Debug System
下方)。
逐步完成这些步骤是正在发生的步骤(你没有提到任何错误,而且无声的失败似乎很少见。)
当discover()
运行时,它会加载installer/adapater/
中找到的所有/libraries/cms/
,你已经说过它是一个组件,所以{{component.php
1}}适配器是相关的。这会遍历站点和管理/components/
目录,查找每个组件xml文件(即您的coup.xml
)。 如果您的XML文件出现问题,这可能会导致错误,但会在安装步骤之前发生,显然您可以运行。
您的组件被发现两次这一事实可能是问题的一部分......您在网站coup.xml
和/components/com_coup
中都有/administrator/components/com_coup
吗? (我们的扩展只在管理员方面使用它们,我可能会删除前端部分。)
适配器返回找到的项目数组(组件,模块,插件,库等),并将其与#__extensions
中注册的扩展名进行比较,并且未列出的任何项目都会添加到扩展表中使用state
-1
。 &#34;发现&#34;然后,视图显示找到的项目列表,以便用户可以选择其中一个或多个项目,并且&#34;安装&#34;它们。
discover_install()
基本上运行正常安装(复制文件除外),因此它会运行任何安装SQL
文件。
然后它运行_buildAdminMenus()
以添加管理菜单,以查看扩展程序在编写之前是否已有菜单。
最后运行清单中找到的任何InstallerScript
文件。
这些阶段中的每一个都可能引发错误 - 但在这种情况下您应该看到某种错误消息。
我会检查:
Debug Languages
时显示在Joomla调试控制台中。php -l /path/to/file.php
)添加完整 XML文件和sys.ini
语言文件也有帮助。如果您没有使用ini
选项,则Debug Languages
语言文件可能会非常棘手。