【问题标题】:Drupal show exposed filter both in block and pageDrupal 在块和页面中显示暴露的过滤器
【发布时间】:2014-11-30 23:51:43
【问题描述】:

再次需要帮助,有没有办法在块和页面中显示暴露的过滤器而不删除页面的过滤器?我在 YES 时使用 Exposed Form Filter,创建了带有过滤器的块,但是当我转到视图页面时,我看不到暴露的过滤器。

我有例如 page.tpl,上面有暴露的块。 但是在templates/custom-page.tpl(原来的暴露过滤器在哪里)启用暴露表单过滤器后看不到它们。我想要的是暴露的过滤器同时显示在页面和块中。

我用谷歌搜索了它,但我还没有找到解决方案。如果您能帮助我,我将不胜感激。谢谢!!!我正在使用 Drupal 7。

【问题讨论】:

  • 也许是个愚蠢的问题,但您是否将过滤器块添加到某个区域?您必须将其添加为任何其他块,否则它将在前端不可见。
  • 是的,我会在下面发布我是如何解决它的,所以我会对任何人有所帮助。

标签: drupal drupal-7 block drupal-exposed-filter


【解决方案1】:

在 Drupal 8 和 9 中,这仍然是一个相关问题。我发现您可以“欺骗”视图的页面显示,使其相信公开的表单没有作为块发布。这将阻止它在页面显示上隐藏暴露的表单。

/**
 * Implements hook_views_pre_build().
 */
function mymodule_views_pre_build(ViewExecutable $view) {
  // Force the 'my_view' page display to always render the exposed form.
  if ($view->id() === 'my_view' && $view->getDisplay()->getPluginId() === 'page') {
    $view->getDisplay()->setOption('exposed_block', FALSE);
  }
}

【讨论】:

    【解决方案2】:

    您可以将公开的表单设置为不在一个块中(因此它显示在页面上)。然后,您可以制作自己的块,其中包含公开的表单(使用视图函数获取公开的表单)。
    要获取公开的表单,请查看这些链接。
    Drupal 7 Views 3: How to programmatically embed a Views exposed filter

    或。

    您可以在一个块中公开过滤器,将此块放在视图页面上,然后使用multiblock 制作另一个公开的过滤器块的副本以放在其他地方。这可能更容易。

    【讨论】:

    • 感谢您的 cmets,我将发布我设法解决的问题,这很容易,但是当响应非常明显时,我正在查看代码。我希望它会帮助其他人。首先,我复制了页面,在其中一个页面中放置了“暴露块过滤器”,而在另一个页面中没有,但我必须将两个页面指向相同的路径。然后我暴露了重复页面和wala的块!它就像魅力一样!就像我说的,我希望这个线程在遇到这个问题时可以帮助其他人。最好的问候!
    • 啊,我没想过那样做。很高兴你把它整理好了。
    【解决方案3】:

    其实是你的想法,不过我会补充给别人的:

    1. 编辑您的视图。
    2. 克隆视图中的“页面”。
    3. 将页面重命名为“SearchBlock”(同时将机器名称更改为“search_block”)。
    4. 启用“块中的公开形式”。
    5. 打开块配置 (#overlay=admin/structure/block)。
    6. 您的新块将位于按钮上的某个位置,名称如下:“公开的表单:your_view-search_block”。

    第 3 点当然不是必须的,但它会让事情变得更明显。而且你通常需要在你做某事 6 个月后让事情变得明显;-)。

    顺便说一句。克隆页面后,您可以从块中删除过滤器。只有两个要求:

    1. 页面和块中的过滤器必须具有相同的机器名称和操作员设置。
    2. 块和过滤器必须指向同一个 URL。

    这也意味着您可以使用各种过滤器添加更多块。

    【讨论】:

    • 这里有个小问题 - 对于上面的 SearchBlock 示例,暴露的 SearchBlock 需要在克隆视图中,而不是在您克隆的原始视图中。第一个视图页面将是当您转到为视图设置的任何路径时显示的页面。如果您有 2 个具有相同路径的视图页面,则视图将使用视图配置中首先列出的任何页面。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多