【问题标题】:Joomla Menu In External Page外部页面中的 Joomla 菜单
【发布时间】:2012-08-18 12:57:55
【问题描述】:

我正在尝试在 Joomla 的模板文件夹之外的页面中从 Joomla 的主菜单重新创建菜单项。

是否有任何可用的方法,例如 Wordpress 中的“wp_nav_menu”,可以帮助我生成菜单。

【问题讨论】:

  • 澄清一下,您是否尝试从 Joomla 生成的页面为非 Joomla 页面重新创建菜单?
  • 是的,我在另一个应用程序中有一个页面,我需要在其中生成 Joomla 管理员定义的菜单
  • 我认为您将不得不在您的一个 Joomla 页面上查看源代码,然后从那里剪切和粘贴菜单代码并将其硬编码到您的非 Joomla 应用程序中。确保您还从 Joomla 模板中调用了 template.css 文件,以便菜单样式匹配。
  • 我对 Joomla 还很陌生,但我能想到的只是 Joomla 模板中只有一个衬里代码,它呈现所需的 HTML 代码<jdoc:include type="modules" name="left" />
  • 您可以对其进行硬编码或建立与数据库的连接,拉取菜单项并在<li> 标记中回显每个结果。如果你有一个下拉菜单,那就更难了。否则可能更容易硬编码

标签: php joomla


【解决方案1】:

您需要遵循两个步骤

首先,使您的外部页面能够运行 joomla 库。为此,您需要在外部 php 页面中包含几行代码

define( '_JEXEC', 1 );
define('JPATH_BASE', dirname(__FILE__).'/../../../../' );   // should point to joomla root
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();

其次,为您想要的菜单创建一个菜单模块并在自定义位置启用它,例如“xxxx” 然后将以下代码放在您想要放置该菜单的位置

jimport( 'joomla.application.module.helper' );
$module = JModuleHelper::getModules('xxxx');
// xxxx is any virtual position, no need to create it anywhere.
echo JModuleHelper::renderModule($module[0]);

【讨论】:

  • 我尝试了上述代码,但它给了我以下致命错误:Fatal error: Class 'JModuleHelper' not found
  • 在使用 JModuleHelper jimport( 'joomla.application.module.helper' );我还更新了答案中的代码。
  • 是否有任何方式,我可以禁用 Joomla 中的会话启动,因为它与我的应用程序中使用的会话冲突,我正在集成 Joomla 菜单
  • 我也想通了,我们不需要下面这行代码,$mainframe->initialise();
  • 我有一个在 Joomla 中构建的站点,现在我必须将之前构建的另一个应用程序与这个 Joomla 安装集成在一起,所以这个应用程序放在 Joomla 根目录下名为 app 的文件夹下。当我在此应用程序中创建一个页面以在页面上显示菜单时,它会在菜单 URL 中带来/app/index.php/about。预期值为/index.php/about
猜你喜欢
  • 2012-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多