22.08.2014 18:32
Всё не так :)

В pricegd\catalogitem1\template.php
можно поменять строку

[php]$osn_price = $arResult['DISCOUNTS']['price_osn'][''] + 0;//это ноль прибавлен доля того, чтобы из 5000.00 стало 5000 (убрали .00)[/php]
на
[php]$osn_price = $arResult['DISCOUNTS']['price_osn']['']+ 0;//это ноль прибавлен доля того, чтобы из 5000.00 стало 5000 (убрали .00)
$disc = $arResult['MIN_PRICE']['PRINT_DISCOUNT_DIFF'];
echo '<div class="item_current_price" id="">Скидка (тест): '.$disc.' руб.</div><br>';
[/php]

Если выведет в этой появившейся строке (Скидка (тест)) число (300 или -300) - то тогда (для простого вывода цены со скидкой) можно будет сделать так

[php]$osn_price = $arResult['DISCOUNTS']['price_osn'][''] + $arResult['MIN_PRICE']['PRINT_DISCOUNT_DIFF'] + 0;//это ноль прибавлен доля того, чтобы из 5000.00 стало 5000 (убрали .00)[/php]

Если же выведет в этой появившейся строке (Скидка (тест)) что-то другое (к примеру "300 рублей) - то надо дальше копать....
22.08.2014 18:35
Лол. А number_format уже не работает?
22.08.2014 18:39
Цитата:
twix Лол. А number_format уже не работает?
Да если бы я знал хоть что-то по поводу функции PHP ;)
23.08.2014 12:53
Цитата:
KirillHome Всё не так :)

В pricegd\catalogitem1\template.php
можно поменять строку

[php]$osn_price = $arResult['DISCOUNTS']['price_osn'][''] + 0;//это ноль прибавлен доля того, чтобы из 5000.00 стало 5000 (убрали .00)[/php]
на
[php]$osn_price = $arResult['DISCOUNTS']['price_osn']['']+ 0;//это ноль прибавлен доля того, чтобы из 5000.00 стало 5000 (убрали .00)
$disc = $arResult['MIN_PRICE']['PRINT_DISCOUNT_DIFF'];
echo '<div class="item_current_price" id="">Скидка (тест): '.$disc.' руб.</div><br>';
[/php]

Если выведет в этой появившейся строке (Скидка (тест)) число (300 или -300) - то тогда (для простого вывода цены со скидкой) можно будет сделать так

[php]$osn_price = $arResult['DISCOUNTS']['price_osn'][''] + $arResult['MIN_PRICE']['PRINT_DISCOUNT_DIFF'] + 0;//это ноль прибавлен доля того, чтобы из 5000.00 стало 5000 (убрали .00)[/php]

