web-dev-qa-db-ja.com

リンクを説明テキストに入れる方法は?

私のフィールドの説明では、より多くのドキュメントにリンクしたいと思います。私がこのようにすると:

$form['field_name'] = array (
  '#description' => t('Here are some words about') . ' <a href="http://mysite.com/blah">' . t('stuff') . '</a> ' . t('and things and whatnot'),
);

できます。次のようになります。

stuff についてのいくつかの単語と、物事とは何ですか。

私がそれを適切な方法で行うと、次のようになります:

$form['field_name'] = array (
  '#description' => t('Here are some words about @stuff and things and whatnot', array('@stuff' => l('stuff', 'blah')),
);

次に、HTMLが生成され、次のように生のテキストとして説明に出力されます。

ここでは、<a href="http://mysite.com/blah">もの</a>とそのこと、そして何についてではないかについていくつか説明します。

「正しい」方法が機能しないのはなぜですか?

4
beth

まず、ここにいくつかの方法があります[〜#〜]ではありません[〜#〜]リンクをt()関数に渡します。

// DO NOT DO THESE THINGS
$BAD_EXTERNAL_LINK = t('Look at Drupal documentation at !handbook.', array('!handbook' => '<a href="http://drupal.org/handbooks">'. t('the Drupal Handbooks') .'</a>'));

$ANOTHER_BAD_EXTERNAL_LINK = t('Look at Drupal documentation at <a href="http://drupal.org/handbooks">the Drupal Handbooks</a>.');

$BAD_INTERNAL_LINK = t('To get an overview of your administration options, go to !administer in the main menu.', array('!administer' => l(t('the Administer screen'), 'admin'));

そして、これらは、そのタイプの引数をtoに渡す方法として受け入れられています:

// Do this instead.
$external_link = t('Look at Drupal documentation at <a href="@drupal-handbook">the Drupal Handbooks</a>.', array('@drupal-handbook' => 'http://drupal.org/handbooks'));

$internal_link = t('To get an overview of your administration options, go to <a href="@administer-page">the Administer screen</a> in the main menu.', array('@administer-page' => url('admin')));

これはすべて 動的リンクまたは静的リンク、および翻訳可能な文字列のHTML から来ています。

6
Clive