Тема: Цена по запросу

Здравствуйте! Есть группа дорогих товаров у которых нет конкретной цены, рассчитывается индивидуально для каждого клиента. Но очень грустно смотрится в графе цена "0 рублей" , как сделать, чтоб вместо нулей было текстовое сообщение "цена по запросу" ?

Re: Цена по запросу

Нужно поправить шаблон добавив условие проверки.
Если цена 0 то выводить такую строчку. Например:

{if !$product->getCost(null, null, false)}
   Нет цены
{else}
   Есть цена
{/if}

Re: Цена по запросу

Это совсем не то, выводит просто есть цена и нет цены.

4 Отредактировано Закусило Александр (14.12.2015 15:37:41)

Re: Цена по запросу

Виталий пишет:

Это совсем не то, выводит просто есть цена и нет цены.

Ну это же Ведь для примера.
Вот полный код, который я думаю Вас устроит:

{if !$product->getCost(null, null, false)}
   <span style="color:red;">Цена по запросу</span>
{else}
   {$product->getCost()} {$product->getCurrency()}   
{/if}

Re: Цена по запросу

Ну собственно внедрил такой код, выводит теперь везде "цена по запросу" даже там где была цена.

<span class="myCost">
{if $product->getCost(null, null, false)}
   <span>Цена по запросу</span>
{else}
{$product->getCost()}
{/if}
</span> {$product->getCurrency()}

Re: Цена по запросу

Плохо смотрите. Вы же неправльно условие скопировали.
Вы сделали:

{if $product->getCost(null, null, false)}

А я привёл:

{if !$product->getCost(null, null, false)}

И перенесите строку которая отвечает за отображение Валюты в нужное условие

Re: Цена по запросу

До этого делал так , но ничего не меняется, цены по-прежнему отображаются как до внесения изменений, там где 0, отображается 0. Подумал что знак ! лишний.

<span class="myCost">
{if !$product->getCost(null, null, false)}
   <span>Цена по запросу</span>
{else}
{$product->getCost()} {$product->getCurrency()}
{/if}
</span> 

8 Отредактировано Вова (21.12.2015 15:14:36)

Re: Цена по запросу

Описанный выше вариант не подошёл. А вот так работает:

                {if $product->getCost()>0}
                    <span class="myCost">{$product->getCost()}</span> {$product->getCurrency()}
                {else}
                    <span class="myCost">Цена по запросу</span>
                {/if}

Если цена больше нуля - эта цена и выводится. Если цена равна нулю - выводится строка "Цена по запросу".
Изменения вносились в файл product.tpl . Аналогично можно вставить и в list_products.tpl.

Повысить оценку Понизить оценку

9 Отредактировано Закусило Александр (21.12.2015 16:10:29)

Re: Цена по запросу

Вова пишет:

Описанный выше вариант не подошёл. А вот так работает:

                {if $product->getCost()>0}
                    <span class="myCost">{$product->getCost()}</span> {$product->getCurrency()}
                {else}
                    <span class="myCost">Цена по запросу</span>
                {/if}

Если цена больше нуля - эта цена и выводится. Если цена равна нулю - выводится строка "Цена по запросу".
Изменения вносились в файл product.tpl . Аналогично можно вставить и в list_products.tpl.

$product->getCost() возвращает отформатированную строку, а не число. Если число будет больше 1000, то код $product->getCost()>0 не сработает. Ведь там будет "1 000" Поэтому я и получаю цену через $product->getCost(null, null, false), т.к. в этом случае вернётся всегда цифра.

/**
    * Возвращает цену товара
    * 
    * @param mixed $cost_id - id или Название цены. Если null, то текущая цена у пользователя.
    * @param integer $offer - комплектация
    * @param bool $format - форматировать цену
    * @param bool $inBaseCurrency - возвращать стоимость в базовой валюте
    * @return mixed
    */
    function getCost($cost_id = null, $offer = null, $format = true, $inBaseCurrency = false)

10

Re: Цена по запросу

Вова пишет:

Описанный выше вариант не подошёл. А вот так работает:

                {if $product->getCost()>0}
                    <span class="myCost">{$product->getCost()}</span> {$product->getCurrency()}
                {else}
                    <span class="myCost">Цена по запросу</span>
                {/if}

Если цена больше нуля - эта цена и выводится. Если цена равна нулю - выводится строка "Цена по запросу".
Изменения вносились в файл product.tpl . Аналогично можно вставить и в list_products.tpl.


Спасибо Вова! Все прекрасно работает!

11

Re: Цена по запросу

Можно еще вставить ссылку вместо просто текста "цену по запросу" на вывод формы обратной связи.

12

Re: Цена по запросу

Александр,
Получается, что наиболее корректна следующая запись :

{if $product->getCost(null, null, false)>0}
    <span class="myCost">{$product->getCost()}</span> {$product->getCurrency()}
{else}
   <span class="myCost">Цена по запросу</span>
{/if}

Функция getCost  с такими параметрами выдаёт цену (число).
Цена (число) проверяется на условие (больше ли нуля), если да - выводится цена (строка)+ валюта(строка), если  нет - выводится текст (строка).

А что же тогда проверяется в условии :

    {if !$product->getCost(null, null, false)}

?! Это логическое условие ноль - false, а не ноль - true?

Повысить оценку +1 Понизить оценку

13 Отредактировано Закусило Александр (22.12.2015 12:28:16)

Re: Цена по запросу

