xandeadx.ru Блог музицирующего веб-девелопера

Drupal → Заменить сообщение о завершении заказа на свой .tpl.php файл

Опубликовано в

Два способа заменить сообщение о завершении заказа на свой .tpl.php файл.

Способ 1

Будет работать только из своего модуля.

MODULENAME.module:

/**
 * Implements hook_theme().
 */
function MODULENAME_theme() {
  return array(
    'commerce_checkout_completion_message' => array(
      'template' => 'commerce-checkout-completion-message',
      'variables' => array(
        'order' => NULL,
      ),
    ),
  );
}
 
/**
 * Implements hook_commerce_checkout_pane_info_alter().
 */
function MODULENAME_commerce_checkout_pane_info_alter(&$checkout_panes) {
  $checkout_panes['checkout_completion_message']['callbacks']['checkout_form'] = 'MODULENAME_completion_message_callback';
}
 
/**
 * Checkout complete message callback.
 */
function MODULENAME_completion_message_callback($form, &$form_state, $checkout_pane, $order) {
  return array(
    'message' => array(
      '#theme' => 'commerce_checkout_completion_message',
      '#order' => $order,
    ),
  );
}

commerce-checkout-completion-message.tpl.php:

Order #<?php echo $order->order_id; ?> completed.

Способ 2

Будет работать и из модуля и из темы.

template.php:

/**
 * Implements hook_theme().
 */
function THEMENAME_theme() {
  return array(
    'commerce_checkout_completion_message' => array(
      'template' => 'templates/commerce-checkout-completion-message',
      'variables' => array(
        'order' => NULL,
        'message' => NULL,
      ),
    ),
  );
}
 
/**
 * Implements hook_form_FORM_ID_alter(): commerce_checkout_form_complete.
 */
function THEMENAME_form_commerce_checkout_form_complete_alter(&$form, &$form_state) {
  $form['checkout_completion_message']['message'] = array(
    '#theme' => 'commerce_checkout_completion_message',
    '#order' => $form_state['order'],
    '#message' => $form['checkout_completion_message']['message']['#markup'],
  );
}

templates/commerce-checkout-completion-message.tpl.php:

<?php echo $message; ?>
Написанное актуально для Commerce 1
Похожие записи

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

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании