[Решено] Открытие продукта с определенными атрибутами

Главные вкладки

Аватар пользователя frajj frajj 23 января 2014 в 17:56

Здравствуйте уважаемые друпалеры.

Каким образом можна открыть ноду товара с конкретными атрибутами без использования модуля Commerce Product URLs (так чтобы url не менялся)?
Например с одного места сайта нужно попадать на красную футболку а с другого на синюю.

Схема стандартная, одна нода и несколько продуктов с различными атрибутами.

Комментарии

Аватар пользователя frajj frajj 29 января 2014 в 1:47

Одну половину задачи сделал с помощю js скрипта и плагина JQuery Session Plugin , получилось передать ID товара друпалу.

Далее делаю так:

/**
 * Implements hook_commerce_product_reference_default_delta_alter().
 */

function my_module_commerce_product_reference_default_delta_alter(&$delta, $products) {
  if ($delta) {
    if (isset($_REQUEST['new_pid'])) {
      $pid = $_REQUEST['new_pid'];
      if (isset($products[$pid])) {
        $delta = $pid;
      }
    }
  }
}

Но коректно сменить дефолтный товар не получается. Меняется только значение в виджете атрибута "Цвет", все остальные поля остаются из первого товара (цена, картинка ...)
Для полноты информации уточню что указанные поля прикреплены к сущности товара а не ноды.

Возможно я не тот хук использую или не правильно или может еще способ какой есть?

Уже несколько вечеров прогуглил. Буду признателен за любые идеи и советы.

Аватар пользователя frajj frajj 25 марта 2014 в 2:08

Замотался и забыл написать найденое решение которое оказалось довольно простым.
Итак код в студю.

/**
 * Implements hook_commerce_product_reference_default_delta_alter().
 */

function my_module_commerce_product_reference_default_delta_alter(&$delta, &$products) {
  if (isset($_REQUEST['new_pid'])) {
    foreach ($products as $key => $product) {
      if ($product->product_id == $_REQUEST['new_pid']) {
        $delta = $key;
      }
    }
  }
}