我的Joomla组件菜单项在哪里?

时间:2014-06-16 04:58:18

标签: php joomla joomla3.0 joomla-extensions

我在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

1 个答案:

答案 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文件。

这些阶段中的每一个都可能引发错误 - 但在这种情况下您应该看到某种错误消息。

我会检查:

  1. 您的XML文件验证正确
  2. 表示语言文件错误(在启用Debug Languages时显示在Joomla调试控制台中。
  3. 检查在SequelProphpMyAdmin
  4. 等SQL控制台中运行的SQL安装文件
  5. 验证您的安装脚本(php -l /path/to/file.php
  6. 添加完整 XML文件和sys.ini语言文件也有帮助。如果您没有使用ini选项,则Debug Languages语言文件可能会非常棘手。