it-swarm-tr.com

Hook_node_view () içindeki düğümü Drupal 7) için değiştirin

İçerik dizisini değiştirmeye ve fazladan bir bağlantı eklemeye çalışıyorum.

  • Link modülünü kullanmak istemiyorum; Bu bağlantı diğer alanlarla oluşturulacaktır, bu Hesaplanmış Alan modülü gibi bir şeydir (Drupal 7 için geliştirme aşamasındadır ve kullanmak istemem).
  • Sadece node.tpl.php HTML/PHP eklemek istemiyorum. Bunun Güzel bir çözüm olmasını istiyorum.

$node->content Alanına yeni alan eklemeyi deniyorum. Başka bir alanı kopyalamayı ve bir kez daha görüntülemeyi başardım. Bu alanın etiketini değiştirebildim, ancak bağlantının kendisini değiştiremedim.

Nasıl ilerleyeceği konusunda bir fikri olan var mı?

4
wtk

Bunu hook_node_view uygulayarak yapabilirsiniz.

Örneğin:

function my_module_node_view($node, $view_mode, $langcode) {
  switch ($node->type) {
    case 'my_node_type':
      $node->content['extra_link'] = array(
          '#weight' => 10,
          '#theme' => 'link',
          '#path' => 'path_to_content',
          '#text' => t('An extra link'),
          '#options' => array(
              'attributes' => array(),
              'html' => FALSE
          ),
      );
      break;
  }
}
9
Whiskey

Whisky'nin cevabı çoğu zaman işe yarayacak, ancak URL'nin sonuna sorgu bağımsız değişkenleri eklemeye çalışıyorsanız işe yaramadı. Benim durumumda, aşağıdaki gibi görünen bir URL'ye ihtiyaç duyan bir Entity Reference alanını önceden dolduruyorum:

node/add/er-engagement?field_er_cal_entity_reference=19

Whiskey'in cevabı, 'html' DOĞRU veya YANLIŞ olsun, buna izin vermiyor gibi görünüyor.

Bununla birlikte, '#markup' özelliği çalışır.

function hook_node_view($node, $view_mode, $langcode){
  switch ($node->type) {
      case 'er_event':
        $node->content['links']['extra_link'] = array(
            '#weight' => 100, // place it at the bottom
            '#markup' => l('Add attendee data', 'node/add/er-engagement', array('query' => array('field_er_cal_entity_reference' => $node->nid))),
        );
        break;
}

}

Orada bu argümanlara ihtiyacınız varsa, bu harika çalışıyor. Doküman eksik, ancak bu yazı sayesinde , Drupal 7'nin blog.module'üne göz atmaya yardımcı oluyor, sadece bir ipucu almak için '#links' araması yapın.

3
mikeDOTexe

Sorgu parçası eklemek için sadece seçenek dizisinin içine yerleştirin:

$node->content['links']['extra_link'] = array(
    '#weight' => 10,
    '#theme' => 'link',
    '#path' => 'node/add/er-engagement',
    '#text' => t('Add attendee data'),
    '#options' => array(
        'html' => FALSE,
        'query' => array('field_er_cal_entity_reference' => $node->nid)
    ),
);

Bu, şöyle bir URL döndürür: node/add/er-engagement? Field_er_cal_entity_reference = 13

1
Aronne