Писать на форуме DIAFAN.CMS могут только зарегистрированные пользователи. Войдите или зарегистрируйтесь.
Неверное отображение цены
-
29 декабря 2011 г.
-
Я не знаю ошибка это или нет, но почему-то цена товара на сайте отображается неверно.
Указана - Цена: 1670750 руб.
А отображается - Цена: 1.67075e+06 руб.
А если написать цену например 1 или 100000, то всё верно отображается.
В настройках магазина всё нормально:
количество знаков после запятой: пусто
разделитель целых: пусто
разделитель десятков: пусто
-
-
-
-
29 декабря 2011 г.
-
Это из-за неявной типизации переменных в языке PHP, большое число он автоматически переводит в float, вот и выводиться белеберда...
В PHP есть функция number_format, она все решает.
shop.view.php - везде где встречается ["price"] обернуть в эту функцию, найти можно эти места просто Ctrl+F "$this->_('PRICE')" -
-
-
-
29 декабря 2011 г. , редакция: 29 декабря 2011 г.
-
Спасибо. А что значит "обернуть"? И что именно обернуть, это - "price" или это - "$this->_('PRICE')"?
-
-
-
-
29 декабря 2011 г. , редакция: 29 декабря 2011 г.
-
Это значит, где встречается вывод из массива со значением $array["price"], "обернуть" значит number_format($array["price"]). Например,
Кодecho '<div class="shop_price">' . $this->_('PRICE') . ': <span class="shop_price_value">' . number_format($r["price"]) . '</span> <span class="shop_price_currency">' . $result["currency"] . '</span></div>';
-
-
-
-
07 июня 2012 г.
-
В php есть замечательная функция money_format, но она берет свои значения исходи из системных настроек locale
-
-
-
-
26 июля 2017 г.
-
Всем добрый вечер! Кто-нибудь сталкивался с такой проблемой? Установил новые цены в 1С, сделал обмен с сайтом. И цена задублировалась, хотел скрыть через CSS, но у меня не вышло, я так понял надо во вьюхах искать проблему, здесь shop.view.buy_form.phpКод<?php
/**
* Шаблон кнопки «Купить», в котором характеристики, влияющие на цену выводятся в виде выпадающего списка
*
* @package DIAFAN.CMS
* @author diafan.ru
* @version 6.0
* @license http://www.diafan.ru/license.html
* @copyright Copyright (c) 2003-2016 OOO «Диафан» (http://www.diafan.ru/)
*/
if (! defined('DIAFAN'))
{
$path = __FILE__; $i = 0;
while(! file_exists($path.'/includes/404.php'))
{
if($i == 10) exit; $i++;
$path = dirname($path);
}
include $path.'/includes/404.php';
}
/*
* <div class="iprice">
1900 Р
<div class="iprice__last">
Старая цена:
<span>2900 Р</span>
</div>
<div class="iprice__discount">-20%</div>
</div>
<div class="cart__ui">
<div class="cart__wrp">
<div class="cart__field cart__field_color">
<div class="infofield">Цвет:</div>
<div class="selectbox" style="display:inline-block;position:relative"><div class="select" style="float: left; position: relative; width: 89px;"><div class="text">Голубой</div><b class="trigger"><i class="arrow"></i></b></div><div class="dropdown" style="position: absolute; overflow-y: auto; overflow-x: hidden; list-style: none; left: 0px; top: 31px; width: 181px; display: none;"><ul><li class="selected sel">Голубой</li><li>Синий</li><li>Красный</li></ul></div></div><select style="position: absolute; top: -9999px;">
<option>Голубой</option>
<option>Синий</option>
<option>Красный</option>
</select>
</div>
<div class="cart__field cart__field_size">
<div class="infofield">Размер:</div>
<div class="selectbox" style="display:inline-block;position:relative"><div class="select" style="float: left; position: relative; width: 95px;"><div class="text">S (44-46)</div><b class="trigger"><i class="arrow"></i></b></div><div class="dropdown" style="position: absolute; overflow-y: auto; overflow-x: hidden; list-style: none; left: 0px; top: 31px; width: 105px; display: none;"><ul><li class="selected sel">S (44-46)</li><li>l (44-46)</li><li>m (44-46)</li></ul></div></div><select style="position: absolute; top: -9999px;">
<option>S (44-46)</option>
<option>l (44-46)</option>
<option>m (44-46)</option>
</select>
</div>
<div class="cart__field">
<div class="infofield">Кол-во:</div>
<div class="field-count">
<input type="text" value="1">
<div class="field-count__up"></div>
<div class="field-count__down"></div>
</div>
</div>
</div>
<button class="btn btn_green">В корзину</button>
<a href="#" class="btn btn_one_click js-one-click">Купить в один клик</a>
</div>
*/
if (! empty($result["result"]["access_buy"]))
return false;
if($result["row"]["empty_price"])
return false;
$action = '';
if(! $result["result"]["cart_link"] || $result["row"]["no_buy"] || empty($result["row"]["count"]))
{
$action = 'buy';
}
echo '
<form method="post" action="" class="js_shop_form shop_form ajax">
<input type="hidden" name="good_id" value="'. $result["row"]["id"].'">
<input type="hidden" name="module" value="shop">
<input type="hidden" name="action" value="'.$action.'">';
if ($result["row"]["no_buy"] || empty($result["row"]["count"]))
{
$hide_submit = true;
$waitlist = true;
}
if(! $result["result"]["cart_link"])
{
$hide_submit = true;
}
// у товара несколько цен
if ($result["row"]["price_arr"])
{
foreach ($result["row"]["price_arr"] as $price)
{
$param_code = '';
foreach ($price["param"] as $p)
{
if($p["value"])
{
$param_code .= ' param'.$p["id"].'="'.$p["value"].'"';
}
}
if(! empty($price["image_rel"]))
{
$param_code .= ' image_id="'.$price["image_rel"].'"';
}
echo '<div class="iprice js_shop_param_price shop_param_price shop-item-price"'.$param_code.'>';
echo '<span class="js_shop_price" summ="'.$price["price_no_format"].'">'.$price["price"].'</span> '.$result["result"]["currency"];
if (!empty($price["old_price"]))
{
echo PHP_EOL.'<div class="iprice__last">
'.$this->diafan->_('Старая цена').':
<span class="iprice__last_value">'.$price["old_price"].' '.$result["result"]["currency"].'</span>
</div>';
}
if(!empty($result['row']['discount'])) {
echo PHP_EOL.'<div class="iprice__discount">-'.$result['row']["discount"].$result['row']["discount_currency"].($result['row']["discount_finish"] ? ' ('.$this->diafan->_('до').' '.$result['row']["discount_finish"].')' : '').'</div>';
}
if (! $price["count"] && empty($hide_submit) || empty($price["price_no_format"]) && ! $result['result']["buy_empty_price"])
{
echo '<span class="js_shop_no_buy shop_no_buy">'.$this->diafan->_('Товар временно отсутствует').'</span>';
$waitlist = true;
}
echo '</div>';
}
echo '<div class="cart__ui">';
echo '<div class="cart__wrp js_shop_form_param">';
foreach ($result["result"]["depends_param"] as $param)
{
if(! empty($result["row"]["param_multiple"][$param["id"]]))
{
if(count($result["row"]["param_multiple"][$param["id"]]) == 1)
{
foreach ($result["row"]["param_multiple"][$param["id"]] as $value => $depend)
{
echo '<input type="hidden" name="param'.$param["id"].'" value="'.$value.'"'.($depend == 'depend' ? ' class="depend_param js_shop_depend_param"' : '').'>';
}
}
else
{
$select = '';
foreach ($param["values"] as $value)
{
if(! empty($result["row"]["param_multiple"][$param["id"]][$value["id"]]))
{
if(! $select)
{
$select = '<div class="infofield">'.$param["name"].':</div><select name="param'.$param["id"].'" class="shop-dropdown inpselect'.($result["row"]["param_multiple"][$param["id"]][$value["id"]] == 'depend' ? ' depend_param js_shop_depend_param' : '').'">';
}
$select .= '<option value="'.$value["id"].'"'
.(! empty($value["selected"]) ? ' selected' : '')
.' class="js_form_option_selected">'.$value["name"].'</option>';
}
}
if($select)
{
echo '<div class="cart__field">'.$select.'</select></div>';
}
}
}
}
}
else {
echo '<div class="cart__ui"><div class="cart__wrp">';
}
if (empty($result["row"]['is_file']) && empty($hide_submit))
{
echo '<div class="cart__field js_shop_buy"><div class="infofield">'.$this->diafan->_('Кол-во').':</div><div class="field-count js_buy_count">'
. '<input type="text" value="1" name="count" pattern="[0-9]+([\.|,][0-9]+)?" step="any">'
. '<div class="field-count__up js_buy_count_plus"></div><div class="field-count__down js_buy_count_minus"></div></div></div>';
}
echo '</div>';
if(! empty($result["row"]["additional_cost"]))
{
$rand = rand(0, 9999);
echo '<div class="js_shop_additional_cost cart__wrp">';
foreach($result["row"]["additional_cost"] as $r)
{
echo '<div class="cart__field"><input type="checkbox" name="additional_cost[]" value="'.$r["id"].'" id="shop_additional_cost_'.$result["row"]["id"].'_'.$r["id"].'_'.$rand.'" summ="';
if(! $r["percent"] && $r["summ"])
{
echo $r["summ"];
}
echo '"> <label for="shop_additional_cost_'.$result["row"]["id"].'_'.$r["id"].'_'.$rand.'">'.$r["name"];
if($r["percent"])
{
foreach ($result["row"]["price_arr"] as $price)
{
$param_code = '';
foreach ($price["param"] as $p)
{
if($p["value"])
{
$param_code .= ' param'.$p["id"].'="'.$p["value"].'"';
}
}
echo '<div class="js_shop_additional_cost_price" summ="'.$r["price_summ"][$price["price_id"]].'"'.$param_code.'>';
echo ' <b>+'.$r["format_price_summ"][$price["price_id"]].' '.$result["result"]["currency"].'</b></div>';
}
}
elseif($r["summ"])
{
echo ' <div class="js_shop_additional_cost" summ="'.$r["summ"].'"><b>+'.$r["format_summ"].' '.$result["result"]["currency"].'</b></div>';
}
echo '</label></div>';
}
echo '</div>';
}
if(! empty($waitlist))
{
echo '
<div class="js_shop_waitlist js_shop_no_buy js_shop_no_buy_good">
<div style="margin-bottom:10px">'.$this->diafan->_('Товар временно отсутствует').',<br>'.$this->diafan->_('сообщить когда появится на e-mail').':</div>
<input type="email" name="mail" value="'.$this->diafan->_users->mail.'">
<button class="btn btn_green btn_small" type="button" action="wait">'.$this->diafan->_('Ок').'</button>
<div class="errors error_waitlist" style="display:none"></div></div>
';
}
if(empty($hide_submit))
{
echo '<button class="btn btn_green js_shop_buy" type="button" action="buy">'.$this->diafan->_('В корзину').'</button>'.PHP_EOL;
}
if(empty($hide_submit) && ! empty($result["result"]["one_click"]))
{
echo '<button class="js_shop_one_click btn btn_one_click" type="button" data-good_id="'.$result['row']['id'].'" action="one_click">'.$this->diafan->_('Купить в один клик').'</button>';
}
echo '<div class="error"';
if (! empty($result["row"]["count_in_cart"]))
{
echo '>'.$this->diafan->_('В <a href="%s">корзине</a> %s шт.', true, BASE_PATH_HREF.$result["result"]["cart_link"], $result["row"]["count_in_cart"]);
}
else
{
echo ' style="display:none;">';
}
echo '</div></div>';
echo '</form>';
//форма быстрого заказа
if(! empty($result["result"]["one_click"]))
{
$result["result"]["one_click"]["good_id"] = $result["row"]["id"];
echo $this->get('one_click', 'cart', $result["result"]["one_click"]);
}
и shop.view.buy_form_item.php.Код<?php
/**
* Шаблон кнопки «Купить», в котором характеристики, влияющие на цену выводятся в виде выпадающего списка
*
* @package DIAFAN.CMS
* @author diafan.ru
* @version 6.0
* @license http://www.diafan.ru/license.html
* @copyright Copyright (c) 2003-2016 OOO «Диафан» (http://www.diafan.ru/)
*/
if (! defined('DIAFAN'))
{
$path = __FILE__; $i = 0;
while(! file_exists($path.'/includes/404.php'))
{
if($i == 10) exit; $i++;
$path = dirname($path);
}
include $path.'/includes/404.php';
}
/*
<div class="iprice">
1900 Р
<div class="iprice__last">
Старая цена:
<span>2900 Р</span>
</div>
<div class="iprice__discount">-20%</div>
</div>
<div class="cart__ui">
<div class="cart__wrp">
<div class="cart__field cart__field_color">
<div class="infofield">Цвет:</div>
<div class="selectbox" style="display:inline-block;position:relative"><div class="select" style="float: left; position: relative; width: 89px;"><div class="text">Голубой</div><b class="trigger"><i class="arrow"></i></b></div><div class="dropdown" style="position: absolute; overflow-y: auto; overflow-x: hidden; list-style: none; left: 0px; top: 31px; width: 181px; display: none;"><ul><li class="selected sel">Голубой</li><li>Синий</li><li>Красный</li></ul></div></div><select style="position: absolute; top: -9999px;">
<option>Голубой</option>
<option>Синий</option>
<option>Красный</option>
</select>
</div>
<div class="cart__field cart__field_size">
<div class="infofield">Размер:</div>
<div class="selectbox" style="display:inline-block;position:relative"><div class="select" style="float: left; position: relative; width: 95px;"><div class="text">S (44-46)</div><b class="trigger"><i class="arrow"></i></b></div><div class="dropdown" style="position: absolute; overflow-y: auto; overflow-x: hidden; list-style: none; left: 0px; top: 31px; width: 105px; display: none;"><ul><li class="selected sel">S (44-46)</li><li>l (44-46)</li><li>m (44-46)</li></ul></div></div><select style="position: absolute; top: -9999px;">
<option>S (44-46)</option>
<option>l (44-46)</option>
<option>m (44-46)</option>
</select>
</div>
<div class="cart__field">
<div class="infofield">Кол-во:</div>
<div class="field-count">
<input type="text" value="1">
<div class="field-count__up"></div>
<div class="field-count__down"></div>
</div>
</div>
</div>
<button class="btn btn_green">В корзину</button>
<a href="#" class="btn btn_one_click js-one-click">Купить в один клик</a>
</div>
*/
if (! empty($result["result"]["access_buy"]))
return false;
if($result["row"]["empty_price"])
return false;
$action = '';
if(! $result["result"]["cart_link"] || $result["row"]["no_buy"] || empty($result["row"]["count"]))
{
$action = 'buy';
}
if ($result["row"]["no_buy"] || empty($result["row"]["count"]))
{
$hide_submit = true;
$waitlist = true;
}
if(! $result["result"]["cart_link"])
{
$hide_submit = true;
}
// у товара несколько цен
if ($result["row"]["price_arr"])
{
foreach ($result["row"]["price_arr"] as $price)
{
$param_code = '';
foreach ($price["param"] as $p)
{
if($p["value"])
{
$param_code .= ' param'.$p["id"].'="'.$p["value"].'"';
}
}
if(! empty($price["image_rel"]))
{
$param_code .= ' image_id="'.$price["image_rel"].'"';
}
echo '<div class="iprice js_shop_param_price shop_param_price shop-item-price"'.$param_code.'>';
echo '<span class="js_shop_price" summ="'.$price["price_no_format"].'">'.$price["price"].'</span> '.$result["result"]["currency"];
if (!empty($price["old_price"]))
{
echo PHP_EOL.'<div class="iprice__last">
'.$this->diafan->_('Старая цена').':
<span class="iprice__last_value">'.$price["old_price"].' '.$result["result"]["currency"].'</span>
</div>';
}
if(!empty($result['row']['discount'])) {
echo PHP_EOL.'<div class="iprice__discount">-'.$result['row']["discount"].$result['row']["discount_currency"].($result['row']["discount_finish"] ? ' ('.$this->diafan->_('до').' '.$result['row']["discount_finish"].')' : '').'</div>';
}
if (! $price["count"] && empty($hide_submit) || empty($price["price_no_format"]) && ! $result['result']["buy_empty_price"])
{
echo '<span class="js_shop_no_buy shop_no_buy">'.$this->diafan->_('Товар временно отсутствует').'</span>';
$waitlist = true;
}
echo '</div>';
}
}
echo '<div class="error"';
if (! empty($result["row"]["count_in_cart"]))
{
echo '>'.$this->diafan->_('В <a href="%s">корзине</a> %s шт.', true, BASE_PATH_HREF.$result["result"]["cart_link"], $result["row"]["count_in_cart"]);
}
else
{
echo ' style="display:none;">';
}
echo '</div>';
Что предпринять? Кеш чистил, не помогло.
-
-
-
-
26 июля 2017 г.
-
Я думаю, что проблема не во вьюхе. У вас же не у всех товаров такое проявилось.
Т.е. при обмене данными, вы инфу заливаете в базу данных, файлы при этом не затрагиваются.
Смотрите, что у вас получилось в админке. Откройте товар, в котором задублировалась цена и проверьте, все ли там нормально. -
-
Поблагодарили: Станислав (krishtafovichs)
-
-
-
26 июля 2017 г.
-
Удалял из custom shop.view.buy_form.php не помогло, вид изменился, цены так же две, значит не во вьюхе дело...
-
-
-
-
27 июля 2017 г.
-
Уже все цены установил в 1С новой датой и снова сделал обмен = тоже самое. Может можно как-нибудь руками в db поправить?
-
-
-
-
27 июля 2017 г.
-
Причем после данной процедуры часть товаров с косяком нормально отображается, а те что были в норме, с двойной ценой теперь. Разгадка наверное рядом, но я ничегошеньки не понимаю.
-
-
-
-
27 июля 2017 г.
-
На первом скриншоте, который Вы привели в качестве примера, видно, что при исполнении js-скриптов возникает 3 ошибки. Посмотрите их, они укажут на причину недуга и подскажут решение.
-
-
Поблагодарили: Станислав (krishtafovichs)
-
-
-
27 июля 2017 г.
-
Зашел в каждый товар, вручную поставил галку "товар отсутствует" потом снова снял галку и цена вернулась в нормальное состояние. Но это странно, надо искать проблему.
-
-
-
-
- Андрей (R4W)
- 140
-
27 июля 2017 г.
-
Посмотрите таблицу shop_price? Там наверно на каждый good_id по 2 цены стало?
-
-
-
-
Новости
-
18 июня
-
В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
-
24 апреля
-
В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
-
12 января
-
После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке.
Блоги
-
24.04.2024
-
Выпустили новую сборку DIAFAN.CMS 7.1.4.
Блоги
-
12.01.2024
-
В данном руководстве познакомим вас с панелью управления DIAFAN.CMS