2009-07-28 4 views
1

У меня есть список сотрудников в Drupal6.Как создать поле электронной почты в Drupal?

Мне нужно создать такой узел, чтобы поле электронной почты сотрудника отображалось как «Контакт [Первое слово поля полного имени]». При нажатии этой кнопки открывается сообщение mailto: //. Кстати, я знаю, что это не рекомендуемая процедура, потому что контактная форма или капчет будут более эффективными, но мой клиент этого желает.

Да, я использую модуль CCK и модуль электронной почты CCK.

Итак, у меня есть список сотрудников, использующих настраиваемый тип контента. У меня есть поле электронной почты, в котором используется модуль электронной почты CCK. Когда я показываю узел сотрудника, он просто показывает адрес электронной почты. Мой клиент хочет, чтобы он сказал: «Свяжитесь с Джонатаном», если сотрудник назван «Джонатан МакДэниелс» и т. Д. С каждым узлом каждого сотрудника. Когда нажимают «Связаться с Джонатаном» или «Связаться с Сарой», он должен делать обычную почту mailto: // гиперссылки.

ответ

0

Еще один способ сделать это с помощью PHP. Вы можете создать файл node.tpl.php в папке темы, скопировав это с гирляндой темы. В верхней части этого, однако, добавьте этот призыв:

require_once('node_hooks.php'); 

Теперь создайте файл node_hooks.php в папке тем. Это дает вам огромную мощность теперь на данном узле. Вы должны начать изучать переменную $, выполнив это в своем node_hooks.PHP файл:

<?php 
    print_r($node); 

Обновить страницу узла, а затем сделать View Source в вашем браузере на нем. Это покажет вам объект и каждый элемент массива внутри $ node.

В моем случае у меня был узел типа «штат», потому что это то, что я назвал его при его создании. У меня также было специальное поле CCK, называемое CCK Email, и использовало его для создания поля с именем 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 Модуль Link
  3. CCK маркеров модуля

К сожалению, модуль электронной почты CCK не решит эту проблему.

После копирования в сайты/все/модули и активации вы можете взять свой собственный тип контента для сотрудника и создать поле «Персонал электронной почты» как тип «Ссылка». Затем установите Название этой ссылке на статический заголовок и установить текст:

Contact [title] 

В Значение по умолчанию, установите сотрудников E-mail URL для:

mailto:[email protected] 

и установить текст справки для объяснения по умолчанию. Обратите внимание, если они вводят это неправильно без mailto :, тогда ссылка будет передана как узел, что неверно. Возможно, кто-то может подумать о крючке, чтобы проверить это на этом поле в PHP (или Javascript при загрузке формы) и поменять его на лету, если забыли.

Теперь, для использования только имени, а не полного имени, у вас есть пара вариантов. Вы можете использовать field_staff_firstname и field_staff_lastname (настраиваемые текстовые поля, которые вы создаете), а не использовать заголовок узла (иначе говоря, [название]). Другой маршрут - перехватить страницу на 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»

Надеюсь, что это поможет.

Ben

Смежные вопросы