Вова,

?! Это логическое условие ноль - false, а не ноль - true?

Тоже самое. 0 и false в таком условии равнозначны в соответствии с канонами php. Можете проверить. Т.е. это условие - если не ноль. Но видимо из-за того, что число в итоге получается не integer (0), а float(0.00), то у него не работает.

    {if !$product->getCost(null, null, false)}

14

Re: Цена по запросу

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

Повысить оценку Понизить оценку

15

Re: Цена по запросу

Я не разбираюсь в программировании и кодах. Увидев заголовок "Цена по запросу" заинтересовался этим и захотелось сделать такую же функцию при нуле.
Не сразу понял как сделать то, что здесь написано, но попробовав последовательно, и потратив пару часов, Всё получилось.
Очень полезная вещь! СПАСИБО!
Предлагаю внести эту функцию обновлением в платформу ReadyScript.

Повысить оценку Понизить оценку

Re: Цена по запросу

Юрий пишет:

Я не разбираюсь в программировании и кодах. Увидев заголовок "Цена по запросу" заинтересовался этим и захотелось сделать такую же функцию при нуле.
Не сразу понял как сделать то, что здесь написано, но попробовав последовательно, и потратив пару часов, Всё получилось.
Очень полезная вещь! СПАСИБО!
Предлагаю внести эту функцию обновлением в платформу ReadyScript.

Мы не хотим усложнять шаблон с карточкой товара, она и так перегружена по максимуму.

17 Отредактировано Андрей (01.02.2016 09:06:36)

Re: Цена по запросу

Подскажите, как вывести название Цены?
Т.е. Что пользователь зашел на сайт увидел не "600 руб.", а "Розница: 600 руб."
А если зашел пользователь имеющий свой тип цены увидел: "Ваша цена: 400 руб."
Все пересмотрел, но не понял.
http://readyscript.ru/dev-manual/class_ … d9b6133d9a
Сейчас сделали определение по группе в которой состоит участник, но все же хотелось бы узнать как просто вывести название текущей цены

Повысить оценку Понизить оценку

Re: Цена по запросу

Андрей пишет:

Подскажите, как вывести название Цены?
Т.е. Что пользователь зашел на сайт увидел не "600 руб.", а "Розница: 600 руб."
А если зашел пользователь имеющий свой тип цены увидел: "Ваша цена: 400 руб."
Все пересмотрел, но не понял.
http://readyscript.ru/dev-manual/class_ … d9b6133d9a
Сейчас сделали определение по группе в которой состоит участник, но все же хотелось бы узнать как просто вывести название текущей цены

Ну Вы же когда получаете цену указываете что это за цена.

Например:

{$product->getCost('Зачеркнутая цена')} и {$product->getCost('Розничная цена')}

Что мешает сделать так?:

Зачеркнутая цена: {$product->getCost('Зачеркнутая цена')}<br/>
Розничная цена: {$product->getCost('Розничная цена')}

19 Отредактировано Андрей (01.02.2016 14:16:59)

Re: Цена по запросу

Закусило Александр пишет:
Андрей пишет:

Подскажите, как вывести название Цены?
Т.е. Что пользователь зашел на сайт увидел не "600 руб.", а "Розница: 600 руб."
А если зашел пользователь имеющий свой тип цены увидел: "Ваша цена: 400 руб."
Все пересмотрел, но не понял.
http://readyscript.ru/dev-manual/class_ … d9b6133d9a
Сейчас сделали определение по группе в которой состоит участник, но все же хотелось бы узнать как просто вывести название текущей цены

Ну Вы же когда получаете цену указываете что это за цена.

Например:

{$product->getCost('Зачеркнутая цена')} и {$product->getCost('Розничная цена')}

Что мешает сделать так?:

Зачеркнутая цена: {$product->getCost('Зачеркнутая цена')}<br/>
Розничная цена: {$product->getCost('Розничная цена')}

У нас есть: Оптовики - Оптовая цена
Крупные оптовики - Крупнооптовая цена
Отдельная категория - Индивидуальная цена
Хотелось бы, что бы для каждого выводилась установленная цена, и название этой цены

Уточню: цена на сайте показывается ТОЛЬКО одна
http://55opt.org/product/paket-so-shnur … 8sm-59002/
В зависимости от пользователя

Повысить оценку Понизить оценку

20 Отредактировано Закусило Александр (01.02.2016 17:06:01)

Re: Цена по запросу

Ну правильно. У пользователя своя цена. Её можно получить через:

{$product->getCost()}

Она вернёт цену пользователя. Естественно она показывается после авторизации пользователя.
Т.е. вывести её можно так:

{if $isAuth}
{$product->getCost()}
{/if}

А остальные цены как я и указал выше.
Такой Вариант не подойдёт?
Просто через getCost можно вернуть любую цену.

21

Re: Цена по запросу

Закусило Александр пишет:

Ну правильно. У пользователя своя цена. Её можно получить через:

{$product->getCost()}

Она вернёт цену пользователя. Естественно она показывается после авторизации пользователя.
Т.е. вывести её можно так:

{if $isAuth}
{$product->getCost()}
{/if}

А остальные цены как я и указал выше.
Такой Вариант не подойдёт?
Просто через getCost можно вернуть любую цену.

Вопрос звучит так: Как с помощью getCost получить НАЗВАНИЕ цены?

Повысить оценку Понизить оценку

Re: Цена по запросу

Нет. getCost возвращает только цену.