我的 Joomla 组件菜单项在哪里?
Posted
技术标签:
【中文标题】我的 Joomla 组件菜单项在哪里?【英文标题】:Where is my Joomla component menu item? 【发布时间】:2014-08-05 21:00:30 【问题描述】:我正在编写我的第一个 Joomla 组件,在 Joomla 3.3.0 上,遵循本书 Learning Joomla! 3 Extension Development, Third Edition.
我按照作者的建议直接在 Jommla 的文件夹下编写代码,例如\administrator\components\com_coup
,其中com_coup
是我的优惠券管理系统组件。我有一个完整的文件夹结构,在一章的最后作者说我应该有一个特定的文件夹和文件结构,并准备好通过 Discovery 安装,Joomla 在Site
中找到了我的组件和Administration
,安装管理员似乎很顺利,但Components
菜单中没有插入任何菜单项。
我应该发现两个组件,为什么我的菜单项没有插入。我的 `coup.xml' 文件包含以下行:
<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
文件是:
COM_COUP="Coup"
COM_COUP_XML_DESCRIPTION="The winning voucher and coupon manager!"
COM_COUP_MENU="Voucher Coup"
【问题讨论】:
【参考方案1】:它可能在几个不同的地方失败,首先要检查的是您是否将错误报告设置为“Development”(Global Configuration—>Server->Server Settings
)和Debug System
打开(@987654325 @),你可能还想打开Debug Language
(它就在Debug System
下面)。
逐步执行这些是正在发生的步骤(您没有提及任何错误,而且静默失败似乎很不寻常)。
当discover()
运行时,它会加载在/libraries/cms/
中找到的所有installer/adapater/
,您已经说过它是一个组件,所以component.php
适配器是相关的。这将循环通过站点和管理员/components/
目录查找每个组件 xml 文件(即您的coup.xml
)。 如果您的 XML 文件中存在问题,这可能会导致错误,但它会在您显然可以运行的安装步骤之前发生。
您的组件被发现两次这一事实可能是问题的一部分……您在站点的/components/com_coup
和/administrator/components/com_coup
中都有coup.xml
吗? (我们的扩展只在管理端有它们,我可能会删除前端)。
适配器返回一组找到的项目(组件、模块、插件、库等),与#__extensions
中注册的扩展进行比较,任何未列出的项目都将添加到扩展表中,并带有@987654338 @-1
。然后“发现”视图会显示找到的项目列表,以便用户选择其中一个或多个并“安装”它们。
discover_install()
基本上运行正常安装(复制文件除外),因此它运行任何安装SQL
文件。
然后它运行_buildAdminMenus()
来添加管理菜单,它会在覆盖之前查看扩展是否已经有一个菜单。
最后,在清单中找到的任何InstallerScript
文件都会运行。
这些阶段中的每一个都可能引发错误 - 但在这种情况下您应该会看到某种错误消息。
我会检查:
-
您的 XML 文件验证正确
用于语言文件错误(在启用
Debug Languages
时显示在 Joomla 调试控制台中。
检查您在 SQL 控制台中运行的 SQL 安装文件,例如 SequelPro 或 phpMyAdmin
验证您的安装脚本 (php -l /path/to/file.php
)
添加您的完整 XML 文件和sys.ini
语言文件也会有所帮助。如果您没有使用过Debug Languages
选项,ini
语言文件可能会很棘手。
【讨论】:
我已将这些文件添加到问题中,并遵循了您的所有建议。一件事是扩展安装在一个空白页面http://localhost/joomla/administrator/index.php?option=com_installer&view=discover
上结束,并在jos_extensions
中插入一个条目。卸载会留下一个空的http://localhost/joomla/administrator/index.php?option=com_installer&view=manage
页面,但不会从jos_extensions
中删除条目。我的 sql 文件是由 myPhpAdmin 生成的。
当您说“空白页面”时,您的意思是浏览器窗口是空白的……如果是这样,那么您在某处遇到了 PHP 错误。很可能在您的安装脚本中。
是的,浏览器是空白的,不是 Joomla 内容区域。我会仔细检查脚本,谢谢。以上是关于我的 Joomla 组件菜单项在哪里?的主要内容,如果未能解决你的问题,请参考以下文章