描述:個人accordion類型原先只有兩個字段,分別是title和content。顯示在頁面上會默認隱藏其內容,點擊「+」會顯示內容。然而如今有一個新需求,就是加一個開關使編輯內容者能夠選擇默認「展開」或「不展開」。html
1.在drupal8後臺添加一個新字段前端
1.1 在/admin/structure/paragraphs_type/accordion/fields下加一個字段,我命名爲Open,類型爲Boolean。
函數
1.2 在/admin/structure/paragraphs_type/accordion/form-display下,字段屬性以下spa
該頁面的配置對應着編輯者添加編輯時的頁面結構code
1.3 在/admin/structure/paragraphs_type/accordion/display下,字段屬性以下orm
該頁面的配置對應着用戶可看見的頁面的內容結構,這裏咱們不該該讓用戶看見新字段的內容,因此須要Disabled。htm
2.字段添好了,我須要在前臺頁面獲取到隱藏字段的值並將它加到div標籤中,最後效果以下所示blog
在one.theme中,使用hook_preprocess_field,根據命名規則,以及根據調查可知這個div標籤是在paragraph.html.twig中輸出的,我須要經過hook將獲 取到的字段值加入到「attributes」中。因此函數命名爲one_preprocess_paragraph,"one"是項目名,paragraph是和上面的paragraph.html.twig對應。這個名字是唯一的,不能隨意命名。get
1 function one_preprocess_paragraph(&$variables) { 2 if ($variables['paragraph']->getType() == 'accordion') { 3 $array = $variables['paragraph']->toArray(); 4 if (isset($array['field_is_expanded'])) { 5 $variables['attributes']['data-is-expanded'] = $array['field_is_expanded'][0]['value']; 6 } 7 } 8 }
3.個人工做完成了,接下來就由前端根據div標籤中的值來調整頁面了。it