gpt4 book ai didi

php - 强制 Joomla JRoute 使用菜单项

转载 作者:可可西里 更新时间:2023-10-31 23:05:15 26 4
gpt4 key购买 nike

我正在为 Joomla 构建一个组件! 2.5 和内部我正在使用 JRoute::_('index.php?option=com_myapp&view=cpanel') 来构建我所有的链接。这行得通,但它生成的链接看起来像这样:

/component/myapp/cpanel.html

但是在菜单中我定义了 index.php?option=com_myapp&view=cpanel 有一个别名“myapp”所以链接应该是

/myapp/cpanel.html

可通过此路径访问该组件。如果我这样做,内部生成的所有链接也将具有 /myapp 前缀。但是用于模板(特殊登录链接)并且如果用户偶然发现 /component/myapp...。我仍然希望所有链接都转到 /myapp 前缀.

如何强制 JRoute 自己使用这个菜单项条目?

最佳答案

因为我在这个问题上苦苦挣扎,所以我做了一个快速函数,它会尝试根据菜单项找到链接。它主要基于其他答案。

这只在 Joomla 3.5 上测试过。 JRequest 已弃用,因此改用 $app->input。这可能会做得更好,但至少它适用于我对它的使用。希望它也能帮助其他人!

public static function getRouteMenu($default_url) {
$db = JFactory::getDbo();
$app = JFactory::getApplication();
$jinput = $app->input;

$db->setQuery('SELECT `id` FROM #__menu WHERE `link` LIKE '. $db->Quote($default_url) .' AND `published` = 1 LIMIT 1' );
$itemId = $db->loadResult();
if($itemId) {
$route = $jinput->getString('return', JRoute::_('index.php?Itemid='.$itemId));
$route = str_replace('index.php/', '', $route);
} else {
$route = $jinput->getString('return', JRoute::_($default_url));
}

return $route;
}

该参数需要一个未重写的链接,例如:index.php?option=com_content&view=article&id=10。如果您需要确定如何建立此链接,请检查您的数据库。

关于php - 强制 Joomla JRoute 使用菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24677519/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com