![](/img/trans.png)
[英]How do I get MySQL query results from component menu item in Joomla and refine with a foreach where clause?
[英]Where is my Joomla component menu item?
我正在学习Joomla一书之后,在Joomla 3.3.0上编写我的第一个Joomla组件。 3扩展开发,第三版。
我遵循作者的建议,并直接在Jommla的文件夹下编写代码,例如\\administrator\\components\\com_coup
,其中com_coup
是我的优惠券管理系统的组件。 我有一个完整的文件夹结构,在本章的最后,作者说我应该有一个特定的文件夹和文件结构,并准备由Discovery安装,Joomla在“ Site
和Administration
找到了我的组件,并且似乎安装了一个管理员。进行得很好,但是没有在“ Components
菜单中插入任何菜单项。
我应该发现两个组件,为什么没有插入菜单项。 我的“ coup.xml”文件包含以下行:
<administration>
<menu img="class:categories">COM_COUP_MENU</menu>
language\\en-GB\\en-GB.com_coup.sys.ini
文件中存在文本项COM_COUP_MENU
。
我的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"
它可能在几个不同的地方都失败了,首先要检查的是您已将错误报告设置为“ 开发 ”( Global Configuration—>Server->Server Settings
),并且Debug System
打开( Global Configuration—>System->Debug Settings
),您可能还希望启用Debug Language
(它位于Debug System
下方)。
逐步执行这些步骤是正在发生的步骤(您没有提到任何错误,并且静默失败似乎很罕见)。
当discover()
运行时,它将加载在/libraries/cms/
找到的所有installer/adapater/
,您已经说过它是一个组件,因此component.php
适配器就是相关的component.php
。 这遍历站点和admin /components/
目录,以查找每个组件xml文件(即您的coup.xml
)。 如果XML文件中存在问题,则可能会导致错误,但可能会在安装步骤之前发生,显然您可以运行该步骤。
你的组件被发现两次可能是问题的一部分...你有事实coup.xml
在这两个网站的/components/com_coup
和/administrator/components/com_coup
? (我们的扩展程序仅在管理方面具有它们,我可能会删除前端程序)。
适配器返回找到的项目(组件,模块,插件,库等)的数组,并将其与#__extensions
注册的扩展进行比较,未列出的任何项目均以state
-1
添加到扩展表中。 然后,“发现”视图显示找到的项目列表,以便用户可以选择其中一项或多项并“安装”它们。
discover_install()
基本上运行常规安装(复制文件除外),因此它运行所有安装SQL
文件。
然后,它运行_buildAdminMenus()
来添加“管理”菜单,在该菜单中,它会在覆盖之前查看扩展名是否已有菜单。
最后,清单中找到的所有InstallerScript
文件都将运行。
每个阶段都可能引发错误-但是在这种情况下,您应该会看到某种错误消息。
我会检查:
Debug Languages
,显示在Joomla调试控制台中)。 php -l /path/to/file.php
) 添加完整的 XML文件和sys.ini
语言文件也可能会有所帮助。 如果您从未使用过Debug Languages
选项, ini
语言文件可能会很棘手。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.