it-swarm.com.de

Was ist der beste Weg, um Felder mit Display Suite vorzuverarbeiten?

Ich verwende Display Suite mit Drupal Commerce) und muss einige Felder in meiner Produktanzeige vorverarbeiten. Ich muss einige Werte basierend auf bestimmten Bedingungen ändern und einige umbrechen Felder in einem Markup. Sollte ich einen Hook schreiben, um die Werte vorzuverarbeiten und zu ändern, und eine Vorlage verwenden, um die Felder in Markup zu verpacken? Wenn ja, welche Vorlagendatei würde ich verwenden, weil DS = kommt mit ein paar Vorlagen.

4
vintorg

Sie können Ihr Feld auf Themenebene anpassen, indem Sie die Funktion TEMPLATE_preprocess_field () unter template.php Verwenden.

Sie können einen Feldwert erhalten, indem Sie das Objekt node oder die Werte field selbst abrufen. Sie können so etwas tun, um den Feldwert nach Knotenobjekt abzurufen.

function MYTHEME_preprocess_field(&$vars) { //Replace your theme name MYTHEME here.
  if ($node = menu_get_object()){
    if($node->type == 'PRODUCT_DISPLAY'){//Use your product display name here.
      $vars['node'] = $node;
      $product_id = $node->FIELD_PRODUCT_REFERENCE[LANGUAGE_NONE][0]['product_id'];//Use your product ref field name here.
      $product = commerce_product_load($product_id);
      $manufacturer = $product->FIELD_PRODUCT_MANUFACTURER[LANGUAGE_NONE][0]['value'];//Use your field name of product type here.
      $final_body_label = "Description by ".$manufacturer;

      //Set body label for node from here itself.
      $node->content['body']['#label_display'] = $final_body_label;

      //Or set a variable to use it further. 
      $$vars['manufacturer_description'] = $final_body_label;
  }
}

Außerdem können Sie Ihre Standardvorlage für Knoten oder Seiten verwenden, wenn sie Ihren Anforderungen entspricht, oder Sie können separate TPL für Felder erstellen, die wie field--field_image.tpl.php Benannt werden, wobei field_image ist der Feldname Ihres Inhalts oder Produkts.

Sie erhalten standardmäßig field.tpl In $ base_path/modules/field/theme.

7
RajeevK