drupal-使用hook_preprocess_field在paragraph的accordion中添加自定義數據

描述:個人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

相關文章
相關標籤/搜索