2009-07-28 5 views
1

Drupal6에 직원 목록이 있습니다.Drupal에서 전자 메일 필드의 스타일을 지정하는 방법은 무엇입니까?

직원의 전자 메일 필드가 "연락처 [전체 이름 필드의 첫 번째 단어]"로 표시되도록 노드 스타일을 지정해야합니다. 이를 클릭하면 mailto : // 링크가 열립니다. BTW, 연락처 양식이나 보안 문자 (captcha)가 더 효과적 일 것이기 때문에 권장 절차가 아니라는 것을 알고 있습니다. 그러나 고객이 그것을 원합니다.

예, 저는 CCK 모듈과 CCK 이메일 모듈도 사용하고 있습니다.

다시 말해 사용자 지정 콘텐츠 형식을 사용하는 직원 목록이 있습니다. CCK 이메일 모듈을 사용하여 이메일 필드가 있습니다. 직원의 노드를 표시하면 전자 메일 주소가 표시됩니다. 고객은 "Jonathan McDaniels"라는 직원의 이름을 "Jonathan에 문의하십시오."라고 말하고 싶습니다. 각 직원의 각 노드에 대해서도 마찬가지입니다. "Contact Jonathan"또는 "Contact Sara"를 클릭하면 일반 mailto : // 하이퍼 링크 항목을 수행해야합니다.

  1. CCK 모듈
  2. CCK 링크 모듈
  3. CCK 토큰 모듈 :

답변

0

이렇게하는 또 다른 방법은 PHP입니다. 테마 폴더에 node.tpl.php 파일을 만들고 garland 테마에서 복사 할 수 있습니다. 그것의 상단에, 그러나,이 호출을 추가

require_once('node_hooks.php'); 

지금 당신의 테마 폴더에 node_hooks.php 파일 을 만듭니다. 이렇게하면 주어진 노드에서 엄청난 힘을 얻을 수 있습니다. node_hooks에서 $ 노드 변수를 학습해야합니다.PHP 파일 :

<?php 
    print_r($node); 

이 노드 페이지를 새로 고침 한 다음에 브라우저에서 소스보기를 할. 이것은 $ node 안에있는 객체와 각 배열 요소를 보여줍니다.

내 경우에는 그것을 만들 때 그것을 부르는 'staff'유형의 노드가 있습니다. 또한 CCK 전자 메일이라는 특별한 CCK 필드가 있었고 field_staff_email이라는 필드를 만드는 데 사용되었습니다. 이것은 [email protected]과 같은 값을 저장하고있었습니다.

<?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

당신은 드루팔 6에서 이러한 모듈이 필요합니다, 당신의 자신의 PHP 코드없이 드루팔의 내부 순수하게이 문제를 해결하려면

CCK 이메일 모듈은이 문제를 해결하지 못합니다.

사이트/전체/모듈에 복사 한 다음 활성화하면 직원 구성원에 대한 사용자 지정 콘텐츠 형식을 가져 와서 "Link"유형으로 필드 직원 전자 메일을 만들 수 있습니다. 그런 다음, 정적 제목에 링크의 제목을 설정하여 텍스트 설정 : 기본 값에서

Contact [title] 

를하는 직원 이메일 URL 설정 :

mailto:[email protected] 

을 그리고 설명하는 도움말 텍스트를 설정 기본 형식 요구 사항. mailto :없이이 명령을 잘못 입력하면 링크가 노드로 전달되어 결국 올바르지 않게됩니다. 아마도 누군가는 PHP (또는 양식로드시 Javascript)에서이 필드를 테스트하기 위해 후크를 생각해보고 잊어 버리면 즉시 교체 할 수 있습니다.

이제 전체 이름 대신 첫 번째 이름 만 사용하려면 몇 가지 선택 사항이 있습니다. field_staff_firstname 및 field_staff_lastname (사용자가 만든 텍스트 필드)을 사용하고 노드의 제목 (일명 [title] 토큰)을 사용할 수 없습니다. 또 다른 방법은 폼로드시 PHP 또는 자바 스크립트로 페이지를 연결하고,이 노드 요소를 찾고, 가로 채고, Contact + 이름 만 표시하는 것입니다.

0

내가 가진 : 그래서,이 때문에, 나는 검색을하고 나는 "연락처 조나단"을 얻을 수 있도록 콘텐츠에 대체 대신 이메일 주소로 내 node_hooks.php에 파일을이를 추가 할 수 있습니다 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"이라고 불렸습니다.

희망이 있습니다.

관련 문제