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

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

  • page_id - машинное имя страницы, допускается использование строчных букв и цифр, а так же символов "-", "_"
  • title - название страницы, используемое при оформлении заказа
  • name - переводимое название страницы, используемое в административных страницах, а так же соответствует статусу заказа на данной странице, если не указано, то по умолчанию используется название страницы
  • help - переводимый текст, который будет показан как помощь в div.checkout-help в верху данной страницы при оформлении заказа
  • weight - целое число, определяющее вес страницы, если не указано, заполняется автоматически
  • status_cart - логическое значение, указывающее, будет ли заказ иметь статус "в корзине" на данной странице; по умолчанию TRUE
  • buttons - логическое значение, указывающее, будут ли показаны кнопки для перехода к следующей или предыдущей странице при оформлении заказа; по умолчанию TRUE
  • back_value - переводимое значение кнопки, используемое для возврата к предыдущей странице заказа; по умолчанию "Back"
  • submit_value - переводимое значение кнопки, используемое для перехода к следующей странице заказа; по умолчанию "Continue"
  • prev_page - page_id предыдущей странице в процессе оформления заказа, не должна устанавливаться ​​при помощи хука, будет заполняться автоматически при загрузке страницы
  • next_page - page_id следующей странице в процессе оформления заказа, не должна устанавливаться ​​при помощи хука, будет заполняться автоматически при загрузке страницы

И так, создаем страницу:

/**
 * Implements hook_commerce_checkout_page_info()
 */
function moduleName_commerce_checkout_page_info() {
  $checkout_pages = array();

  $checkout_pages['moduleName'] = array(
    'name' => t('Custom page name'), 
    'title' => t('Custom page title'), 
    'weight' => 50, 
  );

  return $checkout_pages;
}

Комментарии (9)

Аватар пользователя Benya
Benya

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

Аватар пользователя Benya
Benya

Даже сейчас проверил, этот модуль не может например отключить только кнопку "Назад", не может задать back_value или submit_value, а help вообще обязательное поле, тем самым help отрубить не выйдет, разве что вставить туда пробел - тоесть через одно место

Аватар пользователя Антон
Антон

Спасибо! Возможно придется воспользоваться вашим методом. В любом случае еще один вариант - это хорошо, так что спасибо!
Скажите, возможно у вас есть решение следующей проблемы, относящийся к теме:  возможно ли сделать такую дополнительную страницу (первую при оформлении) сразу с логином и регистрацией. Чтобы и после логина и после регистрации пользователь переходил на следующую страницу оформления.

Аватар пользователя Benya
Benya

Вообще конечно можно, вопрос только в опыте программиста. А вообще есь готовый модуль, если не ошибаюсь это Commerce Checkout Login.

Можно еще посмотреть в кикстарте, там точно эта фича есть.

Аватар пользователя Антон
Антон

Решил задачу с помощью Commerce Checkout Redirect. Кстати, нашел еще один модуль для управления страницами оформления заказа - Commerce Checkout Page Manager

Аватар пользователя Benya
Benya

Это мой модуль :) Но он не позволяет создавать страницы, он только изменяет существующие

Аватар пользователя Антон
Антон

Спасибо за него! Было бы классно добавить в него функционал добавления новых страниц, тогда от Commerce Checkout Pages можно совсем отказаться.

Аватар пользователя Benya
Benya

Я думал об этом, но не думаю, что это хорощая идея делать то, что уже есть. Я думаю, что гораздо лучше обьединить усилия на одном модуле, но к сожалению у меня нет времени заняться этим :(