0

私はいくつかのカスタムコンテンツタイプを持っており、1つの特定のフィールドで2つのフィールドを提供する必要があります。1つはリンクのhref用で、もう1つはリンクのテキスト用です。 CSS。このコンテンツタイプ用のカスタムnode.tplもあります。私の問題は、drupalが、このコンテンツタイプ(node-custom.tpl)のテンプレートファイルにない、作成した各フィールドの周りにdivをスローし、その周りにdivがあるリンクのhrefを内部に配置できないことです<a href="<div id="something">google.co.uk</div>"></a>。問題を参照してください。 。たぶん私はこれをすべて間違っているので、他のアイデアは大歓迎です。

ユーザーのHTML/CSSアクセスを最小限に抑えてこのサイトを作成しようとしていることに注意してください。私は、フィールドでリンクを手動でコーディングできることを知っています。

4

1 に答える 1

1

これを行う最も簡単な方法は、template.phpファイルで前処理関数を使用し、リンクを手動で構築することです。

function mytheme_preprocess_node(&$vars) {
  $node = $vars['node'];
  if ($node->type = 'my_type') {
    $uri = $node->field_name_of_link_field[LANGUAGE_NONE][0]['value'];
    $text = $node->field_name_of_display_text_field[LANGUAGE_NONE][0]['value']; 
    $vars['my_link'] = l($text, $uri); // Using Drupal's l() function to render a link
  }   
}

$my_link次に、ノードテンプレートファイルで、どこにでも出力できる変数にアクセスでき、リンクの正しいHTMLが含まれます。最後に、コンテンツタイプの[表示の管理]ページに移動し、出力する必要がなくなった2つのフィールドの表示を[非表示]に設定します。

他の方法もあるので、それが良くない場合は私に知らせてください

編集

追加するだけで、これを行う最も簡単な方法は、実際にはLinkモジュールをインストールし、現在使用している他の2つのフィールドの代わりに提供されたフィールドタイプを使用することだと思います。

于 2011-11-09T18:17:23.047 に答える