Wie kann ich Variablen ändern, die innerhalb eines Moduls an eine Absatzbündelvorlage gesendet werden?

7

Ich muss die Feldwerte eines Absatzbündels vorverarbeiten, um zusätzliche Variablen an die Vorlage zu "senden" (Absatz-Element - xxxx - full.tpl.php). Ich möchte vermeiden, dass zu viel PHP-Logik in die Absatzvorlage eingefügt wird.

Ich suche nach etwas, das dem node_view-Hook für ein Absatzelement ähnlich ist. Gibt es einen Montagemechanismus oder vielleicht ein Modul, das einen solchen Haken bereitstellt?

Nils
quelle

Antworten:

11

Drupal 7

Ich weiß nicht, ob dies Ihnen direkt helfen wird, aber ich habe dieses Code-Snippet auf DropBucket gefunden und es hat mir geholfen, etwas Ähnliches zu tun:

/**
 * 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';
    }
  }
}

In meinem Anwendungsfall wollte ich die Absatzentität mit einer ID erweitern, indem ich die url-sichere Version des in diesem Absatz verwendeten Titelfelds verwendete. Hier ist meine Implementierung:

/**
 * 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;
    }
  }
}

Ich hoffe das ist hilfreich!

Davidneedham
quelle
6

Drupal 8

In Drupal 8 können Sie Folgendes verwenden hook_preprocess_HOOK:

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

}

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

}
Israel Morales
quelle