簡體   English   中英

Drupal 在塊和頁面中都顯示暴露的過濾器

[英]Drupal show exposed filter both in block and page

再次需要幫助伙計們,有沒有辦法在不刪除頁面過濾器的情況下在塊和頁面中顯示暴露的過濾器? 我在 YES 處使用公開表單過濾器,創建了帶有過濾器的塊,但是當我轉到視圖頁面時,我看不到公開的過濾器。

例如,我有一個帶有暴露塊的 page.tpl。 但是在templates/custom-page.tpl(原始暴露的過濾器在哪里)啟用Exposed Form Filter后看不到它們。 我想要的是暴露的過濾器同時顯示在頁面和塊中。

我用谷歌搜索,但我還沒有找到解決方案。 如果你能幫助我,我將不勝感激。 謝謝!!! 我正在使用 Drupal 7。

這實際上是您的想法,但我會為其他人添加它:

  1. 編輯您的視圖。
  2. 克隆視圖中的“頁面”。
  3. 重命名頁面,例如“ SearchBlock”(也將計算機名稱更改為“ search_block”)。
  4. 啟用“塊中的公開表格”。
  5. 打開塊配置(#overlay = admin / structure / block)。
  6. 您的新塊將在按鈕上的某個位置,其名稱類似於:“暴露形式:your_view-search_block”。

第3點當然不是必需的,但是它將使事情變得更加明顯。 通常,您在做某事6個月后就需要事情變得明顯;-)。

BTW。 克隆頁面后,可以從塊中刪除過濾器。 只有兩個要求:

  1. 頁面上和塊中的過濾器必須具有相同的機器名稱和操作員設置。
  2. 阻止和過濾器必須指向相同的URL。

這也意味着您可以使用各種過濾器集添加更多塊。

您可以將公開的表單設置為不處於阻止狀態(因此它會顯示在頁面上)。 然后,您可以制作自己的具有公開形式的塊(使用視圖函數獲取公開形式)。
要獲取公開的表單,請檢查這些鏈接。
Drupal 7 Views 3:如何以編程方式嵌入Views公開的過濾器

要么。

您可以將過濾器暴露在一個塊中,將此塊放在視圖頁面上,然后使用multiblock制作暴露的過濾器塊的另一個副本以放置在其他位置。 這可能更容易。

在 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);
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM