Как загрузить сущность по значениям ее полей

В Drupal существует класс EntityFieldQuery, который позволяет получить сущность по значениям ее полей.

Пример использования

$query = new EntityFieldQuery();
// В качестве первого параметра допустимо передавать следующие значения:
// 'entity_type', 'bundle', 'revision_id' или 'entity_id'.
$query->entityCondition('entity_type', 'node');
// В качестве первого параметра допустимо передавать название колонки таблицы...

DrupalCampCIS'13 Drupal Commerce + ЯндексМаркет

Мой первый доклад, с которым я выступал на Друпал Кемп СНГ, прошедшим 24-25 августа. В своем докладе я попытался охватить и рассказать о возможностях Drupal Comemrce.

Как закрыть на обслуживание только часть сайта

Пример, как закрыть на обслуживание только часть сайта, например ноды определенного типа. Создаем свой модуль, и внутри файла module_name.module имплементируем хук hook_menu_site_status_alter:

/**
 * Implements hook_menu_site_status_alter()
 */
function example_menu_site_status_alter(&$menu_site_status, $path) {
  if ($node = menu_get_object()) {
    if ($node->type == 'article') {
      // Если пользователь имеет разрешение использовать сайт в режиме обслуживания,
      // то показываем ему сообщение, что сайт в...

Большие цены в Drupal Commerce

В Drupal Commerce имеется одна неприятная особенность, с которой может столкнуться каждый. Проблема заключается в том, что в базе данных у цен размер равен int(11). Но существует ряд стран, например Беларусь, где цена 30 000 000.00 и больше - вполне нормальное явление. И тут начинаются проблемы, при попытке оформить заказ с такой ценой - система безотказно будет информировать нас о том, что цена выходит за границы размера поля.

Чтобы исправить эту проблему, имплементируем хук...

Как программно создать компонент для Rules

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

Создание компонента начинаем с того, что создаем файл с названием example.rules_defaults.inc. В этом файле имплеменируем хук hook_default_rules_configuration():

Как вывести способы оплаты в виде таблицы в Drupal Commerce

Для того, чтобы вывести доступные способы оплаты заказа в виде таблицы в Drupal Commerce, необходимо добавить следующий код в свой модуль:

/**
 * Implements hook_form_FORM_ID_alter().
 */
function example_form_commerce_checkout_form_review_alter(&$form, &$form_state) {
  $header = array(
    'payment' => t('Payment'),
    'description' => t('Description'),
  );
  
  $checkout_pane = commerce_checkout_pane_load('commerce_payment');
  foreach ($form['commerce_payment']['payment_method']['#options'] as $key =...

Как создать дополнительную страницу в оформлении заказа в Drupal Commerce

Для начала имплементируем хук hook_commerce_checkout_page_info, в нем нам необходимо добавить информацию о создаваемой странице. Список возможных свойств страницы:

  • page_id - машинное имя страницы, допускается использование строчных букв и цифр, а так же символов "-", "_"
  • title - название страницы, используемое при оформлении заказа
  • name - переводимое название страницы, используемое в административных страницах, а так же соответствует статусу заказа на данной странице, если не...

Делаем красивое уведомление при добавлении товара в корзину в Drupal Commerce

Сегодня я расскажу о том, как сделать красивое уведомление, в котором будет показываться информация об добавляемом товаре после добавления товаров в корзину в Drupal Commerce с помощью Ctools modal API.

Для начала, создадим вьюз, который будет принимать аргумент добавляемого товара и выводить информацию о нем. Это придаст гибкости и в случае необходимости изменения информации о товаре нам не надо будет лезть в код. Показывать сам вьюз я не буду -...