Привет.
Настраиваю связку D7 + commerce. Вопрос вот в чем:
в продукте есть поле "Файлы". Для всех оно по умолчанию скрыто. Как его показать только для покупателя, чей заказ оплачен?
Не совсем до конца понимаю, как настроить рулзы. Event и Conditions установил следующие:
EVENТ - After updating an existing commerce order
ELEMENTS - Data comparison
Parameter: Data to compare: [commerce-order:status], Data value: Checkout: Completе.
А вот с actions пока не понял. Есть идеи? Или, может, этот вопрос можно решить по-другому, не трогая рулзы?
Буду признателен за помощь.
UPD:
Использовал вот это решение. Может, кому пригодится.
Комментарии
с помощью Rules это вряд ли получится, можно в препроцессе поколдовать:
if ($vars['type'] == 'product_display' && пользователь_не_купил_товар) {
$vars['content']['имя_поля']['#access'] = FALSE;
}
}
@xxandeadxx спасибо, за ответ. А подкинешь идею, куда копать по поводу того, как определить "пользователь_не_купил_товар"?
1. найти все заказы юзера
2. обойти заказы и найти заказанные товары
3. обойти заказанный товары и найти нужный
Нашел запрос к БД, который вытягивает все Product IDs, которые юзер купил и status = completed:
<?php
// Assuming we have $user populated with the user's ID:
$query = db_select('commerce_order', 'cord');
$query->join('commerce_line_item', 'li', 'cord.order_id = li.order_id');
$query->join('field_data_commerce_product', 'prod', 'li.line_item_id = prod.entity_id');
$query->condition('cord.uid', $user, '=')
->condition('cord.status', 'completed', '=')
->fields('prod', array('commerce_product_product_id'));
$result = $query->execute();
?>