2010-09-10 97 views
0

有沒有一個模塊或一種方法來管理Drupal消息。即您在創建內容後看到的消息,例如「名爲bla的汽車列表已經創建」。我想要一箇中心點來控制這些消息。他們中的大多數我不想展示。Drupal消息控制?

回答

1

如果您已經創建了一個錯誤信息,就立即知道你不想顯示它,你可以從Drupal的錯誤數組如下刪除:

array_pop($_SESSION['messages']['error']); 

,將刪除最近創建的錯誤消息,但會使表單處於錯誤狀態。這樣做有點不方便,但它可以幫助您不必花費精力去編寫Drupal核心代碼。

你也可以在數組中尋找特定的條目並取消它們,但這有點多。

+0

重點是創建一條消息並將其刪除嗎?如果你有自己的模塊,就不要在第一時間創建消息。這對於刪除特定消息沒有多大幫助。 – googletorp 2010-09-10 10:51:44

+0

我見過這種技術,例如在一個表單上,你一起驗證兩個字段,並希望它們都顯示爲錯誤,但只希望顯示一條消息。也許你可以掃描數組並刪除重複的消息。那種事。 – Spudley 2010-09-10 10:56:35

2

我不認爲你可以管理這樣的消息。您不知道哪個模塊發佈了消息或原因,所有您將得到的是消息,並且它是類型,警告,錯誤等。

如果要更改消息,您可以在preprocess_page中執行此操作, ,或者你可以在之前通過修改存儲消息的全局變量$_SESSION來實現。

但正如我所說的,沒有一種好的方法來過濾消息,所以如果你想從模塊Y中刪除消息X,你將會非常困難。如果你真的想,你可以使用RegEx,但它很快會變得難以管理。

3

我正準備一篇博客文章,但我已經可以告訴你一些提示:

  • 使用String Overrides模塊更換信息(通過UI)。如果您想隱藏它,請將其留空。這些替換被存儲在全局變量中(不需要訪問數據庫,因此沒有性能損失),但是因爲不建議將相同的原因用於數百個字符串,只有很少的字符串。
  • 使用 http://www.michaelbarton.name/2010/07/09/drupal-module-status-messages-alter/這 模塊是很新的,但看起來 前途。這對於開發者更 強大的解決方案,因爲 讓您包含變量的字符串,正則表達式 等

希望它能幫助,我會在這裏發表評論,當我寫這段文章周。

+0

完成文章了嗎? ;) – 2014-02-06 12:27:09

+0

(3年後)我甚至不記得寫過這個http://goo.gl/ESjKw6 – corbacho 2014-02-07 08:59:47

0

您可以刪除

打印$消息

你的主題

弗洛姆page.tpl.php中,如果你不希望他們在所有的顯示。

但是,通常情況下,向用戶的操作提供反饋會更好。

2

您也可以嘗試使用Disable Messages模塊禁用向最終用戶顯示的特定消息。以下是其項目頁面的報價:

給予網站所有者選項以禁用向最終用戶顯示的特定消息。由drupal_set_message提供的核心drupal消息系統是模塊向最終用戶發送消息的絕佳方式。然而,並非所有的drupal網站所有者都熱衷於將drupal核心和所有模塊發出的所有消息展示給其用戶。該模塊爲網站管理員提供了一種相當有效的方法來過濾向最終用戶顯示的消息。

它的一些特點是:精確匹配一個完整的文本字符串

  • 篩選出的消息。
  • 過濾出與正則表達式匹配的郵件。
  • 權限專門隱藏任何角色給定類型的所有消息。
  • 禁用特定用戶的所有過濾。
  • 禁用特定路徑的所有過濾。
  • 僅對特定路徑應用過濾。
  • 調試系統在HTML中獲取消息而不顯示給最終用戶。