2017-08-17 104 views
0

我們有一個現有的自定義模塊,用於創建內容類型和視圖的Drupal 8應用程序。 「新聞」模塊在我們的生產環境中運行良好;使用它創建了許多內容。Drupal 8 hook_update_n代碼示例需要

現在要求增強功能:2個新字段和對視圖的更改。我在我們的開發環境中使用管理界面進行了更改,但我需要將這些更改放入模塊的代碼進行版本控制,以便在新的站點實例中,不需要記住在安裝模塊後進行UI更改。

 
The fields: 
field_show_on_page, Field Type: List (text) 
field_news_dateline, Field Type: Date 
View: 
The change in the view is on what field the sorting is done. 

這將是簡單的導出的字段和視圖配置,將其添加到模塊>配置>安裝文件夾,但被拾起的變化,需要卸載並重新安裝模塊,可」沒有必要刪除新聞內容,這是不可接受的。

我明白可以在news.install文件中的hook_update_N中完成更改。但是我找不到這個功能足夠接近這個需求的例子。我明白這個函數應該寫成:

news_update_8001() {}
但是在內容中會添加兩個字段並更新視圖?

謝謝。

回答

0

如果您有新的領域在你的配置你可以通過在你的鉤子添加該刪除舊的字段,然後運行drush updb導入配置之前:

$field = \Drupal::entityTypeManager()->getStorage('field_config')->load('node.news.old_field'); 
if ($field) { 
    $field->delete(); 
} 
+0

謝謝你,但我不需要刪除任何字段,只需添加兩個新字段。有沒有辦法添加字段配置並在hook_update_N中引用它們以便拾取?這是如何完成的? 另外,如何更新視圖? –

+0

你使用的功能或Drupal配置導入/導出? –

+0

我正在使用導出的兩個字段和視圖。 –