войти зарегистрироваться

DrupalИмпорт Content type вместе с CCK полями


Я как-то уже описывал процесс импорта Views, а теперь хочу расказать как импортировать Content type со всеми CCK полям.

Иногда бывает очень нужно при активации модуля автоматически создать все типы контента, с которыми этот модуль работает. Чтобы этого не делать вручную, я раскажу как это можно сделать автоматически.

Написал, чтобы самому не забыть, и другим помочь :)
Постарался максимально все описать, так что понятно будет даже новичкам.

DrupalНачинаем работать с Drupal: полное практическое руководство (часть 2)

Продолжение первой части.

Создадим страницу вакансий с помощью модуля Views

Хотя вы и можете самостоятельно писать запросы к базе данных для чтения содержимого, дело это долгое и сложное, даже с учетом мощного API Друпала.
Для построения страницы со списком вакансий мы задействуем Views — модуль, позволяющий извлекать содержимое из базы данных вообще без написания кода.
Попросту говоря, Views — это пользовательский интерфейс построения MySQL-запросов. Views — это невероятно мощный модуль, но порой его бывает трудно освоить начинающим пользователям. Лучший способ разобраться с Views — немного с ним поиграть, чем мы сейчас и займемся.

DrupalНачинаем работать с Drupal: полное практическое руководство (часть 1)

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

Выношу на суд хабраобщества перевод замечательной статьи Getting Started with Drupal: A Comprehensive Hands-On Guide. Данный материал является незаменимым руководством для начинающих друпальщиков, поскольку в нем рассматриваются не только установка и базовые принципы, но и два из «трех китов» Друпал-сайтостроения — Views и CCK. Самое приятное, что вся статья посвящена практическому созданию полезного сайта (доски объявлений). Право, во времена Друпала 4.7, когда я только начинал с ним знакомиться, о таких подробных и внятных руководствах можно было только мечтать.

DrupalРабота с CCK Filefield. Вставка и отображение Flash

imageИногда бывает необходимо отобразить на сайте файл не просто ссылкой, а как-нибудь иначе. Видео и аудиофайлы хочется отображать плеером, с возможностью просмотра (прослушивания), swf — сразу отображать на странице. Для прикрепления файлов к материалам есть отличный модуль Filefield, однако выбор форматтеров для него невелик. Файл можно отобразить просто ссылкой. Немного расширяют его функционал другие модули, например Imagefield позволяет отображать картинки. Я попытаюсь доступно объяснить как добавить возможность отображения Flash контента на примере модуля SWFfield.

Далее будет много кода, мало картинок и вообще всё скучно и уныло...

DrupalСоздание CCK-мультиполей

Данный топик является своеобразным ответом на Нетривиальная задача для Node Reference поля Drupal и Модуль для кулинарного сайта. Но, в отличие от авторов тех двух топиков, я не собираюсь изобретать велосипед и писать свое решение, а просто покажу как эта задача будет решаться в недалеком будущем (да и сейчас вобщем-то уже можно), и что станет стандартом де-факто в Drupal. Почему я так уверенно завляю о стандарте? Все очень просто — речь пойдет о CCK (Content Construction Kit) 3.

DrupalМодуль для кулинарного сайта

Привет %username%,

В ответ на «Нетривиальная задача для Node Reference поля Drupal», решил подпилить для кулинарии один из кастомных модулей.

Персональные блоги Нетривиальная задача для Node Reference поля Drupal

Одно из самых полезных полей, которое предоставляет CCK модуль — это Node Reference. Задача его тривиальна и понятна — связать контент сайта отношениями, что легко понять на примерах:
  • Компания, у которой в контенте должны быть ссылки на Рабочих
  • Футбольный игрок, со связью на ноду его Статистики

Задача, с которой пришлось столкнутся мне состоит в том, как показывать это поле:

  • Реценты, которые состоят из различных ингридиентов(1 курица, 2 апельсина, 50гр специй)

CCK по умолчанию сам оформляет множественный или одиночный выбор node reference, как список или просто ссылку на соответствующий нод. Задача вывода рецепта предполагает, что рецепт и ингридиент являются нодами.

