1

Drupal6 のスタッフ メンバーのリストがあります。

スタッフ メンバーの電子メール フィールドが「連絡先 [氏名フィールドの最初の単語]」と表示されるように、ノードのスタイルを設定する必要があります。クリックすると、mailto:// リンクが開きます。ところで、お問い合わせフォームまたはキャプチャの方が効果的であるため、推奨される手順ではないことはわかっていますが、クライアントはそれを望んでいます。

はい、CCK モジュールと CCK Email モジュールも使用しています。

ここでも、カスタム コンテンツ タイプを使用するスタッフ メンバーのリストがあります。CCK 電子メール モジュールを使用して、そこに電子メール フィールドがあります。スタッフ メンバーのノードを表示すると、メール アドレスだけが表示されます。私のクライアントは、スタッフ メンバーの名前が「Jonathan McDaniels」の場合、「Contact Jonathan」と言うようにしたいと考えています。各スタッフ メンバーの各ノードについても同様です。「ジョナサンに連絡」または「サラに連絡」をクリックすると、通常の mailto:// ハイパーリンクが実行されます。

4

3 に答える 3

0

独自のPHPコードを使用せずに純粋にDrupal内でこの問題を解決するには、Drupal6で次のモジュールが必要になります。

  1. CCKモジュール
  2. CCKリンクモジュール
  3. CCKトークンモジュール

残念ながら、CCK電子メールモジュールはこの問題を解決しません。

サイト/すべて/モジュールにコピーしてアクティブ化したら、スタッフメンバーのカスタムコンテンツタイプを取得し、「リンク」のタイプとして「スタッフの電子メール」フィールドを作成できます。次に、そのリンクのタイトルを静的タイトルに設定し、テキストを次のように設定します。

Contact [title]

デフォルト値で、スタッフの電子メールURLを次のように設定します。

mailto:test@test.com

また、デフォルトのフォーマット要件を説明するヘルプテキストを設定します。mailto:なしでこれを間違って入力した場合、リンクはノードとして渡されてしまうことに注意してください。これは正しくありません。おそらく誰かが、PHPのこのフィールド(またはフォームの読み込み時のJavascript)でこれをテストし、忘れた場合はその場で交換するためのフックを考えることができます。

現在、フルネームの代わりにファーストネームのみを使用するために、いくつかの選択肢があります。field_staff_firstnameとfield_staff_lastname(作成するカスタムテキストフィールド)を使用できますが、ノードのタイトル(別名[title]トークン)は使用できません。もう1つの方法は、フォームの読み込み時にPHPまたはJavascriptでページをフックし、このノード要素を探してインターセプトし、連絡先+名のみを表示することです。

于 2009-07-29T02:15:07.033 に答える
0

cck フィールドを mailto リンクに変えようとするのと同じ問題がありました。この投稿を見つけましたが、別のかなり簡単な方法を見つけました。これは、cck テーマ テンプレート content-field.tpl.php をオーバーライドすることによって行われます。これはフィールド値を出力するテンプレートなので、これを編集して必要な値を更新できます。テンプレートを自分のテーマ フォルダーにコピーし (オリジナルを上書きしないでください)、次の行を置き換えます。

          <?php print $item['view'] ?>

(これは私のテンプレートの 42 行目でした)、次のように:

             <?php
         // new lines for email field to turn it into a mailto link
         ?>
         <?php if ($field_name=='field_email') : ?>
            <?php // print_r($item);?>
            <?php print "<a href='mailto:" . $item['value'] . "'>". $item['value'] ."</a>"; ?>
        <?php else : ?>
        <?php
        // original line
        ?>
      <?php print $item['view'] ?>
        <?php endif; ?>
        <?php
        // end edit
        ?>

この例では、私のフィールドは「field_email」と呼ばれていました

お役に立てれば。

ベン

于 2010-03-11T10:38:11.053 に答える
0

これを行うさらに別の方法は、PHP を使用することです。ガーランドテーマからこれをコピーして、テーマ フォルダにファイルnode.tpl.phpを作成できます。ただし、その先頭に次の呼び出しを追加します。

require_once('node_hooks.php');

次に、themes フォルダーにファイルnode_hooks.phpを作成します。これにより、特定のノードに対して非常に大きな力が得られます。node_hooks.phpファイルでこれを行うことにより、 $node変数の学習を開始する必要があります。

<?php
    print_r($node);

ノード ページを更新してから、ブラウザで [View Source] を実行します。これにより、$node 内のオブジェクトと各配列要素が表示されます。

私の場合、「スタッフ」タイプのノードがありました。これは、作成時にそれを呼んだためです。また、CCK Email という特別な CCK フィールドがあり、それを使用してfield_staff_emailという名前のフィールドを作成しました。これは、jonathan@test.com のような値を格納していました。このため、これをnode_hooks.phpファイルに追加してコンテンツを検索および置換し、電子メール アドレスの代わりに「Jonathan に連絡」を取得することができます。

<?php

if ($node->type == 'staff') {
    adjustStaffContactField($node, $content);
}

function adjustStaffContactField(&$node,&$content) {
    $asWords = explode(' ',$node->title);
    $sContact = htmlentities(strip_tags($asWords[0]));
    $sContact = trim($sContact);
    $sContact = "Contact $sContact";
    $sLink = $node->field_staff_email[0]['email'];
    $sContact = "<a href='mailto:$sLink'>$sContact</a>";
    $sLookingFor = "<a href=\"mailto:$sLink\">$sLink</a>";
    $content = str_replace($sLookingFor, $sContact, $content);
}
于 2009-07-29T03:56:13.747 に答える