2009-07-28 3 views
1

私はDrupal6のスタッフメンバーのリストを持っています。Drupalで電子メールフィールドのスタイルを設定するにはどうすればいいですか?

スタッフの電子メールフィールドが「連絡先[フルネームフィールドの最初の単語]」として表示されるようにノードをスタイルする必要があります。これをクリックすると、mailto://リンクが開きます。ところで、私は連絡フォームやキャプチャがより効果的だと思うので、それは推奨された手順ではないが、私のクライアントはそれを望んでいる。

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

再び、カスタムコンテンツタイプを使用しているスタッフのリストがあります。私はそこにCCK Emailモジュールを使って電子メールフィールドを持っています。スタッフのノードを表示すると、電子メールアドレスが表示されます。私のクライアントは、スタッフが「Jonathan McDaniels」という名前の場合は「Contact Jonathan」とし、スタッフの各ノードでも同様とします。 「Contact Jonathan」または「Contact Sara」をクリックすると、通常のmailto://ハイパーリンクの処理が行われます。

答えて

0

これを行うもう1つの方法はPHPです。テーマフォルダにnode.tpl.phpというファイルを作成し、garlandテーマからコピーしてください。その上で、しかし、この呼び出しを追加:

require_once('node_hooks.php'); 

は、今すぐあなたのテーマフォルダに node_hooks.phpファイルを作成します。これにより、特定のノードで大きなパワーが得られます。 node_hooksで$ノード変数を学習することから始める必要があります。PHPファイル:

<?php 
    print_r($node); 

は、ノード・ページを更新し、それにブラウザでソースの表示を行います。これは$ nodeの中のオブジェクトと各配列要素を表示します。

私のケースでは、それは私がそれを作成するときにそれを呼んだので、私は 'staff'型のノードを持っていました。 CCK Emailという特別なCCKフィールドもあり、field_staff_emailという名前のフィールドを作成するために使用しました。これは[email protected]のような値を格納していました。だから、このために、私は、検索を行うと、私が代わりにメールアドレスの「連絡先ジョナサン」を得るように、コンテンツに置き換えるために私のnode_hooks.phpファイルにこれを追加することができます。

<?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); 
} 
0

独自のPHPコードなしで、純粋のDrupalの内部でこの問題を解決するには、あなたがDrupalの6にこれらのモジュールが必要になります。

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

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

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

Contact [title] 

にスタッフの電子メールのURLを設定します。

mailto:[email protected] 

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

ここで、フルネームの代わりにファーストネームだけを使用する場合は、カップルの選択肢があります。 field_staff_firstnameとfield_staff_lastname(作成するカスタムテキストフィールド)を使用し、ノードのタイトル(別名[title]トークン)を使用することはできません。もう1つの方法は、このノード要素を探してそれを傍受し、Contact +ファーストネームだけを表示して、フォームロード時にPHPまたはJavascriptでページをフックすることです。

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"と呼ばれました

ベン