Соответственно, при рендеринге контента Views`ами мы получим:

Курица по болгарски(Рецепт)

  1. Курица(Ингридиент)
  2. Апельсин(Ингридиент)
  3. Специи(Ингридиент)

Вместо:

Курица по болгарски(Рецепт)

  1. 1 курица(Ингридиент)
  2. 2 апельсин(Ингридиент)
  3. 50гр специй(Ингридиент)

Решение данной задачи к сожалению на Google и Drupal.org я не нашел, а потому пришлось выкручиваться, и получилось это довольно просто и красиво.

Для ноды Продукта добавляем еще одно мультиполе Текст, которое в Fields вьюхи ставим после Node Reference.

А в темплейте views-view-fields.tpl.php (или конкретной вьюхи как Вам нужно) пишем магию:

<?php
$nids = array();
?>
<?php foreach ($fields as $id => $field): ?>
<?php
if($id == 'field_product_nid') {
$nids = array_shift($field->handler->field_values);
continue;
}

if($id == 'field_product_title_value') {
$items = array();
$index = 0;
$titles = array_shift($field->handler->field_values);
foreach($titles as $title) {
$items[] = l($title['value'], 'node/' . $nids[$index++]['nid']);
}
// TODO: theming here
$field->content = theme('item_list', $items);
}
?>
<?php if (!empty($field->separator)): ?>
<?php print $field->separator; ?>
<?php endif; ?>

<<?php print $field->inline_html;?> class="views-field-<?php print $field->class; ?>">
<?php if ($field->label): ?>
<?php print $field->label; ?>:

<?php endif; ?>
<?php
// $field->element_type is either SPAN or DIV depending upon whether or not
// the field is a 'block' element type or 'inline' element type.
?>
<<?php print $field->element_type; ?> class="field-content"><?php print $field->content; ?></<?php print $field->element_type; ?>>
</<?php print $field->inline_html;?>>
<?php endforeach; ?>


Это позволит отрендерить вьюху подменяя титл поля Node Reference. Есть ли у Вас решение для данной задачи?

Персональные блоги Drupal API, форматированный вывод CCK-полей

Итак, уверен, что каждый из нас, когда поднимает очередной проект с оригинальным дизайном на Drupal сталкивается с проблемой форматированного вывода различных типов полей CCK в необходимом месте на странице и в нужном порядке. Для этих целей нам совершенно не годится выстраивание полей реализованное на странице «Manage fields», особенно если мы хотим выстроить их в форме добавления материала и в шаблоне различным образом. Форматирование при помощи CSS иногда спасает, но далеко не всегда, а выдергивать поля из переменной $node или из переменной поля $field_имя_поля и писать обработчик прямо в шаблоне node-nodetypename.tpl.php зачастую — мазохизм (хотя в ряде случаев это может быть оправданным решением, но это скорее исключение).

Мною было найдено простое и естественное решение базирующееся на Drupal API:

print content_view_field(content_fields('имя_поля','имя_типа_материала'),$node);

Эта строчка выведет форматированное CCK поле с лейблом или без лейбла, в зависимости от того, какие параметры вы задали на странице «Display fields», в системе управления.

Спасибо за внимание.

DrupalВыводим ноды на Google Maps

Предположим, что у нас есть достаточно простая задача — показывать на карте местоположение объектов (нод, пользователей). Например, офисов, или, скажем, магазинов подарков. Т.е. мы должны получить страницу, где выводится карта с расположением всех объектов заданного типа, и показать карту на странице каждого отдельного объекта. Речь пойдет о 6-ой версии Друпала, но в 5-ке всё аналогично (если честно, скрин в конце снят именно с Drupal 5). Чтобы выполнить эту задачу я буду использовать следующие модули: GMAP, Location, Views (на сайте у меня используются еще и CCK & Contemplate, но они в этой задаче настолько вспомогательны, что говорить о них не стоит).

DrupalСоздание сайта из готовых компонентов на примере сайта заказа еды в офис

В окрестностях нашего офиса нет приличного общепита, поэтому обеды нам привозят на заказ из одного кафэ. Заказ осуществляется за день (на понедельник заказ делается с пятницы), по телефону, с перечислением всех блюд и их количества (в случае если заказ не изменился относительно вчерашнего достаточно просто сказать это). Как компания, занимающаяся разработкой ПО, преимущественно веб, мы до недавнего времени жили по принципу «Сапожник без сапог», и весь учет заказов велся ответсвенным за заказ еды человеком на листочке, в случае изменения заказа нужно было писать письмо этому ответственному человеку, а он уже пересчитывал общий заказ.

Выкроив немного свободного времени в перерыве между проектами реализовал (именно реализовал, а не написал — почему именно так, расскажу немного ниже) систему для заказа еды. За основу, как нетрудно догадаться исходя из тематики блога, была взята CMS Drupal, которая является моим основным инструментом уже около полутора лет.

Цели данного топика:
  • Показать новичкам на довольно простом примере, как создается сайт невысокой сложности на CMS Drupal
  • Кратко расказать про несколько основных модулей — как правило они применяются в 90% проектов на друпале
  • Показать как можно собрать сайт на друпале из готовых компонентов, не написав при этом ни одной строчки кода (на самом деле будет пара строк кода, но немного не в том виде, как он обычно пишется =))


Итак, что должно быть реализовано в проекте:
  • Меню — список блюд, разделенных на категории, с возможностью описания блюд
  • Индивидуальные заказы — пользователь может сделать и заказ, просмотреть его содержимое и изменить
  • Сводный заказ — список всех заказаных пользователями блюд с указанием их количества
  • Возможность делиться впечатлениями о блюдах — тут просто возможность комментирования и рейтингования