Если же выведет в этой появившейся строке (Скидка (тест)) что-то другое (к примеру "300 рублей) - то надо дальше копать....


Когда первый вариант меняю на второй
выходит


если вместо первого варианта третий, то результат исходный. цена 270 000
23.08.2014 14:04
Понял.
Чего я пытаюсь добиться? Отобразить скидку.
От неё посчитать уже "основную цену".

Тогда другой вариант:
visual1\bitrix\catalog.element\visual\template.php

Строка
[php] <div class="item_economy_price" id="<? echo $arItemIDs['DISCOUNT_PRICE']; ?>" style="display: <? echo ($boolDiscountShow ? '' : 'none'); ?>"><? echo ($boolDiscountShow ? GetMessage('ECONOMY_INFO', array('#ECONOMY#' => $arResult['MIN_PRICE']['PRINT_DISCOUNT_DIFF'])) : ''); ?></div>
[/php]
на
[php]// <div class="item_economy_price" id="<? echo $arItemIDs['DISCOUNT_PRICE']; ?>" style="display: <? echo ($boolDiscountShow ? '' : 'none'); ?>"><? echo ($boolDiscountShow ? GetMessage('ECONOMY_INFO', array('#ECONOMY#' => $arResult['MIN_PRICE']['PRINT_DISCOUNT_DIFF'])) : ''); ?></div>
$disc = $arResult['MIN_PRICE']['PRINT_DISCOUNT_DIFF'];
echo '<div class="item_economy_price" id="">Скидка (тест): '.$disc.' руб.</div><br>';
[/php]
По идее должна будет написать (серым) вместо строки "Экономия в цене" строку "Скидка (тест):)" и далее какое-то значение.

Ещё раз - надеюсь, что $arResult['MIN_PRICE']['PRINT_DISCOUNT_DIFF'] возвращает размер скидки (хотя, конечно, смущает array('#ECONOMY#' => $arResult['MIN_PRICE']['PRINT_DISCOUNT_DIFF'])).
Если это так - то дальше, по идее - остаётся простая математика.
25.08.2014 02:57
Цитата:
KirillHome Понял.
Чего я пытаюсь добиться? Отобразить скидку.
От неё посчитать уже "основную цену".

Тогда другой вариант:
visual1\bitrix\catalog.element\visual\template.php

Строка
[php] <div class="item_economy_price" id="<? echo $arItemIDs['DISCOUNT_PRICE']; ?>" style="display: <? echo ($boolDiscountShow ? '' : 'none'); ?>"><? echo ($boolDiscountShow ? GetMessage('ECONOMY_INFO', array('#ECONOMY#' => $arResult['MIN_PRICE']['PRINT_DISCOUNT_DIFF'])) : ''); ?></div>
[/php]
на
[php]// <div class="item_economy_price" id="<? echo $arItemIDs['DISCOUNT_PRICE']; ?>" style="display: <? echo ($boolDiscountShow ? '' : 'none'); ?>"><? echo ($boolDiscountShow ? GetMessage('ECONOMY_INFO', array('#ECONOMY#' => $arResult['MIN_PRICE']['PRINT_DISCOUNT_DIFF'])) : ''); ?></div>
$disc = $arResult['MIN_PRICE']['PRINT_DISCOUNT_DIFF'];
echo '<div class="item_economy_price" id="">Скидка (тест): '.$disc.' руб.</div><br>';
[/php]
По идее должна будет написать (серым) вместо строки "Экономия в цене" строку "Скидка (тест):)" и далее какое-то значение.

Ещё раз - надеюсь, что $arResult['MIN_PRICE']['PRINT_DISCOUNT_DIFF'] возвращает размер скидки (хотя, конечно, смущает array('#ECONOMY#' => $arResult['MIN_PRICE']['PRINT_DISCOUNT_DIFF'])).
Если это так - то дальше, по идее - остаётся простая математика.


Доброго времени суток
подменил строки
ругается гаденыш что-то (



ппц. оставлял просьбы о помощи как на сайте битрикса, так и на других форумах, ни одного ответа(
только на этом ресурсе пытаются помочь. зачем тогда другие форумы, по закрывать их надо )



PS
я попробовал удалить

Строка
[php] <div class="item_economy_price" id="<? echo $arItemIDs['DISCOUNT_PRICE']; ?>" style="display: <? echo ($boolDiscountShow ? '' : 'none'); ?>"><? echo ($boolDiscountShow ? GetMessage('ECONOMY_INFO', array('#ECONOMY#' => $arResult['MIN_PRICE']['PRINT_DISCOUNT_DIFF'])) : ''); ?></div>
[/php]

все равно цена на месте

если просто под ней написать
[php]$disc = $arResult['MIN_PRICE']['PRINT_DISCOUNT_DIFF'];
echo '<div class="item_economy_price" id="">Скидка (тест): '.$disc.' руб.</div><br>';[/php]

по получается вот что


ругается, но надпись скидка тест выводит, но и '.$disc.' выводит как текст (


допетрал
надо было код в <? взять


Вставил вот так
SQL код:
</div>

    <div class="item_economy_price" id="<? echo $arItemIDs['DISCOUNT_PRICE']; ?>" style="display: <? echo ($boolDiscountShow ? '' : 'none'); ?>"><? echo ($boolDiscountShow ? GetMessage('ECONOMY_INFO', array('#ECONOMY#' => $arResult['MIN_PRICE']['PRINT_DISCOUNT_DIFF'])) : ''); ?></div>
    </div>
    <?
    $disc = $arResult['MIN_PRICE']['PRINT_DISCOUNT_DIFF']; 
echo '<div class="item_economy_price" id="">Скидка (тест): '.$disc.' руб.</div><br>';  
    ?>
<?

Получилось



теперь осталось понять как строку ЦЕНА поменять на цена - скидка


Обрезал все до

[php] <div class="item_economy_price" id="<? echo $arItemIDs['DISCOUNT_PRICE']; ?>></div>
</div>
<?
$disc = $arResult['MIN_PRICE']['PRINT_DISCOUNT_DIFF'];
echo '<div class="item_economy_price" id="">Скидка (тест): '.$disc.' руб.</div><br>';
?>[/php]

чтоб меньше не нужного было

получилось так вот


Эта строка
[php] <div class="item_economy_price" id="<? echo $arItemIDs['DISCOUNT_PRICE']; ?>></div>
</div>[/php] вообще по ходу ни за что не отвечает.
я ее удаляю совсем а картина не меняется

25.08.2014 08:12
Теперь я так понял все равно нужно ковырять в templates/.default/components/hard/pricegd/catalogitem1/template.php

код:
[php]
<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();

//echo $arResult['DISCOUNTS']['col'];
/*echo "<pre>";
print_r ($arResult['DISCOUNTS']);
echo "</pre>";*/
//$disc = $arResult['MIN_PRICE']['PRINT_DISCOUNT_DIFF'];
$osn_price = $arResult['DISCOUNTS']['price_osn'][''] +0;//это ноль прибавлен доля того, чтобы из 5000.00 стало 5000 (убрали .00)
if ($arResult['DISCOUNTS']['price_osn'][''] != "")
{
echo '<div class="item_current_price" id="">Цена: '.$osn_price.' руб.</div><br>';
}
else
{
echo '<div class="item_current_price" id="">Цена: по запросу</div><br>';
}

for($i = 0; $i < $arResult['DISCOUNTS']['col']; $i++)//погнали скидки выводить
{
if ($arResult['DISCOUNTS']['dnk_s'][$i] == $arResult['DISCOUNTS']['dnk_out'][$i] && $arResult['DISCOUNTS']['price_osn'][''] != "")
{
$type_s_out = "";
if ($arResult['DISCOUNTS']['type_s'][$i] == "Процент")
{
$type_s_out = $arResult['DISCOUNTS']['val_s'][$i]."%";
}

if ($arResult['DISCOUNTS']['sklad_s'][$i] == "Под заказ")
{
echo "<span style='font-weight:bold; color:#00A80D; font-size: 15px;'>&nbsp;&nbsp;Под заказ, цена со скидкой <span style='font-size: 16px;' >".$type_s_out."</span>: <span style='font-weight:bold; font-size: 16px; color: #FA8C00;'>".$arResult['DISCOUNTS']['skid'][$i]." руб.</span></span><br>";
}

if ($arResult['DISCOUNTS']['sklad_s'][$i] == "Владивосток")
{
echo "<span style='font-weight:bold; color:#00A80D; font-size: 15px;'>&nbsp;&nbsp;Цена со скидкой <span style='font-size: 16px;' >".$type_s_out."</span> во Владивостоке: <span style='font-weight:bold; font-size: 16px; color: #FA8C00;'>".$arResult['DISCOUNTS']['skid'][$i]." руб.</span></span><br>";
}

if ($arResult['DISCOUNTS']['sklad_s'][$i] == "Москва")
{
echo "<span style='font-weight:bold; color:#00A80D; font-size: 15px;'>&nbsp;&nbsp;Цена со скидкой <span style='font-size: 16px;' >".$type_s_out."</span> в Москве: <span style='font-weight:bold; font-size: 16px; color: #FA8C00;'>".$arResult['DISCOUNTS']['skid'][$i]." руб.</span></span><br>";
}

if ($arResult['DISCOUNTS']['sklad_s'][$i] == "")
{
echo "<span style='font-weight:bold; color:#00A80D; font-size: 15px;'>&nbsp;&nbsp;Цена со скидкой: <span style='font-size: 16px;' >".$type_s_out."</span> <span style='font-weight:bold; font-size: 16px; color: #FA8C00;'>".$arResult['DISCOUNTS']['skid'][$i]." руб.</span></span><br>";
}

if ($arResult['DISCOUNTS']['comment'][$i] != "")
{
echo "<span style='font-style: italic; color:#000; font-size: 12px;'>&nbsp;&nbsp;&nbsp;".$arResult['DISCOUNTS']['comment'][$i]."</span><br>";
}


}

}

?>
[/php]



эта строка выводит Цену
[php]$osn_price = $arResult['DISCOUNTS']['price_osn'][''] +0;[/php]
так ошибку выдает
[php]$osn_price = $arResult['DISCOUNTS']['price_osn'][''] -['MIN_PRICE']['PRINT_DISCOUNT_DIFF'] +0;[/php]
25.08.2014 08:59
Т.е. получается, что в основном модуле считается и базовая цена (та, что выведена зачёркнутым) и скидка.
А в "дополнительном модуле" (pricegd) - рассчитываются цены по каким-то другим правилам.
Осталось понять две вещи:
1) Как передать в pricegd размер скидки как параметр.
2) Как потом эту переданную скидку обработать в pricegd.

1) Ну, скорее всего - заменив
[php]<div class="item_price">
<?
$boolDiscountShow = (0 < $arResult['MIN_PRICE']['DISCOUNT_DIFF']);
?>
<div class="item_old_price" id="<? echo $arItemIDs['OLD_PRICE']; ?>" style="display: <? echo ($boolDiscountShow ? '' : 'none'); ?>"><? echo ($boolDiscountShow ? $arResult['MIN_PRICE']['PRINT_VALUE'] : ''); ?></div>
<div class="item_current_price" id="<?// echo $arItemIDs['PRICE']; ?>">
</div>

