Drupal Commerce, Замена нулевых цен на "Цена по запросу"

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

Комментарии

Аватар пользователя АлександрБолт АлександрБолт 18 июля 2013 в 10:34

пытался сделать так в node--product.tpl.php дописать


<?php

if ($content['product:commerce_price']=='0') {
print t('Цена по запросу');
}
else {print render($content['product:commerce_price']);}
?>

но чет не работает...$content['product:commerce_price'] видать не число...

Аватар пользователя АлександрБолт АлександрБолт 18 июля 2013 в 10:53

print_r выдал мне вот такое

Array ( [#theme] => field [#weight] => 2 [#title] => Price [#access] => 1 [#label_display] => hidden [#view_mode] => node_teaser [#language] => und [#field_name] => commerce_price [#field_type] => commerce_price [#field_translatable] => 0 [#entity_type] => commerce_product [#bundle] => product [#object] => stdClass Object ( [revision_id] => 1573 [sku] => EB883 [title] => ODEON UP - Мебель для раковины [revision_uid] => 1 [status] => 1 [log] => Created by FeedsCommerceProductProcessor [revision_timestamp] => 1373947378 [data] => [product_id] => 1573 [type] => product [language] => [uid] => 1 [created] => 1373947378 [changed] => 1373947378 [commerce_price] => Array ( [und] => Array ( [0] => Array ( [amount] => 0 [currency_code] => RUB [data] => Array ( [components] => Array ( [0] => Array ( [name] => base_price [price] => Array ( [amount] => 0 [currency_code] => RUB [data] => Array ( [components] => Array ( ) ) ) [included] => 1 ) ) ) [original] => Array ( [amount] => 0 [currency_code] => RUB [data] => Array ( [components] => Array ( ) ) ) ) ) ) [rdf_mapping] => Array ( ) [display_context] => Array ( [entity_type] => node [entity_id] => 2625 [entity] => stdClass Object ( [vid] => 2625 [uid] => 1 [title] => EB883 ODEON UP - Мебель для раковины [log] => Updated by FeedsNodeProcessor [status] => 1 [comment] => 1 [promote] => 0 [sticky] => 0 [nid] => 2625 [type] => product_display [language] => und [created] => 1373965962 [changed] => 1374044253 [tnid] => 0 [translate] => 0 [revision_timestamp] => 1374044253 [revision_uid] => 1 [body] => Array ( [und] => Array ( [0] => Array ( [value] =>

это я так понял массив значение, как такие штуки читать т.е. мне надо добраться до [amount] но если я пишу $content['product:commerce_price'][amount] это ошибка значит перед ним еще элементы?

Аватар пользователя АлександрБолт АлександрБолт 18 июля 2013 в 12:12

если вам сложно объяснить и показать, вы без проблем можете не читать это сообщение и не обращать внимание на мои вопросы... но все равно спасибо за отклик

Кому не сложно мне помочь...помогите а?)

Аватар пользователя marazmus marazmus 18 июля 2013 в 12:14

если вы не знаете PHP даже на таком минимальнейшем уровне, вы обречены и дальше постить такие вопросы, неужели непонятно?

Аватар пользователя АлександрБолт АлександрБолт 18 июля 2013 в 12:55

добился вот такого
$content['product:commerce_price']['#object']->commerce_price['und']['0']['amount']

но чет похоже на извращение какое то , может есть функция которая получает цены числом в Drupal Commerce?

Аватар пользователя vbard vbard 5 ноября 2014 в 12:12

моё решение для субтемы mp_omega от omega 4, пишем в preprocess/field.preprocess.inc:

<?php
/**
 * Implements hook_preprocess_block().
 */
function mp_omega_preprocess_field(&$variables) {
  
// Change field classes to use BEM syntax. (какая-то магия от омеги)
  
$variables['classes_array'] = preg_replace('/^field-(?!-)/''field--'$variables['classes_array']);
  
$variables['label_display_css'] = drupal_clean_css_identifier($variables['element']['#label_display']);
  
  
//наша магия
  
if ($variables['element']['#field_name'] == 'commerce_price') {
    
$product commerce_product_load($product_id);
    
$price $variables['element']['#object']->commerce_price['und'][0]['amount'];
    
$rounded_price number_format(round($price,-4), 0);

    if (

$rounded_price == 0) {
      
$variables['items'][0]['#markup'] = 'цена уточняется после заказа';
      
$variables['classes_array'][] = 'zero-price';
    }
  }
}
?>