2009-07-28 111 views
1

我有一個Drupal6職員列表。如何在Drupal中設置電子郵件字段的樣式?

我需要設置一個節點的樣式,以使工作人員的電子郵件字段顯示爲「聯繫人[全名字段的第一個字]」。點擊它會導致一個mailto://鏈接打開。順便說一句,我知道這不是一個推薦的程序,因爲聯繫表格或驗證碼會更有效,但我的客戶需要它。

是的,我也使用CCK模塊和CCK電子郵件模塊。

因此,我有一個使用自定義內容類型的職員列表。我在那裏使用CCK電子郵件模塊的電子郵件字段。當我顯示職員的節點時,它只顯示電子郵件地址。我的客戶想讓工作人員在每個工作人員的每個節點都被稱爲「聯繫喬納森」,如果該工作人員被命名爲「喬納森麥克丹尼爾斯」等。當點擊「聯繫喬納森」或「聯繫薩拉」時,它應該執行普通的mailto://超鏈接的東西。

回答

0

另一種方法是使用PHP。您可以在您的主題文件夾中創建一個文件node.tpl.php,從花環主題複製此文件。在它的頂部,但是,添加以下調用:

require_once('node_hooks.php'); 

現在建立在你的主題文件夾中的文件node_hooks.php。這給你一個給定節點的巨大力量。您應該開始通過在您的node_hooks中執行此操作來了解$ node變量。PHP文件:

<?php 
    print_r($node); 

刷新頁面節點,然後在其瀏覽器中做了查看源文件。這將向您顯示$ node內的對象和每個數組元素。

在我的情況下,我有一個'職員'類型的節點,因爲這就是我創建它時所調用的。我還有一個名爲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

純粹解決此問題的Drupal裏面沒有自己的PHP代碼,你將在Drupal 6需要這些模塊:

  1. CCK模塊
  2. CCK鏈接模塊
  3. CCK令牌模塊

不幸的是,CCK電子郵件模塊不能解決這個問題。

一旦複製到網站/所有/模塊並激活,然後您可以爲工作人員採取您的自定義內容類型,並創建一個字段員工電子郵件作爲一種「鏈接」。然後,設置鏈接到靜態標題的標題和文本設置爲:

Contact [title] 

在默認值,設置員工郵箱網址:

mailto:[email protected] 

,並設置幫助文本解釋默認格式要求。請注意,如果他們在沒有mailto的情況下輸入此錯誤,則鏈接將最終作爲節點傳遞,這是不正確的。也許有人可以想到一個鉤子來測試PHP中的這個字段(或者表單加載的Javascript)上的這個字段,並且在被遺忘的時候將其交換。

現在,只有使用名字而不是全名,你有幾個選擇。您可以使用field_staff_firstname和field_staff_lastname(您創建的自定義文本字段),而不使用節點的標題(又名[title]標記)。另一種方法是在頁面上加載PHP或者在頁面加載Javascript,查找這個節點元素,攔截它,並且只顯示Contact +名字。

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」

希望這會有所幫助。

相關問題