<div>

<?//тут будет компонет pricegd
$APPLICATION->IncludeComponent("hard:pricegd", "catalogitem1", Array(
"ELEMENT_ID" => $arResult["ID"]
),
false,
array(
"ACTIVE_COMPONENT" => "Y"
)
);
?>
</div>

<div class="item_economy_price" id="<? echo $arItemIDs['DISCOUNT_PRICE']; ?>" style="display: <? echo ($boolDiscountShow ? '' : 'none'); ?>"><? echo ($boolDiscountShow ? GetMessage('ECONOMY_INFO', array('#ECONOMY#' => $arResult['MIN_PRICE']['PRINT_DISCOUNT_DIFF'])) : ''); ?></div>
</div>
[/php]
на
[php]<div class="item_price">
<?
$boolDiscountShow = (0 < $arResult['MIN_PRICE']['DISCOUNT_DIFF']);
?>
<div class="item_old_price" id="<? echo $arItemIDs['OLD_PRICE']; ?>" style="display: <? echo ($boolDiscountShow ? '' : 'none'); ?>"><? echo ($boolDiscountShow ? $arResult['MIN_PRICE']['PRINT_VALUE'] : ''); ?></div>
<div class="item_current_price" id="<?// echo $arItemIDs['PRICE']; ?>">
</div>

