2013/03/06

extra mező - létrehozás, - tartalom és - smink


források:
http://www.treehouseagency.com/learn/view-modes/extra-fields
http://api.drupal.org/api/drupal/modules!field!field.api.php/function/hook_field_extra_fields/7

Extra field létrehozás:

/**
 * Implements hook_field_extra_fields().
 */

function extra_fields_field_extra_fields() {

  $extra_fields = array();
  foreach (node_type_get_types() as $type) {

        $entity_type = 'node'; // 'node'; taxonomy_term, commerce_product, etc.
    $bundle = $type->type; // 'article', 'news', etc. - ha csak egy típusra kell akkor nem is kell a foreach és lehet statikus.
    $extra[$entity_type][$bundle] = array( // akár lehet dirkt 'node' is.
      'display' => array(
        'mezo_1' => array(
          'label' => t('Post Date'),
           'description' => t('valami'),
          'weight' => -5,
          'visible' => FALSE,
        ),
        'mezo 2' => array(
          'label' => t('Author'),
           'description' => t('valami'),
          'weight' => -3,
          'visible' => FALSE,
        ),
      ),
    );
    if ($type->has_title) {
      $extra[$entity_type][$type->type]['display']['title'] = array(
        'label' => t('Extra field: !title', array('!title' => $type->title_label)),
        'weight' => -4,
        'visible' => FALSE,
      );
    }
  }
  return $extra;
}

Tartalom belepakolás:

/**
 * Implements hook_node_view().
 * itt jön be, hogy miért hívtam $entity_type-nak. Mert azt a hook_<$entity_type>_view() kell implementálni.
 * pl.. hook_taxonomy_term_view, atc.
 */

function extra_fields_node_view($node, $view_mode, $langcode) {
  // érdemes filterezni $view_mode-ra, ha nem akarjuk mindegyiok displayünkön használni.
  $node->content['mezo_1'] = array(
'#markup' => '',
      '#view_mode' => $view_mode,
      '#theme' => 'extra_fields_title',    );
  // only return this in a non-full page situation
  if (!in_array($view_mode, array('default', 'full'))) {
    $node->content['title'] = array(
'#markup' => '',
      '#view_mode' => $view_mode,
      '#theme' => 'extra_fields_title',
    );    

  }
  $node->content['mezo 2'] = array(
    '#theme' => 'extra_fields_author',
    '#node' => $node,
    '#view_mode' => $view_mode,
  );
}

Sminkelés:

function theme_extra_fields_title($variables) {
  $node = $variables['node'];
  $view_mode = $variables['view_mode']; // itt is lehet view módonként eltérő html-t köré tenni
  $output = '
'
;
  $output .= date('F j, Y', $node->created);
  $output .= '
';
  return $output;
}