【问题标题】:Joomla, search module controller doesn't redirectJoomla,搜索模块控制器不重定向
【发布时间】:2013-09-24 19:41:45
【问题描述】:

我正在使用带有标准搜索模块的 Joomla 2.5.11。没有什么花哨。有两个兄弟站点,开发和生产。不幸的是,一位(非精通技术的)管理员在后台做了一些破坏搜索的事情。我不知道具体是什么,他本可以使用自动升级按钮,弄乱模块/插件。我注意到它是因为搜索模板在视觉上发生了变化,但我不知道如何。

幸运的是,我仍在开发站点上进行搜索;进行比较。 plugins/search、mod_search 和 components/search 中的所有文件都是相同的。没有 php 错误。

行为如下: * 我在页面中键入搜索“johndoe” * Joomla 重定向到首页 index.php?searchword=johndoe 而不显示结果

当我记录代码时,我可以跟踪的最后一件事是 SearchControllercomponents/com_search/controller.php):

function search()
{
    [...]

    $searchword = trim(str_replace($badchars, '', JRequest::getString('searchword', null, 'post')));
    // if searchword enclosed in double quotes, strip quotes and do exact match
    if (substr($searchword, 0, 1) == '"' && substr($searchword, -1) == '"') {
        $post['searchword'] = substr($searchword, 1, -1);
        JRequest::setVar('searchphrase', 'exact');
    }
    else {
        $post['searchword'] = $searchword;
    }
    $post['ordering']   = JRequest::getWord('ordering', null, 'post');
    $post['searchphrase']   = JRequest::getWord('searchphrase', 'all', 'post');
    $post['limit']  = JRequest::getUInt('limit', null, 'post');
    if ($post['limit'] === null) unset($post['limit']);

    [...]

    $uri = JURI::getInstance();
    $uri->setQuery($post);
    $uri->setVar('option', 'com_search');

    // index.php?searchword=johndoe&searchphrase=all&Itemid=117&option=com_search

    $this->setRedirect(JRoute::_('index.php'.$uri->toString(array('query', 'fragment')), false));
}

所以通常这个 url (index.php?searchword=johndoe&searchphrase=all&Itemid=117&option=com_search) 应该引导我进入搜索组件的某个地方。但它从来没有找到它,而是直接进入首页;无需实例化 SearchModelSearch 类 (components/com_search/models/search.php)。

问候

【问题讨论】:

  • 不应更改搜索的控制器或模型。你有没有问过管理员他/她首先改变了什么?正如我在这里告诉大多数人的那样,这就是为什么在 Joomla 中编辑核心文件是一个坏主意,因为在进行更新时更改会丢失。
  • 没有(核心)文件被编辑,只有模板。我是唯一具有 ftp 访问权限的人,我对文件进行了比较。管理员肯定按下了管理后台的一些按钮。
  • 检查组件和模块的所有搜索设置,看看是否一切都加起来
  • 在管理面板(组件>搜索)中,cnjeu.fr/administrator/index.php?option=com_search。仅显示旧关键字。新的不会创建新行。

标签: php search joomla joomla2.5


【解决方案1】:

转到模板/Your_Template/html/mod_search/default.php

更改action="index.php"

action="<?php echo JRoute::_('index.php?option=com_search');?>"

例子:

<form action="<?php echo JRoute::_('index.php?option=com_search');?>" method="post" class="default-search">
....
</form>

【讨论】:

  • 虽然不是解决办法,但给了我一些线索。
【解决方案2】:

问题是由 JoomSef 中的错误配置(用于 url 重写的模块)引起的。

结果页面已链接到主页。并且主页没有显示结果的地方。事实上,搜索正在运行,但什么都看不到。

我去了 JoomSEF > 管理 SEF URL 并寻找“option=com_search” url:

Search => index.php?option=com_search&view=search&Itemid=101

Itemid=101 是主页。我将此参数更改为 Itemid=114,这是一个空的内容页面,专用于该模块。

Search => index.php?option=com_search&view=search&Itemid=114

【讨论】:

    【解决方案3】:

    templates\Your Template\html\mod_search\default.php 上添加

    $mitemid    = 0 ;
    

    【讨论】:

    • 为什么会有帮助?
    猜你喜欢
    • 1970-01-01
    • 2011-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多