<div>
<?
$disc = $arResult['MIN_PRICE']['PRINT_DISCOUNT_DIFF'];
?>
<?//тут будет компонет pricegd
$APPLICATION->IncludeComponent("hard:pricegd", "catalogitem1", Array(
"ELEMENT_ID" => $arResult["ID"]
),
false,
array(
"ACTIVE_COMPONENT" => "Y"
),
$disc
);
?>
</div>

<div class="item_economy_price" id="<? echo $arItemIDs['DISCOUNT_PRICE']; ?>" style="display: <? echo ($boolDiscountShow ? '' : 'none'); ?>"><? echo ($boolDiscountShow ? GetMessage('ECONOMY_INFO', array('#ECONOMY#' => $arResult['MIN_PRICE']['PRINT_DISCOUNT_DIFF'])) : ''); ?></div>
</div>
[/php]
в bitrix\catalog.element\visual\template.php

2) А вот с этим уже (для меня) сложнее - а как в PHP изменить количество получаемых параметров (если надо менять в "модуле-получателе" - я не нашёл нигде в pricegd подобного... Плохо искал?)? А как это нужно описывать? Как с переданными параметрами работать?

Будет ответ на второй вопрос (как правильно получить переданные в pricegd параметры) - можно будет продолжить изыскания.

