Как заменить цену на любую надпись для некоторых товаров.

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

Аватар пользователя oleg220 oleg220 18 января 2011 в 20:18

Здравствуйте.
В ubercart, как известно, цена товара может быть записана как число. А как мне для некоторых товаров написать вместо цены любую фразу, как к примеру "по запросу", а у других "договорная".
Темизация тут наверное не поможет, т.к. такая надпись нужна не у всех товаров, и должна быть возможность оперативно её менять.
Была тут какая то тема с похожим, дак там предлагали модуль uc_members_only, которые выставляет такие надписи определённым ролям, но опять же всем товарам сразу.

Может есть другая возможность сменить цифру на слово?

Комментарии

Аватар пользователя bsyomov bsyomov 19 января 2011 в 6:49

Если не хочется писать свой модуль, может быть просто добавить cck поле, и если оно не пустое выводить его вместо формы добавления в корзину и цены в шаблоне?

Аватар пользователя oleg220 oleg220 19 января 2011 в 9:13

Сапсибо! Это, как я понимаю, нужно делать в шаблоне вывода товара. За вывод отвечают эти строки:


<?php print $fusion_uc_display_price?>
<?php 
print $fusion_uc_add_to_cart?>

Не подскажете, как на php написать это условие проверки? Если за надпись будет отвечать, к примеру такое

<?php print $node->field_pozaprosu[0]['view']; ?>

Просто я на php не программирую.

Аватар пользователя bsyomov bsyomov 19 января 2011 в 12:50

Как-то так:

<?php if($node->field_pozaprosu[0]): ?>
  <?php print $node->field_pozaprosu[0]['view']; ?>
<?php else: ?>
  <?php print $fusion_uc_display_price; ?>
  <?php print $fusion_uc_add_to_cart; ?>
<?php endif; ?>

По необходимости разбавить всё это разметкой... Если её не будет, можно убрать лишние <?php ?>

Аватар пользователя oleg220 oleg220 19 января 2011 в 13:23

Рановато немного я стал радоваться. Smile
Так, если поле заполнено, то показывается надпись, и это хорошо. А если поле пустое (стоит НЕТ), то и показывается пустое место вместо цены и корзины Sad

Аватар пользователя oleg220 oleg220 19 января 2011 в 22:52

Спасибо bsyomov, очень помог. Была небольшая ошибка. Вот так правильно:

<?php if($node->field_pozaprosu[0]['view']): ?>
  <?php print $node->field_pozaprosu[0]['view']; ?>
<?php 
else: ?>
  <?php print $fusion_uc_display_price?>
  <?php print $fusion_uc_add_to_cart?>
<?php 
endif; ?>

Я счастлив Smile

Аватар пользователя oleg220 oleg220 26 января 2011 в 15:05

Так с выводом надписи вместо цены на странице товара всё работает отлично, как и прежде.
Но вот незадача, надо бы и на странице каталога товаров так же выводить эту надпись вместо цены у некоторых товаров.
Я пошёл, как казалось мне, правильным путём.
Закинул в папку с темой файл views-view-field--sell-price.tpl.php и стал там химисить. Украшения цены работают (т.е. файл вроде как тот, что и нужен). Но, если добавить туда условие, как в файле node-product.tpl.php , то на это условие этот файл чихал. Видимо, он не догадывается, что тут проверять, или не имеет необходимой информации.
Как тут можно поступить?

Аватар пользователя oleg220 oleg220 30 января 2011 в 20:05

Пробовал сделать это путём модуля views_customfield. Условие проверки заполненности поля field_pozaprosu сделать у меня получилось, и даже смог вывести цену (правда, в формате 2990.0000 (т.е. с 4-мя лишними нулями на конце, что конечно же мне не нравится)). Но, вот кнопку добавления в корзину добавить вместе с ценой так и не получилось, не знаю, какая переменная за это отвечает.
Пишу вот так:

<?php 
if($data->node_data_field_pozaprosu_field_pozaprosu_value) {
 print 
$data->node_data_field_pozaprosu_field_pozaprosu_value;
}
else {
print 
$data->uc_products_sell_price;
}
?>

Кто-нибудь может подсказать, как решить эту проблему? Этим модулем, или темизацией, без разниц.