繁体   English   中英

自定义joomla搜索结果页面布局

[英]Customizing joomla search result page layout

joomla搜索结果显示在主页上。 我希望它显示在新页面上。 根据一些在线帖子,我不得不修改mod_search.php以将项目ID设置为不存在的项目,因此我将其设置为0,但是问题是这些更改根本没有反映在我的搜索模块中。 我还尝试在模块/mod_search/tmpl/default/default.php表单中放置一个名为itemid的隐藏字段,但是即使未选中,我也将表单目标设置为_blank并尝试更改表单的操作页面以说index.php?Itemid = 0而不是index.php,但是所有这些似乎都没有反映在搜索模块上。 当我手动将浏览器位置框中的itemid更改为0时,结果显示在另一个页面上(这就是我想要的)。

请建议我该怎么办?

在Joomla 2.5中,mod_search属性中有“ itemId”字段,如果将其设置为不存在的项目,则它将清除绑定到某些菜单项(页面)的模块中的搜索结果页面,而仅保留绑定到“全部”的模块”页面。

尝试更改搜索表单的请求方法:

<form ... method="get">
<input type="hidden" name="itemId" value="0" />

或像这样

<form action="...?itemId=0" method="post">

我知道这是一篇较旧的文章,但是我找到了一个与Joomla 1.6一起使用的简单解决方案,并希望与他人分享。 这是一个核心hack,并不是最佳选择,因为它会在升级过程中消失,但是很容易做到。

像我这样的人们一直在寻找的是允许用户在页面上的搜索框中输入文本,并将结果显示在模板内的空白页面中,而不是将结果与其他内容,或被迫使用菜单项将用户发送到单独的搜索页面。

在Joomla中使用搜索框时! 页面以启动搜索,正在使用的是搜索的“组件”部分而不是“模块”。 搜索组件控制器中有一个部分,可以设置用于菜单的ID,或者自动设置结果来自请求页面并在请求页面中显示。 我们只需要将其关闭即可将搜索结果发送到空白页。

因此,在/components/com_search/controller.php中,注释掉以下代码:

/*              // set Itemid id for links from menu
    $app    = JFactory::getApplication();
    $menu   = $app->getMenu();
    $items  = $menu->getItems('link', 'index.php?option=com_search&view=search');

    if(isset($items[0])) {
        $post['Itemid'] = $items[0]->id;
    } else if (JRequest::getInt('Itemid') > 0) { //use Itemid from requesting page only if there is no existing menu
        $post['Itemid'] = JRequest::getInt('Itemid');
    }
*/

这将在模板的空白页的内容部分内显示搜索结果。 至少对我有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM