Темизация шаблона views

Опубликовано 2011.11.22 в разделе Drupal

Модуль Views-очень мощный инструмент разработчика Drupal. Он позволяет выводить различные поля материалов,связать их с автором, статистикой и многим другим. Можно также принимать аргументы прямо из адресной строки.

В готовом варианте результат работы вьюса не устраивает(чисто визуально) в 90% случаев.
Темизировать вьюc  можно. И вариантов для этого предостаточно,например используя шаблоны.
Темизация через шаблоны одинакова и для шестой, и для седьмой версии Друпала.
Рассмотрим по подробнее.
Создаем вьюс, тут ничего сложного нет, вы справитесь с этим сами.
Допустим вьюс подтягивает несколько полей материалов-пусть это будет заголовок, картинка, дата, превью содержимого и ссылка на саму ноду.
 
 
Сразу смотрим превью нашего представления. Как видим-все поля испешно вывелись. Содержимое обрезалось(задал 100 символов), изображение обработалось стилем вывода.(см. также программное создание стиля изображения)
 
 
Для нас это конечно неприемлимо.Обращаемся к темизации.
Жмем на Дополнительно(чтоб раскрылось меню). Далее жмем на Информация.
 
 
В открывшемся окне нас интересует файл с названием Стиль вывода колонок. Этот файл отвечает за...вывод колонок,в общем. На досуге можете посмотреть все эти файлы и понять для себя что и как через них темизируется.
 
 
Что бы скормить вьюсу свой шаблон - создайте файл с именем, указанным последним в области Стиль вывода колонок. В нашем случае это имя views-view-fields--test-views--page.tpl.php
Далее кликайте прям по фразе Стиль вывода колонок-увидите php код. Копируйте его и всталяйте в только что созданный файл шаблона.
Я намеренно убрал всё лишнее,оно нам не пригодится.
 
 
Шаблон будет выглядеть вот так. Теперь скидываем этот файл в папку текущей темы.
 
 
 
Далее в окне со списком шаблонов нажимаем кнопку Пересканировать файлы шаблонов.
 
 
Если вы всё сделали верно-файл темизации будет подсвечен.Если этого не произошло-ищите где вы ошиблись.Ошибка чаще всего бывает,когда файл шаблона имеет неправильное имя,или же он помещен не в ту папку на сервере. 
Если у вас всё корректно подсветилось-жмем ок.
 
 
Путь у вьюса указан(если это страница). Если не указали-обязательно указываем. Сохраняемся.
 
 
В итоге видим наш вьюс, как и должно было быть.
 
 
Теперь самое интересное. Открываем наш шаблон.
Затираем в нем всё ненужное и выводим переменную $id.В этой переменной хранится имя ключа элемента массива $row.
  1. <?php foreach ($fields as $id => $field): ?>
  2. <?php echo $id.'<br />';?>
  3. <?php print $field->content; ?>
  4. <?php endforeach; ?>
  5. </?php></?php></?php></?php>
Кэш очищать не обязательно. Смотрим на вьюху.Видим имена переменных.В ваших вьюсах они будут другими. Мы специально их вывели, чтобы узнать эти имена.
 
 
Теперь можем создать свои новые переменные(в них будет выдача вьюса) и вывести их там где угодно(в пределах данного файла шаблона, конечно).
  1. <?php foreach ($fields as $id => $field): ?>
  2. <?php
  3. if($id=='title'){$zagolovok=$field->content;}
  4. if($id=='field_image'){$img=$field->content;}
  5. if($id=='body'){$text=$field->content;}
  6. if($id=='created'){$time=$field->content;}
  7. if($id=='view_node'){$link=$field->content;}
  8. ?>
  9. <?php endforeach; ?>
  10. </?php></?php></?php>
 
Теперь мы создали переменные и поместили в них выдаваемые значения. Далее верстаем что хотим и как хотим.
Например простенькая таблица:
  1. <?php foreach ($fields as $id => $field): ?>
  2. <?php
  3. if($id=='title'){$zagolovok=$field->content;}
  4. if($id=='field_image'){$img=$field->content;}
  5. if($id=='body'){$text=$field->content;}
  6. if($id=='created'){$time=$field->content;}
  7. if($id=='view_node'){$link=$field->content;}
  8. ?>
  9. <?php endforeach; ?>
  10.  
  11. <table>
  12. <tr>
  13. <td rowspan="2">
  14. <?=$img?>
  15. </?=$img?></td>
  16. <td>
  17. <?php echo '<h2>'.$zagolovok.' Создано:'.$time; ?>
  18. </?php></td>
  19. </tr>
  20. <tr>
  21. <td>
  22. <?php echo $text.'<br />'.$link; ?>
  23. </?php></td>
  24. </tr>
  25. </table>
  26.  
  27. </?php></?php></?php>
 
Проверяем
 
 
Вот и всё. Вьюс темизирован. Как расположить все элементы красивым и правильным образом- это уже вопрос к html и css. Сдесь показан лишь порядок действий при темизации представления Drupal.
 
 
 
 

113 Комментариев

