Форма поиска

Не получается?

Не получается решить проблему с Друпалом?

Готовы помочь делом и советом. Стоимость часа - 500 руб.

Запросить помощь

Поделитесь ссылкой:

Drupal 7

Как ограничить количество материалов, создаваемых пользователем?

Это легко сделать через hook_node_access. Определим в своем модуле функцию:

<?php
function module_node_access($node, $op, $account)  {
 
  if ($op == 'create') { // проверим - какая операция?
    $type = is_string($node) ? $node : $node->type;
    if ($type == 'your type') {  // наш ли тип?
      $count = db_select('node', 'n') // определим, сколько материалов уже создал пользователь
            ->condition('n.uid', $account->uid)
            ->condition('n.type', $type)
            ->countQuery()
            ->execute()
            ->fetchField();
      return $count > 0 ? NODE_ACCESS_DENY : NODE_ACCESS_ALLOW;  // разрешим, или запретим создание
    } 
  }
 
}
?>

Программно добавить значение Field Collection

Есть сущность (например, тип материала) с полем типа Field Collection, состоящим из нескольких вложенных полей. Как программно добавить значение к нему?

Для примера, у нас есть сущность: заказ / order, а в ней - поле платежи / field_payments, имеющее неограниченное количество значений. Причем, каждый платеж / field_payments содержит несколько полей: дата / field_payment_date, автор / field_payment_author и т.д.

Сначала загрузим сущность, зная id заказа:

$orders = entity_load('order', array($pid));
$order = $orders[$pid];

Затем создадим еще одну сущность типа field_collection_item:

$collection = entity_create('field_collection_item', array('field_name' => 'field_payments'));

И скажем, что она относится к нашему заказу:

Отладка PHP-кода в полях представлений (Views Сustom Field)

Вообще, это плохая практика - размещать PHP-код в полях представления. Во первых, такой код выполняется медленнее, во вторых - до него трудно добраться, нет проверки синтаксиса в редакторе, а самое главное: отсутствуют информативные сообщения об ошибках.

Если в код поля PHP в представлении закрадется ошибка, то в журнале Друпала вы увидите что-то вроде:

Creating default object from empty value 
в файле /home/.../public_html/sites/all/modules/views_customfield/includes
/views_customfield_handler_field_phpcode.inc(118) : eval()'d code в строке 3.

"В строке 3". И все. А где искать эту строку?

Посмотрим, как интерпретируется код поля PHP. 

function eval_phpcode($code, &$static, $data) {
  ob_start();
  print eval('?>'. $code);
  return ob_get_clean();
}

Никакого логгирования почему-то не предусмотрено. Исправим ..

Как разместить форму в блоке

Очень просто:

  1. Описать традиционную функцию формы.
  2. С помощью функции drupal_get_form($form_id) получить структурированный массив формы.
  3. Преобразовать его в HTML, вызвав drupal_render(&$elements).
  4. Передать результат Друпалу в хуке module_block_view().

Как это будет выглядеть в коде. Опишем наш блок в функции модуля, реализующей hook_block_info:

function module_block_info() {
  $blocks['recall'] = array(
    'info' => t('Callback block'),
    'cache' => DRUPAL_NO_CACHE,
  );
  return $blocks;
}

Поскольку при каждом запросе Друпал генерирует для формы уникальный form_token, придется запретить кэширование блока. Далее, создадим hook_block_view:

Программный импорт с помощью feeds

Возникла задача - сделать интерфейс для редактора сайта, позволяющий выполнять импорт данных из файла CSV в материалы Друпала. Проще всего для этого использовать модуль Feeds, имеющий массу полезных расширений.

Сделаем форму загрузки файла для редактора сайта:

Подписка на RSS - Drupal 7

Размещение и поддержка сайтов на Drupal

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

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

Подробнее ...

Предметная фотосъемка

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

Оплата услуг

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

Оплата услуг