Хотя, конечно, всё это строительство костылей (ведь если даже и получится справиться - то исправления коснутся только части отображения элемента каталога; и не коснутся ни отображения списка каталога; не, тем более - корзины покупателя).

Моё мнение - надо переделывать самому/заказывать переделку модуля pricegd с тем, что бы:
1) Его работа была согласована с основой работой в Bitrix-е
2) Логика его работы в части ценообразования была бы прописана и известна (Базовая цена? Порядок применения скидок? Цена на сайте? Цена на складе в Москве? Цена на складе во Владивостоке? и т.д.)
3) Сам модуль был бы снабжён максимально подробными комментариями для возможности его модификации в дальнейшем из-за изменения каких-либо условий (была бы сделана дополнительная административная панель и т.п.)
25.08.2014 09:17
понятно что ничего не понятно
проверить передалась или нет $disc полагаю пока никак нельзя ?

ps

если сделать так
[php]<div class="item_price">
<?
$boolDiscountShow = (0 < $arResult['MIN_PRICE']['DISCOUNT_DIFF']);
?>
<div class="item_old_price" id="<? echo $arItemIDs['OLD_PRICE']; ?>" style="display: <? echo ($boolDiscountShow ? '' : 'none'); ?>"><? echo ($boolDiscountShow ? $arResult['MIN_PRICE']['PRINT_VALUE'] : ''); ?></div>
<div class="item_current_price" id="<?// echo $arItemIDs['PRICE']; ?>">
</div>

<div>
<?
$disc = $arResult['MIN_PRICE']['PRINT_DISCOUNT_DIFF'];
?>
<?//тут будет компонет pricegd
$APPLICATION->IncludeComponent("hard:pricegd", "catalogitem1", Array(
"ELEMENT_ID" => $arResult["ID"]
),
false,
array(
"ACTIVE_COMPONENT" => "Y"
),
$disc
);
?>
</div>

<div class="item_economy_price" id="<? echo $arItemIDs['DISCOUNT_PRICE']; ?>" style="display: <? echo ($boolDiscountShow ? '' : 'none'); ?>"><? echo ($boolDiscountShow ? GetMessage('ECONOMY_INFO', array('#ECONOMY#' => $arResult['MIN_PRICE']['PRINT_DISCOUNT_DIFF'])) : ''); ?></div>
</div>[/php]

получается так

[php]Parse error: syntax error, unexpected T_VARIABLE in /адрес......./catalog.element/visual/template.php on line 493[/php]



+ если я правильно понял а могу понять не правильно
этот код не передает данные в parcegd а берет оттуда
[php]<?//тут будет компонет pricegd
$APPLICATION->IncludeComponent("hard:pricegd", "catalogitem",
array(
"ELEMENT_ID" => $arResult['ID']
),
false,
array(
"ACTIVE_COMPONENT" => "Y"
)

);
?>[/php]
25.08.2014 09:23
Цитата:
aldemko проверить передалась или нет $disc полагаю пока никак нельзя ?
Повторюсь - я PHP вижу второй раз в жизни (первый раз - года два назад использовал какую-то готовую заготовку для ряда действий)
Все мои "размышления" основаны просто на неких "общих правилах".
Часовой пояс GMT +3, время: 18:28.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.