Оставить комментарий

  1. Гость 2017/02/25

    Спасибо!

    Ответить

  2. Гость 2015/10/06

    А слабо было написать так:

    foreach($fields as $id => $field){
    $vars[$id] = $field;
    }

    зачем эта лестница ифов?

    Ответить

    1. Админ 2015/10/07

      Можно и так, лаконичнее конечно. Но бывает, что половину полей выводить не нужно, тогда $vars был бы не перегружен лишними переменными.

      Ответить

      1. Гость 2015/10/08

        формируется массив переменных, а выводить их в шаблоне или нет - другой вопрос.. если не нужно выводить какие-то поля, то зачем их вообще создавать?

        Ответить

        1. Админ 2015/10/09

          Например для использования их в другом поле(в заменить выводимое значение).

          Ответить

          1. Гость 2015/10/09

            Не понял, если честно.. можно пример?

            Ответить

            1. Админ 2015/10/11

              Вот такая ситуация. нужно вывести тайтл ноды и nid, причём нужно впихнуть их в одно поле.
              Для этого вытягиваются оба поля, но тайтл "перезаписывается двумя полями" скажем так. И в шаблоне выводится только тайтл.

              Ответить

              1. Гость 2015/10/14

                Так в чем проблема, написать так:

                foreach($fields as $id => $field){
                $vars[$id] = $field->content;
                }

                $vars['title'] = $vars['title'].$vars['nid'];

                или...

                $vars['title'][0] = $vars['title'];
                $vars['title'][1] = $vars['nid'];

                ... смотря, как требуется.

                Я просто не понимаю, какое преимущество в лестнице ифов вы видите? Может мы друг друга не поняли...

                Ответить

                1. Админ 2015/10/15

                  Да нет, я вас понял. Преимущества как такового нет, просто так написано.
                  Статью писал в далёком 2011 году, поэтому код откровенно говоря слабее:)

                  Ответить

                  1. Гость 2015/10/15

                    Понял. В любом случае, спасибо за пост, помог разобраться в моменте. А код я и сам так пишу.. сначала по-простому, когда все работает - рефакторинг-оптимизация. В тупиковых ситуациях - максимальная аппроксимация )) могу такую же лестницу навоять ))

                    Ответить

                    1. Админ 2015/10/16

                      Пожалуйста. Главное не заниматься преждевременной оптимизацией:)

                      Ответить

  3. Гость 2015/09/24

    Не получается. Вот код:

    1. <?php foreach ($fields as $id => $field): ?>
    2. <?php echo $id.'<br />';?>
    3. <?php print $field->content; ?>
    4. <?php endforeach; ?>
    5. <?php foreach ($fields as $id => $field): ?>
    6. <?php
    7. if($id=='title'){$zagolovok=$field->content;}
    8. if($id=='field_style_guide_image'){$img=$field->content;}
    9. if($id=='field_fashion_tendency_image'){$img=$field->content;}
    10. if($id=='field_field_useful_materials_image'){$img=$field->content;}
    11. if($id=='field_field_men_classic_history_image'){$img=$field->content;}
    12. if($id=='body'){$text=$field->content;}
    13. ?>
    14. <?php endforeach; ?>
    15. <?php foreach ($fields as $id => $field): ?>
    16. <?php
    17. if($id=='title'){$zagolovok=$field->content;}
    18. if($id=='field_image'){$img=$field->content;}
    19. if($id=='body'){$text=$field->content;}
    20. if($id=='created'){$time=$field->content;}
    21. if($id=='view_node'){$link=$field->content;}
    22. ?>
    23. <?php endforeach; ?>
    24. <table>
    25. <tr>
    26. <td rowspan="2">
    27. <?=$img?>
    28. </td>
    29. <td>
    30. <?php echo '<h2>'.$zagolovok.'</h2> ' ?>
    31. </td>
    32. </tr>
    33. <tr>
    34. <td>
    35. <?php echo $text.'<br />'; ?>
    36. </td>
    37. </tr>
    38. </table>
    39.  

    Пишет ошибку:
    Notice: Undefined variable: img в функции include() (строка 54 в файле /sites/all/themes/zen/views-view-fields--view-popular--block.tpl.php).
    Notice: Undefined variable: img в функции include() (строка 54 в файле sites/all/themes/zen/views-view-fields--view-popular--block.tpl.php).
    Notice: Undefined variable: img в функции include() (строка 54 в файле sites/all/themes/zen/views-view-fields--view-popular--block.tpl.php).
    Notice: Undefined variable: img в функции include() (строка 54 в файле sites/all/themes/zen/views-view-fields--view-popular--block.tpl.php).

    как можно увидеть, у меня 4 типа картинки, которые должны отображаться. попытался каждому типу присвоить отдельную переменную, а не сливать все в одну. вот код:

    1. <?php foreach ($fields as $id => $field): ?>
    2. <?php echo $id.'<br />';?>
    3. <?php print $field->content; ?>
    4. <?php endforeach; ?>
    5. <?php foreach ($fields as $id => $field): ?>
    6. <?php
    7. if($id=='title'){$zagolovok=$field->content;}
    8. if($id=='field_style_guide_image'){$img1=$field->content;}
    9. if($id=='field_fashion_tendency_image'){$img2=$field->content;}
    10. if($id=='field_field_useful_materials_image'){$img3=$field->content;}
    11. if($id=='field_field_men_classic_history_image'){$img4=$field->content;}
    12. if($id=='body'){$text=$field->content;}
    13. ?>
    14. <?php endforeach; ?>
    15.  
    16. <table>
    17. <tr>
    18. <td rowspan="2">
    19. <?=$img1 || $img2 || $img3 || img4?>
    20. </td>
    21. <td>
    22. <?php echo '<h2>'.$zagolovok.'</h2> ' ?>
    23. </td>
    24. </tr>
    25. <tr>
    26. <td>
    27. <?php echo $text.'<br />'; ?>
    28. </td>
    29. </tr>
    30. </table>
    31.  

    Вот так выглядит ошибка:
    Notice: Undefined variable: img1 в функции include() (строка 46 в файле sites/all/themes/zen/views-view-fields--view-popular--block.tpl.php).
    Notice: Undefined variable: img2 в функции include() (строка 46 в файле sites/all/themes/zen/views-view-fields--view-popular--block.tpl.php).
    Notice: Undefined variable: img3 в функции include() (строка 46 в файле sites/all/themes/zen/views-view-fields--view-popular--block.tpl.php).
    Notice: Use of undefined constant img4 - assumed 'img4' в функции include() (строка 46 в файле sites/all/themes/zen/views-view-fields--view-popular--block.tpl.php).
    Notice: Undefined variable: img1 в функции include() (строка 46 в файле sites/all/themes/zen/views-view-fields--view-popular--block.tpl.php).
    Notice: Undefined variable: img2 в функции include() (строка 46 в файле sites/all/themes/zen/views-view-fields--view-popular--block.tpl.php).
    Notice: Undefined variable: img3 в функции include() (строка 46 в файле sites/all/themes/zen/views-view-fields--view-popular--block.tpl.php).
    Notice: Use of undefined constant img4 - assumed 'img4' в функции include() (строка 46 в файле sites/all/themes/zen/views-view-fields--view-popular--block.tpl.php).
    Notice: Undefined variable: img1 в функции include() (строка 46 в файле sites/all/themes/zen/views-view-fields--view-popular--block.tpl.php).
    Notice: Undefined variable: img1 в функции include() (строка 46 в файле sites/all/themes/zen/views-view-fields--view-popular--block.tpl.php).
    Notice: Undefined variable: img2 в функции include() (строка 46 в файле sites/all/themes/zen/views-view-fields--view-popular--block.tpl.php).
    Notice: Undefined variable: img3 в функции include() (строка 46 в файле sites/all/themes/zen/views-view-fields--view-popular--block.tpl.php).
    Notice: Use of undefined constant img4 - assumed 'img4' в функции include() (строка 46 в файле sites/all/themes/zen/views-view-fields--view-popular--block.tpl.php).
    Notice: Undefined variable: img1 в функции include() (строка 46 в файле sites/all/themes/zen/views-view-fields--view-popular--block.tpl.php).
    Notice: Undefined variable: img2 в функции include() (строка 46 в файле sites/all/themes/zen/views-view-fields--view-popular--block.tpl.php).
    Notice: Undefined variable: img3 в функции include() (строка 46 в файле sites/all/themes/zen/views-view-fields--view-popular--block.tpl.php).
    Notice: Use of undefined constant img4 - assumed 'img4' в функции include() (строка 46 в файле sites/all/themes/zen/views-view-fields--view-popular--block.tpl.php).


    что делать?

    Ответить

    1. Админ 2015/09/26

      1. <?=$img1 || $img2 || $img3 || $img4?> //у img4 $ забыли

      Тут подебажьте имена полей
      1. <?php foreach ($fields as $id => $field): ?>
      2. <?php
      3. echo $id . '<br />';
      4. if($id=='title'){$zagolovok=$field->content;}
      5. if($id=='field_style_guide_image'){$img1=$field->content;}
      6. if($id=='field_fashion_tendency_image'){$img2=$field->content;}
      7. if($id=='field_field_useful_materials_image'){$img3=$field->content;}
      8. if($id=='field_field_men_classic_history_image'){$img4=$field->content;}
      9. if($id=='body'){$text=$field->content;}
      10. ?>
      11. <?php endforeach; ?>

      Точно выведутся field_style_guide_image, field_fashion_tendency_image и т.д.?
      Скорей всего у переменной id в цикле другое значение будет, поэтому переменные $img1, $img2, $img3 и $img4 не объявлены.

      Ответить

      1. Гость 2017/02/20

        Нотисы выводятся на других страницах.
        Решение простое:

        1. <?php endforeach; ?>
        2.  
        3. <?php if (isset($zagolovok)) : ?>
        4. <table>
        5. ...
        6. </table>
        7. <?php endif; ?>
        8.  

        Ответить

  4. Гость 2015/08/25

    Здравствуйте!

    Столкнулся с совершенно глупой проблемой. Есть вьюс с контекстным фильтром по ID термина + РНР валидация для отображения термина по его алиасу и вывод через свой шаблон, по указанному выше принципу.
    В превью все работает и по ИД и по алиасу. На странице только по ИД. Кэш чистил, с синонимами пробовал разные варианты, дефолтный вьюс для таксономии отключал, даже подключал шаблон в template.php . Все бестолку.

    Ответить

    1. Админ 2015/08/26

      Может быть когда открываете по алиасу-вьюс не понимает что ему контекстным фильтром tid термина передают? Попробуйте пошаманить с контекстным фильтром, точнее с его проверками.

      Ответить

      1. Гость 2015/08/30

        В сети находил примеры с валидацией, когда аргумент-алиас заменяется ИД. Однако я посмотрел дебаггером и оказалось что в аргументе присутствует именно ИД термина. Тем не менее все танцы с бубном не помогли.
        В итоге, я плюнул и перегенерил алиасы так, чтобы в самом УРЛ присутствовал ИД термина. Проблема решилась.

        Ответить

        1. Админ 2015/08/30

          Ничесебе, вот магия так магия.

          Ответить

  5. Гость 2015/07/31

    Здравствуйте!
    Огромное спасибо за статью, она мне очень помогла.

    У меня есть тип материала с полем "entity reference". Этот тип материала я вывожу через вьюху. Конкретно поля связанных сущностей вывожу вот так:

    1. $ArFather=(array)$row;
    2. $ArFather=$ArFather[field_field_father];
    3. for ($i=0;$i<count($ArFather);$i++) {
    4. echo $ArFather[$i][raw][entity]->field_birthdate[und][0][value];
    5. echo "<br>";
    6. echo $ArFather[$i][raw][entity]->field_titles[und][0][value];
    7. echo $ArFather[$i][raw][entity]->field_photo[und][0][value];
    8. }

    Выводится всё, кроме фотографии (field_photo). К сожалению, в пхп я полный ноль. Может быть, для изображения должен быть другой синтаксис?

    Ответить

    1. Админ 2015/08/03

      Да. В поле для файла будет не value, а fid файла, его uri, размер и всё прочее.
      Сделайте print_r($ArFather[$i][raw][entity]->field_photo[und][0]); и увидите сколько всего в этом массиве. Среди прочего будет и путь к картинке.

      Ответить

      1. Гость 2015/08/06

        Большое спасибо, разобралась.
        Ещё вопрос, последний) Как выводить метки полей?

        Ответить

  6. Гость 2015/06/21

    Уже было хотел спрашивать совета как темизировать элементы мультиполя, но решение нашел самостоятельно. Привожу, может кому пригодится. Не знаю насколько оно "кошерно".

    В цикле создаем переменную для вывода, как и указано в статье.

    1. if($id=='field_photos'){$photos=$field->content;}


    Выводим как нам нужно, например в слое, и назначаем слою идентификатор стиля (тут возможны варианты на свой вкус, например использовать класс, а не ид).
    1. print '<div id="myphoto">'.$photos.'</div>';


    В файле CSS создаем стиль для контейнера (красный фон) и в псевдоклассе :first-child определяем стиль содержимого. В данном случае, определяется стиль первого элемента. Больше слоев внутри контейнера нет, а если бы они были, то изменения заданные псевдоклассом затронули бы только первый слой.
    1. #myphoto{
    2. background-color: red;
    3. }
    4.  
    5. #myphoto :first-child {
    6. padding: 10px;
    7. }

    Ответить

  7. Гость 2015/06/16

    Здравствуйте!

    Неожиданно столкнулся с проблемой. Файл шаблона темизированного вьюса не подхватывается, если вьюс является вкладкой quicktabs, а срабатывает дефолтный шаблон. Кэш чистил.
    Если открывать URL страницы вьюса, все без проблем.
    Куда копать?

    Ответить

    1. Админ 2015/06/17

      Прикол. Не работал с quicktabs.
      А при редактировании вьюса если пересканировать шаблоны-он не подхватывается? Ишюсов в сети по этому поводу нет?
      Может через препроцессы как-нибудь обыграть, в нём вручгую вызывать темизирующую функцию, которая уже подхватит нужный вам шаблон.

      Ответить

      1. Гость 2015/06/17

        При редактировании тоже не подхватывается. В инфо шаблон активен. Если вьюс отображается через урл, подхватывается.
        С препроцессами хорошая идея. Попробую, отпишусь.

        Ответить

        1. Гость 2015/06/17

          Значица так...

          Чтобы увидеть изменения темизации в админке, в моем случае, нужно на время настройки установить в админку текущую тему сайта. Подсмотрел здесь http://sherskova.ru/drupal/drupal-6-temizaciya-views как ни странно, но актуально не только для старых версий.

          Чтобы подхватило нужный шаблон, в template.php используем функцию MYTHEME_preprocess_views_view_fields() .

          1. function MYTHEME_preprocess_views_view_fields(&$vars) {
          2. // Перечисляем имена представлений
          3. $list_views = array(
          4. 'new_articles',
          5. 'top_articles',
          6. 'related_articles',
          7. )
          8. if (in_array($vars['view']->name, $list_views)) {
          9. $vars['theme_hook_suggestions'][] = 'views_view_fields__combined_articles';
          10. }
          11. }

          Источник http://drup.by/snippets/obedinenie-neskolkih-shablonov-views-v-odin кстати, если кто будет копировать код из сайта, в конструкции if() пропущена закрывающая скобка (здесь рабочий код) функции in_array(), так что будьте внимательны.

          Ответить

          1. Админ 2015/06/19

            Да, в каждой теме ведь свои шаблоны. таким образом получилось через хук добавить подтягивание шаблона?

            Ответить

            1. Гость 2015/06/19

              Да. Все заработало как нужно. Более того, этот сниппет (в том виде как представлено) добавляет шаблон к нескольким вьюсам, а мне как раз так и требуется.

              Ответить

  8. Гость 2015/06/11

    Здравствуйте!

    Есть ли возможность выводить, или не выводить одно поле в зависимости от значения другого? Или хотя-бы при условии, если поле от которого зависим вывод пустое.
    Тэги вырезать не хочется, а если не вырезать, то понятное дело if(!empty($bla-bla)) не сработает.

    Ответить

    1. Админ 2015/06/11

      Почему нет? Это ведь обычные переменные. Конструкция if else будет работать.

      Ответить

      1. Гость 2015/06/12

        Благодарю за столь оперативный ответ.
        Для меня в данном случае, проблема была связана с поиском значения к которому можно привязать функцию empty() , поскольку даже при пустом значении поля переменная не является пустой по причине наличия в ней обертки. Решение подсмотрел ниже.
        Помимо обычной переменной создаю контрольную, с обрезанными тэгами.
        if($id=='field_bla-bla'){$opmas=$field->content;}
        if($id=='field_bla-bla'){$control=strip_tags($field->content);}

        Ответить

  9. Гость 2015/04/23

    Прекрасная статья. Есть вопрос: как взять ссылку на ноду новости с блока views? Если вдруг стало необходимо сделать весь элемент новости блока в качестве ссылки на ноду новости? то есть обернуть div тэгом a href ?

    Ответить

    1. Админ 2015/04/23

      Ну можно так а можно просто скрыть из вывода(или вообще удалить) все остальные поля кроме поля "Ссылка на материал".

      Ответить

      1. Гость 2015/04/25

        Прошу прощения, видимо неправильно поняли. Допустим у меня стоит задача каждую новость сделать в виде ссылки. То есть сделать кликабельным весь div в которую помещена новость. Для этой можно обернуть всю новость в div который в свою очередь обернуть в тэг a href. Но как получить ссылку на ноду этой новости чтобы передать ее через a href ?

        Ответить

        1. Админ 2015/04/25

          Нет, я так и понял. Во вьюсе можно вытащить поле "ссылка на материал".
          И в шаблоне уже этот урл использовать для создания ссылки, в которую положите див.

          Ответить

          1. Гость 2015/04/25

            Понял, спасибо большое за оперативные разъяснения. Не могли бы вы порекомендовать литературу или видеоуроки по drupal, где более углубленно все рассказано по программированию, хукам, вьюсам и т.п.?

            Ответить

            1. Админ 2015/04/25

              Пожалуйста.
              Нет, не порекомендую литературу и видео. Лучшее обучение - это практика. Выберите себе задачу, погуглите как люди её решали до вас. Посмотрите видосы, уроки по ней и сделайте как написано там. А потом сидите и думайте почему у вас не работает. Как поймёте - значит чуточку прокачались:)

              Ответить

  10. Гость 2015/03/23

    Огромное спасибо за публикацию. Столько проблем сняло с темизацией.

    Ответить

  11. Гость 2014/09/11

    Почему-то у меня нет стиля вывода колонок, в чем может быть проблема?

    Ответить

    1. Админ 2014/09/15

      Что значит нет? Вообще нет в настройках вьюса?

      Ответить

  12. Гость 2014/04/15

    Отличная статья очень помогло!!!
    Скажите пожалуйста нужно вывести ссылку на imagestyle при клике, никак не могу понять как вывести путь

    1. <a class="btn btn-primary" title="Zoom" href="<?php print ЧТО ТУТ УКАЗАТЬ; ?>" rel="lightbox">увеличить</a>

    Ответить

    1. Админ 2014/04/16

      Ну можно отдельным полем выдернуть адрес большой картинки, и подставить его туда, это если вы хотите вреучную все rel и классы прописать.
      Проще конечно когда настраиваешь поле картинки у вьюса - указать настройки модального окна в поле "Формат".
      Тогда вьюс сам пропишет все адреса и классы.

      Ответить

      1. Гость 2015/08/06

        Скажите, пожалуйста, а как при этом выводить метки полей?

        Ответить

        1. Админ 2015/08/11

          Они в $field->label_html;

          Ответить

        2. Гость 2015/08/06

          Извините, промахнулась.

          Ответить

      2. Гость 2014/04/16

        Спасибо, за простое решение, я правда несколько часов искал выход и воспользовался такой конструкцией,

        1. $url = file_create_url($row->field_field_image[0]["raw"]["uri"]);

        Потом вывел $url.

        А всё это радивот этого эффекта http://tympanus.net/TipsTricks/DirectionAwareHoverEffect/

        Нужные поля вывел ccs и js прицепил, но появляются обёрточные
        1. <div>
        не подскажите как их убрать.
        Ещё раз спасибо!

        Ответить

        1. Админ 2014/04/16

          Чтобы обёртку убрать - надо будет сделать шаблоны для этих полей, в том же вьюсе. И в них затереть всю обёртку, оставив только

          1. print $field->content;

          Для надёжности можно даже так дописать:
          1. print strip_tags($field->content);

          Ответить

  13. Гость 2014/02/18

    Спасибо. Столько намучился с этим Друпалом. По-моему, это единственная адекватная статья по кастомизации шаблонов views.
    Вопрос. Если я меняю шаблон для страницы со списком, как в views-view-fields--material--page-1.tpl.php получить ссылку на ноду с материалом, чтобы можно было написать, допустим:
    Подробнее читать здесь
    ? Надо, что-то в через админку добавлять или такая переменная создаётся автоматически?

    Ответить

    1. Админ 2014/02/19

      Пожалуйста. В шаблоне views-view-fields--material--page-1.tpl.php что выводится, поля? Если поля - то можно во вьюс добавить вывод поля "ссылка на материал" и прямо в админке вьюса написать ему анкор "Подробнее читать здесь".

      Ответить

      1. Гость 2014/02/19

        Спасибо

        Ответить

  14. Гость 2013/12/16

    Спасибо за статью, помогли разобраться с темизацией поля. Но есть один вопрос: могу ли я в темизируемом поле использовать значение соседнего поля этой же сущности?

    Ответить

    1. Админ 2013/12/18

      Если шаблон для одного конкретного поля-то скорей всего нет. А если общий на все поля - то конечно можно брать значения всех извлекаемых полей.

      Ответить

      1. Гость 2013/12/18

        Оказалось можно именно в темизации конкретного поля. Например, из файла tpl поля commerce_stock (views-view-field--commerce-stock.tpl.php), с помощью следующего вызова я получил информацию из поля sku этой же сущности:
        $sku = $row->{$view->field['sku']->field_alias};

        Ответить

        1. Админ 2013/12/19

          Ну здорово, значит можно)

          Ответить

  15. Гость 2013/09/10

    Спасибо мужик) Только начал осваивать эту штуку, пол инета обшарил что бы нужный пост найти

    Ответить

  16. Гость 2013/08/07

    Установил CommerceBox на Drupal 7. Подскажите как можно отредактировать страницу товара (подробно). В View нету, в стандартных темах в файлах tpl.php тоже не нашел.

    Ответить

    1. Админ 2013/08/08

      У этой сборки шаблон скорей всего лежит в modules/node/node.tpl.php

      Копируйте его в паку темы.
      Чистим кэш.
      Шаблон должен подхватиться из папки темы.

      Ответить

      1. Гость 2013/08/08

        А не подскажете еще как задать шаблон для блока, в View то понятно вставляем необходимые поля для определенного блока, а как ему дизайн менять грамотно и добавлять свой php код?
        Например изменить верстку меню чтобы оно выводилось не стандартным списком а каждый пункт обрамлялся еще

        И не подскажите статью как правильно работать с нодами?
        Перерыл пол интернета, а нормальной грамотной статьи ненашел....

        Ответить

        1. Админ 2013/08/08

          В шаблон вьюса можно добавлять в принципе абсолютно любой PHP код, но меру знать конечно нужно.
          Грамотно менять дизайн - это значит хорошо разбираться в CSS, уметь оптимально подбирать селекторы, знать CSS свойства и желательно ещё знать особенности браузеров. Ну или просто тестить во всех и смотреть где и что некорректно работает.

          Так вот же в статье я всё обрамляю. У вьюса тоже есть шаблон(попробуй попереопределять их, посмотри как сработают), в котором все поля циклом выводятся. В этом цикле о можно добавить обрамление.
          На скрине шаблона переменные $field->wrapper_prefix и $field->wrapper_suffix - это и есть обертка, меняй как хочешь.

          А что интересует по работе с нодами? О_о
          Нода - это основная, скажем так, сущность в Друпале.
          Расширяется за счёт модуля cck и десятков обвесок для него.
          Выводится всё стандартными средствами, модулем Views или Panels.
          Ну и много ещё всего другого. Может конкретный вопрос есть?

          Ответить

          1. Гость 2013/08/12

            В commercebox часть шаблонов как я понял сделано в нодах, а часть в view, разницы сам лично не вижу, удобнее делать мне кажется все через view но разобраться хотелось бы. Также есть файл template.php в котором также идут функции, где эти функции работают и на что влияют так и не понял, и хотелось бы узнать подробно про файл .info

            Что значат строки:

            skinr[api]
            skinr[directory]
            features[]
            settings[]

            Есть где-нибудь полное описание возможных настроек файла .info?

            Ответить

            1. Админ 2013/08/13

              В template.php реализованы хуки для темизации. Эти функции вызываются непосредственно перед отрисовкой различных элементов. По названиям хуков можно понять за что они отвечают,или доку посмотреть.
              Про info файл наверное ничего нет, там обычно ничего особенного: подключаемые js/css, имена регионов и всё. Видимо ещё какие-то настройки темы.

              Ответить

  17. Гость 2013/08/05

    Когда я прочитал что Drupal очень мощный и гибкий движок и что он сравнивается с фреймворком я рассмеялся видимо разработчики не работали на фреймворке
    Админка настолько тугая и неудобная что черт голову сломит
    Деревянный Magento использующий дляпередачи xml и то будет поудобнее а по функционалу даже переплевывает Drupal на 10 лет вперед, если сравнивать с фреймворком то MODX еще можно отнести к таким, но DRUPAL НЕТ! Мне для обычного пользователя обьяснять как администрировать магазин пришлось обьяснять около месяца! Народ слазьте с этого отстоя, посмотрите в сторону других движков и "фреймворков"

    Ответить

    1. Админ 2013/08/06

      Здравствуйте уважаемый Гость, ваше мнение очень важно для нас.
      То, что вам пришлось объяснять клиентом целый месяц - это либо у вас клиенты на 10 лет отстают в развитии, либо вы такую админку сделали. Пользовательскую админку можно сделать так, что человек с овощем вместо мозгов, и тот разберется.
      Админка очень сложна, первые пару недель. Сам её в упор не понимал, потом привык, теперь она для меня очень даже удобная и интуитивно понятная.
      У Друпала вообще достаточно высокий порог вхождения, и не преодолев его пользователи обычно ругаются.
      Лучше отнеситесь к этому с юмором.
      На друпал всегда льётся много говна, обычно от людей, которые не до конца в нём разобрались. Гибкость его, кстати, реализована за счёт хуков, и пользоваться ими очень удобно. Их применение позволяет "врезать" свой функционал в чужой модуль, не затрагивая чужого кода.

      Ответить

      1. Гость 2013/08/07

        Ну хорошо предположим вы человек который хорошо разобрался в друпале.
        Давайте просто сравним, тут даже специалистом если честно не надо быть!
        Возьмем не сильно навороченный движок для магазина, ну скажем Simpla вполне подойдет, писали люди с прямыми руками
        Обычным инспектором верстку друпала и simpla
        Даже лезть далеко ненадо у друпала в тегах head уже помойка! А если ниже посмотреть то вообще страшно в обычном dive по несколлько стилей и id - жеесть, а вообще говорят что 1го класса вполне достаточно и его можно применять на нескольких divах ) Ну да ладно....
        Сравним базу данных, сколько таблиц у друпала для магазина? более 50 верно? ВЕРНО! а у Simpla не больше 10, ну да ладно давайте дальше залезем в админку! посмотрим добавление товаров - сразу ясно в друпале более неудобная админка.... У друпала проигрыш!
        Что касается стилей так любой величины проект требует не более 1 файла стилей, если человек подключает кучу слайдеров и дополнений то конечно, но если человек все пишет как положено 1го файла в полне достаточно и никакого кеширования css не требуется, читый head это
        style.css
        JQuery.js
        MyScripts.js
        Этого вполне достаточно! Есть даже специальные оптимизаторы которые обьединяют такие файлы чтобы их было меньше, а зачем обьединять то? если все можно делать сразу нормально
        На слайдер качают плагины которые посути ненужны, такие скрипты пишутся элементарно, AJAX запросы еще проще, а больше то ничего и ненужно. Я просто диву даюсь насколько людям влом писать самостоятельно, лучше в друпал залезть и без того загруженную старушку модулями навалить еще и еще а потом крехтя сквозь зубы запустить и исправлять нестыковки и ошибки которые потом вылазят
        Что касается большого проекта, боюсь друпал его не потянет, если уже на магазин надо такая база данных то какая база данных нужна для реально большого проекта то? SypexDumper придется ставить так как phpmyadmin загнется от такого дампа...

        Ответить

        1. Админ 2013/08/07

          не сильно навороченный движок для магазина, ну скажем Simpla

          Вот вы сейчас предложили сравнить магазин с универсальной CMF.
          Друпал нельзя сравнивать с движками магазинов, досок объявлений или соц сетей. В том то и фишка друпала, что он универсален, и состряпать из него можно и соц сеть, и магазин, и аукцион, да просто блог или новостной портал.
          Это как если вы купите одну отвертку, хорошую закалённую. Скажете - вот какая у меня хорошая отвертка, надежная,в руке удобно лежит и носить с собой легко.
          А у меня будет чемоданчик с двадцатью насадками для отвертки и набор шестигранников.
          Вы скажете - фу какая тяжесть, нафига эти шестигранники и кучи насадок, я и просто отверткой справлюсь.

          В каком-то случае справитесь, а в каком-то нет, придётся докупить вторую отвертку.

          у друпала в тегах head уже помойка!

          И чо? Он от этого втрое дольше грузиться будет что-ли?


          А если ниже посмотреть то вообще страшно в обычном dive по несколлько стилей и id - жеесть, а вообще говорят что 1го класса вполне достаточно и его можно применять на нескольких divах

          По своему опыту скажу - это нагромождение стилей ещё ни разу не мешало, очень даже удобно стили натягивать. Да, и некоторые классы на множестве дивов используются. Незнаю кто и что вам там говорил, но одного класса не хватит даже для сайта средней школы №756 из Новых Васюков.

          Про админку Друпала я уже говорил, всё прекрасно настраивается.


          так любой величины проект требует не более 1 файла стилей

          Мда... даже незнаю что вам и ответить. Пусть у проекта 1000 страниц.И 1 css файл на 500 строк. Также у проекта есть 10 уникальных страниц, и у каждой свой css файл на 2000 строк.
          И вы предлагаете для всех тянуть 20500 строк css, вместо 500?
          Представляете как раздуется css. Из-за 1% страниц css будет больше в 41 раз.
          А друпал может агрегировать css так, что на странице не будут подгружаться лишние стили вообще. Даже для одной и той же страницы, но для разных ролей будут разные конечные css.

          head это
          style.css
          JQuery.js
          MyScripts.js
          Этого вполне достаточно!

          1. <body>
          2. Hello world! - этого тоже вполне достаточно.
          3. </body>



          Есть даже специальные оптимизаторы которые обьединяют такие файлы чтобы их было меньше, а зачем обьединять то?

          Ну чтож, видимо авторы этих оптимизаторов просто дураки. Вы - нет конечно, у вас в любом проекте 1 css файл.


          Я просто диву даюсь насколько людям влом писать самостоятельно

          Похоже вы ещё и любите велосипеды...

          Скажите, сколько будет стоить проект, несложный, написанный начинающим специалистом. Новичок соберет проект из готовых плагинов, модулей и всё прекрасно будет работать. Эту работу он оценит в 3000 руб.
          И ему хорошо, и заказчик доволен.

          Специалист вашего уровня будет самостоятельно писать плагины к слайдерам(которые кстати потом другим программистам поддерживать), объединять css и т.д.
          Заказчику от этого лучше будет? Его волнует ваша архитектура и подход?
          Нет, ему нужно чтоб работало, чтоб быстро и недорого.

          По каким параметрам вы обошли новичка? Ни по каким.
          Работает у вас обоих.
          Кто сделает быстрее-тот ещё вопрос.
          Ваши самописные скрипты обойдутся в 15000руб.

          Профит?
          Это я говорю о несложных проектах.


          без того загруженную старушку модулями навалить еще и еще а потом крехтя сквозь зубы запустить и исправлять нестыковки и ошибки которые потом вылазят

          Есть замечательный хостинг http://it-patrol.ru - друпал у них отлично работает. Ничего не загружено. Всё отлично настроено и отлажено. И от 100руб в месяц.
          Если всё правильно делать-никаких ошибок в друпале не будет.
          А в вашем коде ошибок не бывает? При должной кривости рук ошибки можно сделать везде.


          Что касается большого проекта, боюсь друпал его не потянет

          В этом вы по большей части правы. Это признают и другие друпалеры. В реально большом проекте универсальность друпала может оказаться лишней. Однако при правильном подходе друпал прекрасно потянет и большой проект. И стоимость его создания и поддержки будет в разы дешевле.

          Ответить

          1. Гость 2013/08/07

            Спасибо за грамотный ответ. Должен признать что по стоимости на Drupale будет дешевле стоить разработка, и само собой быстрее как и разработка на любом другом CMS, с этим не поспоришь!
            Что касается скриптов велосипедов, любой скрипт это велосипед, он кем-то написан и придуман, на любую задачу можно найти кучу скриптов при этом сильно себя не утруждая, модифицировать код для более гибкой работы и занести в функцию ну а функции само собой объединить в class (ООП), сохранить в файлик и скажем закачать в папку api до надобности. Api сделать из таких файликов очень просто, достаточно создать class который в функции будет анализировать через __get обращения и с помощью него подключать class и создавать объект этого класса, при этом папка может разростись до любых размеров a файлы будут подключатся только те которые нужны не создавая лишней нагрузки.
            Что касается CSS если сайт очень большой и стили страницы в корне отличаются имеет смысл подключить другой файл стилей предназначенный для этой страницы, зачем обрабатывать лишние стили DOMa, а для небольших изменений можно и дополнить 1, в любом случае не думаю что для проекта так уж необходимо кеширование css.
            А вообще что касается скорости для небольших проектов компилятора вполне достаточно, с кешированием вечно проблема - его чистить надо после изменений, а компилятор анализирует, если измения есть он меняется если изменений нет он просто читается.

            Ответить

            1. Админ 2013/08/08

              С подключение API в друпале примерно так как вы и сказали. Можно закачать хоть 300 модулей, но инклудиться будет только код включённых модулей.
              Да, если на странице есть только форма - инклудиться будет API форм, полей и все остальные включеные, хоть они и не нужны. С этим, увы, приходится жить.
              Про css - держать их компактно, в двух-трёх файлах - это легко, когда сам полностью делаешь проект сам. Друпальщикам же приходится подключать штук 20 модулей, каждый из которых может имееть свой css. Плюс css темы.
              Модульность друпала не позволит держать всё в одном месте, отсюда и пляски с агрегацией.
              Ну и по факту...да никто не спорит что на чистом фреймворке сайт будет работать быстрее, при грамотном подходе конечно. Но CMS она на то и CMS чтоб снизить планку для программиста и сроки/стоимость для заказчика. Ну и при использовании сторонних модулей и вообще движка - этим же кодом пользуются тысячи сайтов(тот же views установлен 644755 раз), и все критичные и не очень баги сто раз найдут до тебя и пофиксят.
              Так что наш спор - это сравнение машины с мотоциклом.

              Ответить

  18. Гость 2013/08/05

    Drupal отстой полный
    Вот скажите зачем для того чтобы задать шаблон для страницы надо создавать view и указывать кучу настроек, когда можно было отвести специальную папку в теме и качать оттуда названия шаблонов для страниц или сделать создание шаблона в самой админке.
    Или скажем зачем нужна таксономия когда можно было элементарно отвести в базе данных отдельно каталоги и страницы и на основе их формировать меню путем добавления того или иного
    Или модули, практически каждый модуль требует еще пару тройку модулей иначе он работать не будет...
    Чтобы добавить элементарно товар (магазин) надо создать товар, создать страницу, если нет категории то создать словарь и если дизайн будет отличатся от остальных еще и создать view создать файл и только потом его отредактировать
    Зачем в Drupale сделали мусорку из стилей и скриптов в тегах head? Стили которые подключаются в файле .info импортируются но не подключаются напрямую, об остальных навороченых методах подключения я даже говорить небуду, кеширование стилей, да кому это надо кэширование стилей, браузер моментально определяет и так css файлы, грамотная верстка и будет все грузится моментально

    Чем же Ваш мусорный Drupal так привлекает Вас?
    Возьмите любой другой движок или фреймворк yii который в сто раз круче и разработка приятнее, а если сделать еще и связку yii - smarty, это вообще убойная вещь, кроссбраузерность побьет все рекорды

    Ответить

    1. Админ 2013/08/06

      Вот скажите зачем для того чтобы задать шаблон для страницы надо создавать view и указывать кучу настроек, когда можно было отвести специальную папку в теме и качать оттуда названия шаблонов для страниц

      Если нужно создать страницу - views делать необязательно.
      Не хотите вьюсом - не вопрос, реализуете hook_menu для создания нового пути.
      Создаете функцию для отображения страницы, пишите в неё SQL запрос.
      Не хотите кучу настроек - дописывайте в свой запрос кучу JOIN`ов. Принимайте GET параметры. Да,всё это конечно же надо фильтровать. Ну и про пейджинг не забываем.
      Надо будет поправить - лезем, правим код, переносим апдейт на боевой сервер.
      Про кэширование не забудьте(views это умеет).
      Views кстати на раз-два и xml любую сформирует, для себя, или с учётом требований поисковых систем. И его легко экспортировать/импортировать.

      Специальная папка - есть такая, templates называется, есть в каждой теме. А если нет - легко создать. В неё можно класть шаблоны для всех страниц - page.tpl.php , для содержимого материала node.tpl.php. Вот более подробная документация по этому вопросу. Все имена шаблонов чётко документированы.


      сделать создание шаблона в самой админке

      Если не ошибаюсь - ModX хранит код темплейтов в БД? Браво, отличный подход.
      Для Drupal`а тоже есть такой модулёк, Contemplate


      Или скажем зачем нужна таксономия когда можно было элементарно отвести в базе данных отдельно каталоги

      Это что-же за СУБД у вас такая, каталоги поддерживает? Может таблицы вы имели ввиду? Так таксономия - это и есть таблица.
      На её основе формируются страницы с адресом taxonomy/term/123
      Можно и меню на его основе создать-снипетом,как у меня на сайте блок "Разделы на сайте". Или модулем Taxonomy menu

      На основании таксономии можно и хлебные крошки делать, и в ЧПУ использовать. Красота.


      Или модули, практически каждый модуль требует еще пару тройку модулей иначе он работать не будет...

      Предлагаете дублировать код в каждом модуле? No comments...


      Чтобы добавить элементарно товар (магазин) надо создать товар, создать страницу, если нет категории то создать словарь

      Товар надо создать в любом магазине.
      Какую ещё страницу?
      Покажите мне магазин, в котором нет категорий, и можете бросить в меня камень.


      Насчёт подключения стилей и js файлов.
      Вот есть у вас большой проект,в котором 50 css файлов и 30 js. Чё у вас там браузер накэширует? Для каждого анонимного посетителя всё это кэшироваться будет каждый раз? Под IE на такой сайт зайдите, посмотрим как у вас закэшируется.

      Функции drupal_add_js и drupal_add_css набивают массив с урлами этих файлов и генерируют на их основе длинную портянку для стилей и скриптов.
      Один - два css файла подгрузятся и закэшируются быстрее, нежели десяток файлов(про 30 css для осла не забываем).


      yii - smarty, это вообще убойная вещь, кроссбраузерность побьет все рекорды

      При чём тут кроссбраузерность? Drupal 8 не ставили? Там в дефолтной теме такая верста, что лучше и не захочется.

      Говносайт можно собрать и на Yii, и на Drupal, и на Kohana, и на {подставить любой фреймворк или CMS}

      Дело ведь не в используемой технологии, а в программисте.



      В заключение - вы не познали дзен Друпала. Повторюсь, он сложен для понимания.


      Да, и ещё - во сколько заказчику обойдётся разработка сайта на Yii и на Drupal? На чём можно быстрее собрать сайт?
      На друпале кстати можно собрать костяк сайта используя Drush. Набиваем в консоли что-то типа
      drush dl views - последняя версия модуля скачается и распакуется у вас на сайте, попутно предложив скачать все необходимые для него модули.
      drush en views - модуль включён.

      Вот вам доброе видео о Drupal.

      Ответить

  19. Гость 2013/05/03

    Спасибо статья суперская, я понял что делал все правильно. Правда для себя решил делать так:

    Назрел вопрос у Drupal есть $field и $fields в чем разница и как использовать, подскажите где почитать.

    Ответить

    1. Админ 2013/05/04

      $field и $fields конкретно в этом случае?
      $fields - это массив всех полей, которые перебираются в цикле,а $field - это одно поле(и переменная $field доступна лишь в текущей итерации цикла).

      Ответить

  20. Гость 2013/01/30

    Подскажите как в произвольном месте вывести форму добавления определенного типа материала ?

    Ответить

    1. Админ 2013/01/30

      В каком именно? Может вам не совсем это нужно.
      Чтобы вывести форму - можно воспользоваться функцией drupal_get_form.

      Ответить

      1. Гость 2013/01/31

        Да вы правы именно этой функцией и пользуюсь
        print drupal_get_form('dgb_form_entry_form');

        Суть в том, что хочу вывести форму добавления ноды материала во фрагменте панели. form_id выдергиваю из CAPTCHA - но там нет id форм типов материала. Как реализовать ? Я не силен в программировании но где то видел что то подобное -print drupal_get_form( $node->type . 'node_form');

        Ответить

        1. Админ 2013/02/01

          Нет, форма добавления ноды имеет другой айдишник. Может быть поможет модуль panels_everywhere или panels_createnode?

          Ответить

  21. Гость 2013/01/06

    Зачем мы создавали переменные вместо того чтобы просто писать в нужном месте , например?

    Ответить

    1. Админ 2013/01/06

      Просто я как то давно так написал и тут понеслось)
      Вы абсолютно правы.

      Ответить

  22. Гость 2012/12/22

    Вопрос по поводу пункта имен переменных. Можно ли вывести/узнать имена переменных не общие для всех: титл, поле-картинка, поле-ссылка, а индивидуальные? Типа для первой ноды титл1, для второй титл2 и т.д. Для того чтобы, к примеру, вывести у первой название, картинку, а у последующих только название?
    А вообще спасибо. Очень полезно и доходчиво написано(даже для незнающих php) у вас.

    Ответить

    1. Админ 2012/12/23

      Если нет модуля,который позволит выводить материалы во вьюсе в разных вью-модах - то можно использовать сессии или статические переменные(насчет последних не уверен).
      Если на сессиях делать - то в шаблоне смотреть на сессию и при каждом открытии шаблона увеличивать его счётчик.И при последнем прогоне обнулять или удалять его. Но это как то не очень красивый способ...
      Лучше будет препроцессить вьюс, но это уже сложнее,хуком придется делать.

      Ответить

  23. Гость 2012/12/10

    А как изменить значение конкретного поля? Т.е. есть вьюха, в ней 2 поля: картинка и текст, в тексте - ссылка. Нужно по клику на картинке переходить по ссылке из поля текст. Другими словами надо подменить href определенным токеном. Как это осуществить?

    Ответить

    1. Админ 2012/12/10

      Легко.
      Допустим у вас два поля - image(картинка) и link - адрес ссылки.
      Тогда:

      1. <?php foreach ($fields as $id => $field): ?>
      2. <?php
      3. if($id=='link'){$link=$field->content;}
      4. if($id=='image'){$image=$field->content;}
      5. ?>
      6. <?php endforeach; ?>
      7. <?php
      8. //Друпалвейно
      9. print l($image, $link, array('html' => TRUE));
      10.  
      11. //Не друпалвейно
      12. print "<a href='$link'>$image</a>";
      13. ?>

      Ответить

      1. Гость 2012/12/10

        Здорово. А разве $field->content выводит поля не обрамленные в дополнительные теги?

        Ответить

        1. Админ 2012/12/11

          Абсолютно верно. Но тэги можно отключить ещё в настройках поля во вьюсе. Если отключатся не все - то можно обернуть вывод в strip_tags:

          1. $link = strip_tags($field->content);

          Он обрежет все html тэги.

          Ответить

          1. Гость 2012/12/11

            Спасибо, огромное, я так и сделаю.
            Еще один вопросик, чуть-чуть не по теме, но может вы знаете: модуль Views Slideshow, при выводе controls(это ссылки prev pause-resume next), сам текст ссылок видно, но они не кликабельны, хотя в html все норм. В чем может быть дело?

            Ответить

            1. Админ 2012/12/11

              Точно не скажу. Надо посмотреть-есть ли ошибки в консоли фаербага. Может быть неправильно настроен вьюс? И попробовать в другой теме.

              Ответить

              1. Гость 2012/12/11

                А если только для не авторизованного пользователя ссылки не кликабельны, тогда что может быть?

                Ответить

                1. Админ 2012/12/12

                  Тогда права на пользование этим модулем.

                  Ответить

  24. Гость 2012/12/04

    подскажите пожалуйста! Вот темизирую Виевс, все отлично! Вывожу табличкой необходимые поля..
    А как прописать, что бы когда эти поля не заполнены (то есть имели значение NULL)таблица не выводилась.
    Нужно именно прописать, фильтрация не поможет, так как необходимо на одной странице вывести и информацию с таблицей и без нее в зависимости от заполнений полей

    Ответить

    1. Админ 2012/12/07

      Ну прям в шаблоне можно проверять поля.
      Например:

      1. if ($field != '') {}
      2. // или
      3. if ($field != NULL) {}

      Ответить

      1. Гость 2012/12/10

        сделала на выводе Виевс вот так

        >

        Все работает. А как тоже самое сделать в самой ноде?

        field_my_field)) : print ''; ?>>

        такой код работать не хочет...

        Ответить

  25. Гость 2012/11/11

    Кто знает как применить способ описанный выше к шаблону views-view--page.tpl.php ? Для вывода каждого поля в нужном месте.
    Хотелось бы темизировать это , так как эта переменная выводит все поля сразу.

    Ответить

    1. Админ 2012/11/11

      Никак. Это ведь другой шаблон, верхнего уровня, так сказать. В нём можно только раскидать по странице вывод вьюхи,пейджер,хедер и футер,контекстные фильтры.

      Ответить

      1. Гость 2012/11/12

        спасибо за ответ. Всё-таки пришёл к использованию вашего варианта.

        Ответить

  26. Гость 2012/11/04

    Почему код может не работать? Как еще можно узнать id?
    Делаю на 6 версии. Необходимо вывести всех зарегистрированных пользователей в стиле таблицы с выводом полей с профиля.

    Ответить

    1. Админ 2012/11/05

      А шаблон подтянулся? В 6 версии все работает точно так же. А если нужна просто таблица-во вьюхе можно выбрать вид отображения "сетка". Таков вид подойдет.

      Ответить

      1. Гость 2012/11/07

        Нет такой вид не подходит(
        Данный код нужно вставлять в шаблон, который создан? там где "Стиль вывода"? Все удалить и оставить только код?

        Ответить

        1. Админ 2012/11/07

          Да.Да.
          Ну так как код переопределяет вывод - то старый код стало быть не нужен.

          Ответить

  27. Гость 2012/10/22

    Почему-то не выводиться, имя файла указано верно. В чем может быть проблема?

    Ответить

    1. Админ 2012/10/22

      А поля точно называются field_image и title ?
      Шаблон вообще подтягивается?
      Если написать echo '***'; - сработает?

      Ответить

  28. Гость 2012/10/22

    Добрый день! сделала все как у вас написано, все прекрасно работает, но мне нужно чтобы выводились метки к полям, если оставить стандартный код - они выводятся, заменяю на свою...нет.

    спасибо!

    Ответить

    1. Гость 2012/10/22

      добавила еще переменные, только вместо контента - label_html ) если есть другой способ, буду рада помощи! спасибо!

      Ответить

      1. Админ 2012/10/22

        Не совсем понял о чем речь.. В label_html должна быть метка поля. При стандартном шаблоне views - в ней хранится метка,она выводится?

        Ответить

  29. Гость 2012/10/17

    Спасибо, помогло

    Ответить

  30. Гость 2012/10/17

    спасибо! помогло

    Ответить

  31. Гость 2012/04/25

    Я до сих пор жду ваш ответ .

    Ответить

  32. Гость 2012/04/23

    Удалось найти более быстрый способ .

    Формат: Сетка
    Показать: Поля

    Исключаю из вывода все поля кроме одного.

    Далее
    Перезаписать результаты
    Заменить выводимое полем значение

    И обертываю подстановочные шаблоны как хочу.

    Как можете это прокомментировать?

    Какие плюсы и минусы у обоих вариантов?

    Ответить

    1. Админ 2012/04/26

      Можно делать и так.Тогда всё верстка будет тянуться с БД. Чем больше информации тянется оттуда-тем больше нагрузка на неё-это минус.
      А плюс в том, что не придётся править файлы по FTP.

      Ну и думаю можно найти/придумать ещё несколько способов темизации views))

      Мне лично удобнее смотреть верстку в фалах, чем в админке.

      Ответить

  33. Гость 2012/04/22

    Эт че за косяк ?

    1. <?=$img?>


    исправьте

    Ответить

    1. Админ 2012/04/23

      А вы проверяли такой код?Это не косяк,а сокращенная форма записи.Работает аналогично коду:

      1. <?php echo $img; ?>
      2. //одно и тоже
      3. <?=$img?>

      Для этого обязательно должна быть включена директива short_open_tag в php.ini

      Ответить

      1. Гость 2013/02/21

        а как задать класс картинке для дальнейшей обработкой css?

        Ответить

        1. Админ 2013/02/21

          При добавлении этого поля во вьюсе - можно указать класс для элемента,и то, во что будет обернут этот элемент.
          Или прямо в шаблоне написать так:

          1. if($id=='field_image'){
          2. $img='<div class="my-class">' . $field->content . '</div>';
          3. }

          Ответить

  34. Админ 2012/04/12

    Пожалуйста!

    Ответить

  35. Гость 2012/04/11

    Спасибо! Очень помогла статья!

    Ответить

Ваш комментарий успешно создан

Ваш комментарий

  • Для выделения кода оберните его в тэги <code> и </code>
  • Отметьте аналитику