コンテンツの配列を変更して、追加のリンクを追加しようとしています。
私は$node->content
に新しいフィールドを追加しようとしています。別のフィールドをコピーして、もう一度表示することができました。そのフィールドのラベルは変更できましたが、リンク自体は変更できませんでした。
誰がどのように進めるかについて何か考えがありますか?
hook_node_view を実装することでこれを行うことができます。
例えば:
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;
}
}
Whiskyの回答はほとんどの場合機能しますが、URLの末尾にクエリ引数を追加しようとしても機能しませんでした。私の場合、次のようなURLを必要とする Entity Reference フィールドを事前に入力しています。
node/add/er-engagement?field_er_cal_entity_reference=19
ウイスキーの答えは、「html」が真か偽かにかかわらず、これを許可していないようです。
ただし、「#markup」属性は機能します。
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;
}
}
あなたがそこにそれらの議論が必要な場合、それはうまくいきます。ドキュメントは不足していますが、- この投稿のおかげで 、Drupal 7のblog.moduleを確認するのに役立ちます。手掛かりを得るために '#links'を検索してください。
クエリフラグメントを追加するには、オプションの配列内に配置するだけです。
$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)
),
);
これは次のようなURLを返します:node/add/er-engagement?field_er_cal_entity_reference = 13