Làm cách nào tôi có thể thay đổi các biến được gửi đến một mẫu gói đoạn trong một mô-đun?


7

Tôi cần xử lý trước các giá trị trường của gói đoạn văn để "gửi" các biến bổ sung vào mẫu (đoạn văn-mục - xxxx - full.tpl.php). Tôi muốn tránh đưa quá nhiều logic php vào mẫu đoạn văn.

Tôi đang tìm kiếm một cái gì đó tương tự với hook_view cho một mục đoạn văn. Có một cơ chế phù hợp hoặc maybee một mô-đun cung cấp một hook như vậy?

Câu trả lời:


11

Drupal 7

Tôi không biết điều này có giúp bạn trực tiếp không, nhưng tôi đã tìm thấy đoạn mã này trên DropBucket và nó đã giúp tôi làm điều gì đó tương tự:

/**
 * Implements hook_preprocess_entity().
 */
function wwvs_slices_preprocess_entity(&$variables) {
  if ($variables['entity_type'] == 'paragraphs_item') {
    $edge = field_get_items('paragraphs_item', $variables['paragraphs_item'], 'field_edge');
    if ($edge && $edge[0]['value']) {
      $variables['classes_array'][] = 'slice--edge';
    }
  }
}

Trong usecase của tôi, tôi muốn tăng thực thể đoạn bằng ID bằng phiên bản an toàn url của trường tiêu đề được sử dụng trong đoạn đó. Đây là cách thực hiện của tôi:

/**
 * Implements hook_preprocess_entity().
 */
function foo_preprocess_entity(&$variables) {
  if ($variables['entity_type'] == 'paragraphs_item') {
    if(isset($variables['elements']['pp_title']['#items'][0]['value'])){
      $title = $variables['elements']['pp_title']['#items'][0]['value'];
      $title = strtolower(drupal_clean_css_identifier($title));
      $variables['attributes_array']['id'] = $title;
    }
  }
}

Tôi hy vọng điều này là hữu ích!


6

Drupal 8

Trong Drupal 8, bạn có thể sử dụng hook_preprocess_HOOK:

/**
 * Implements hook_preprocess_HOOK().
 */
function MYTHEME/MYMODULE_preprocess_paragraph(&$variables) {

}

/**
 * Implements hook_preprocess_HOOK().
 */
function MYTHEME/MYMODULE_preprocess_paragraph__TYPE(&$variables) {

}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.