Вы здесь

Изменить разметку поля в template.php

1

Имеется поле 'services_title_for_view', разметку которого нужно изменить.
На данный момент есть работающее решение, но оно не устраивает из-за проблем при работе с полями.

Код

function THEMENAME_field__services($variables) {
  $output = '';
  $element = $variables['element'];

  if (!$variables ['label_hidden']){
    $output .= '<div class="field-label"' . $variables ['title_attributes'] . '>' . $variables ['label'] . ':&nbsp;</div>';
  }
  foreach ($variables ['items'] as $delta => $item){
    $classes = 'field-item ';

    if($element['#view_mode'] == 'teaser'){
        if($element['#title']=='custom_title_for_view'){
            $var = span2html($item);           
            $output .= drupal_render($var);
        }else{
           $output .= '<div class="' . $classes . '"' . $variables ['item_attributes'][$delta] . '>' . drupal_render($item) . '</div>';
        }
    }else{
       if($element['#title']=='custom_title_for_view'){
            $var = span2html($item);
            $output .= drupal_render($var);
        }else{
           $output .= '<div class="' . $classes . '"' . $variables ['item_attributes'][$delta] . '>' . drupal_render($item) . '</div>';
        }
    }
  }

  $output = '<div class="' . $variables ['classes'] . '"' . $variables ['attributes'] . '>' . $output . '</div>';
  return $output;
}
function span2html($text) {
  $span = array("[span]", "[/span]");
  $htmlcode = array("<span>", "</span>");

  return str_replace($span, $htmlcode, $text);
}

Cуть вопроса - есть ли фунуции для изменения разметки только одного конкретного поля?

Версия Drupal: 
7.x
Категория: 
File API
Вопрос задан 30.09.2015 - 20:45

Не совсем понял вопрос.
Есть поле. Для вывода на экран используется функция темизации, которую вы описали, и использовать надо только ее.
Что не получается?

но оно не устраивает из-за проблем при работе с полями.

И какие проблемы надо решить?

Комментарий оставлен 30.09.2015 - 20:58

Не понятно, в чем суть вопроса ?
И что выполняет функция span2html()?

Комментарий оставлен 30.09.2015 - 21:08

Евгения, есть ли другие функции для темизация поля?

Комментарий оставлен 30.09.2015 - 21:56

есть ли другие функции для темизация поля?

Вы можете задавать свои функции для темизации:

function MYTHEME_preprocess_field(&$variables, $hook) {
    // Объявляем название своей темизации: my_field_theme
    $variables['theme_hook_suggestions'] = 'my_field_theme';
}

// Создаем свою функцию темизации
function MYTHEME_my_field_theme($variables) {
    // Здесь генерируете любой html,
    // который должно выводиться для поля
    // Примерно то же самое, что сейчас у вас в THEMENAME_field__services
    return $html;
}
Комментарий оставлен 30.09.2015 - 22:27

Ответы

1

Для того, что вам нужно обычно применяются фильтры (input filters)
http://cgit.drupalcode.org/examples/tree/filter_example/filter_example.m...
Создаете фильтр и затем добавляете его в текстовый формат, с помощью которого происходит вывод поля.
Есть модуль https://www.drupal.org/project/customfilter, которым можно создавать фильтры из админки, без написания кастомного модуля
документация по модулю с примерами https://www.drupal.org/node/210553 https://www.drupal.org/node/210555

Ответ дан 30.09.2015 - 22:29
Аватар пользователя drupby
drupby
456