Создание поля ссылки в пользовательском типе контента - PullRequest
0 голосов
/ 09 ноября 2011

У меня есть несколько пользовательских типов контента, и в одном конкретном мне нужно предложить два поля, одно для ссылки для ссылки и одно для текста ссылки, таким образом, я могу создать и стилизовать его с минимальным участием пользователя.HTML / CSS.У меня также есть собственный node.tpl для этого типа контента.Моя проблема в том, что drupal бросает div вокруг каждого поля, которое я создаю, и которого нет в моем файле шаблона для этого типа контента (node-custom.tpl), и я не могу поместить ссылку для ссылки с div внутри нее <a href="<div id="something">google.co.uk</div>"></a>Смотри мою проблему.Может быть, я делаю все это неправильно, поэтому любые другие идеи приветствуются.

Обратите внимание, что я пытаюсь создать этот сайт с минимальным привлечением пользователя к HTML / CSS-доступу.Я знаю, что мог бы вручную кодировать ссылку в поле.

1 Ответ

1 голос
/ 09 ноября 2011

Самый простой способ сделать это - использовать функцию препроцессора в файле template.php и создать ссылку вручную:

function mytheme_preprocess_node(&$vars) {
  $node = $vars['node'];
  if ($node->type = 'my_type') {
    $uri = $node->field_name_of_link_field[LANGUAGE_NONE][0]['value'];
    $text = $node->field_name_of_display_text_field[LANGUAGE_NONE][0]['value']; 
    $vars['my_link'] = l($text, $uri); // Using Drupal's l() function to render a link
  }   
}

Затем в файле шаблона вашего узла вы получите доступ кпеременная $my_link, которую вы можете вывести в любом месте, и будет содержать правильный HTML-код для ссылки.Наконец, перейдите на страницу «Управление отображением» для своего типа контента и установите для отображения двух полей, которые вам больше не нужно выводить, значение «Скрытый».

Существуют и другие способы, поэтому, если это бесполезно, дайте мне знать

РЕДАКТИРОВАТЬ

Просто добавьте, я думаю, что самый простой способ сделать этона самом деле нужно установить модуль Link и использовать предоставленный тип поля вместо двух других полей, которые вы используете в настоящее время.

...