2016-01-19 57 views
1

我有一個字段添加到基本頁面的內容類型。它是一個選擇框,根據頁面是否是「入門」類型,該框可以選中或取消選中。如果頁面是入門頁面,即希望檢查該框,我想將該類別的「入門」添加到html中的body元素。我想在.theme文件中執行此操作。所以基本上我想檢查一下,看看這個字段是否爲空,以及它是否將這個類添加到body元素中。任何幫助將非常感激。如何檢查drupal 8中的字段是否爲空?

回答

0

您可以使用template_preprocess_node(https://api.drupal.org/api/drupal/core%21modules%21node%21node.module/function/template_preprocess_node/8)函數來選取正在加載的節點的可用變量。

在此功能中,你可以像這樣訪問節點的字段:

$variables['content']['field_some_name'] 

如果檢查通過,你可以添加一些自定義變量在樹枝模板中使用:

$variables['something'] = true; 

OR:您直接在節點樹枝模板中檢查該字段的值。問題是,如果真的有必要將所需的類添加到body元素。也許將它添加到節點的文章標籤中可以完成這項工作,至少可以更容易地檢查。

如果你真的需要把它添加到body元素,我想你需要使用template_preprocess_page功能,首先檢查是否正在加載的頁面是一個節點,然後找出哪些節點等

+0

不幸的是,我不得不將該類添加到body元素,因爲我需要根據我檢查的字段的值更改頁面標題的顏色。我熟悉在'template_preprocess_page'函數中向主體添加類的過程,但我不熟悉在響應的後半部分中描述的方式和原因,「首先檢查頁面被加載的是一個節點,然後找出哪個節點等「。 – ljolz

+0

我不能只是檢查字段是否設置了上面取樣的代碼,然後將所有類應用於預處理頁面函數中? – ljolz

+0

「問題」是在所有頁面上調用template_preprocess_page,而不僅僅是節點,例如,在分類頁面,頭版或任何其他自定義實體頁面上。所以$變量變量並不總是相同的。這就是我的意思,「首先檢查被加載的頁面是否爲節點,然後找出哪個節點等。」 –

4

要檢查字段是否爲空,可以使用內置方法isEmpty()

例如爲:

if (!$entity->get('category')->isEmpty()) { 
    /** @var EntityInterface $category */ 
    $category = $entity->get('category')->entity; 
    $row['category']['data'] = [ 
    '#type' => 'link', 
    '#title' => $category->get('name')->value, 
    '#url' => $category->toUrl(), 
    ]; 
} 
else { 
    $row['category'] = NULL; 
} 
0

以下方法可以檢查該字段爲空或不TWIG模板。

{% if node.field_date.value %} 
    <div class="my-field-wrapper"> 
    {{ content.field_date }} 
    </div> 
{% endif %} 

{% if node.field_date.value is not empty %} 
    {{ content.field_date }} 
{% endif %} 
0

該解決方案爲我工作,在field_poster現在沒有或最高值1。

{% if content.field_poster[0] is not empty %}