[ОТВЕТИТЬ]
22.08.2014 18:32
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 рублей) - то надо дальше копать....
22.08.2014 18:35
twix
 
Лол. А number_format уже не работает?
22.08.2014 18:39
KirillHome
 
Цитата:
twix Лол. А number_format уже не работает?
Да если бы я знал хоть что-то по поводу функции PHP ;)
23.08.2014 12:53
aldemko
 
Цитата:
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
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'])).
Если это так - то дальше, по идее - остаётся простая математика.
25.08.2014 02:57
aldemko
 
Цитата:
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
aldemko
 
Теперь я так понял все равно нужно ковырять в 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
KirillHome
 
Т.е. получается, что в основном модуле считается и базовая цена (та, что выведена зачёркнутым) и скидка.
А в "дополнительном модуле" (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
aldemko
 
понятно что ничего не понятно
проверить передалась или нет $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
KirillHome
 
Цитата:
aldemko проверить передалась или нет $disc полагаю пока никак нельзя ?
Повторюсь - я PHP вижу второй раз в жизни (первый раз - года два назад использовал какую-то готовую заготовку для ряда действий)
Все мои "размышления" основаны просто на неких "общих правилах".
25.08.2014 09:29
aldemko
 
не, я ж написал не то что бы в упрек, я сам не особо (((((
просто чтоб для общего рассуждения, может на мысль кого натолкнет )
скидка уже оч надо ( а она не работаеть (((((((((((
25.08.2014 09:29
KirillHome
 
Да, в данном случае ошибочный вызов IncludeComponent.

Читаем описание на Bitrix-е

[php]mixed
IncludeComponent(
string componentName,
string componentTemplate,
array arParams=array(),
object parentComponent=null,
array arFunctionParams=array()
);
[/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",
"BASE_DISC" = $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]
25.08.2014 09:37
aldemko
 
ругается на строку с
[php]"BASE_DISC" = $disc[/php]

на
[php]<?
$disc = $arResult['MIN_PRICE']['PRINT_DISCOUNT_DIFF'];
?>[/php] не ругается
25.08.2014 09:40
aldemko
 
если переделать на
[php] "BASE_DISC" => $disc
),
);[/php]
то ругается на закрывающуюся скобку );
25.08.2014 09:41
KirillHome
 
Запятая лишняя :)

[php] "BASE_DISC" => $disc
)
);
[/php]
25.08.2014 09:44
aldemko
 
так не ругается
[php]<?//тут будет компонет pricegd
$APPLICATION->IncludeComponent("hard:pricegd", "catalogitem1", Array(
"ELEMENT_ID" => $arResult["ID"]
),
false,
array(
"ACTIVE_COMPONENT" => "Y",
"BASE_DISC" = >$disc
)
);
?>[/php]

ток теперь цена вниз уползла )) ну то мелочь
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 21 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащийся здесь.



провал цены вниз поправил.
25.08.2014 09:49
KirillHome
 
И - опять же неправильно...
Внимательно читая описание IncludeComponent, видим что первый массив - это Массив входных параметров компонента, а второй - это Массив, содержащий дополнительные параметры отображения компонента: "HIDE_ICONS"=>"Y" - не показывать панель настройки компонента в режиме редактировани/разработки; "ACTIVE_COMPONENT"=>"N" - отключить компонент (код компонента не подключается).

Т.к. надо передать входной параметр, а не параметр отображения, строку "BASE_DISC" => $disc надо перенести в первый массив.

В результате получаем

[php]<?//тут будет компонет pricegd
$APPLICATION->IncludeComponent("hard:pricegd", "catalogitem1", Array(
"ELEMENT_ID" => $arResult["ID"],
"BASE_DISC" => $disc
),
false,
array(
"ACTIVE_COMPONENT" => "Y"
)
);
[/php]
25.08.2014 09:52
aldemko
 
кстати
[php]<?//тут будет компонет pricegd
$APPLICATION->IncludeComponent("hard:pricegd", "catalogitem",
array(
"ELEMENT_ID" => $arResult['ID']
),
false,
array(
"ACTIVE_COMPONENT" => "Y",

),
$disc
);
?>[/php] тоже сработало, я еще раз посмотрел на то что мы с вами переделывали, и заметил что пропустил запятую

но вопрос как лучше будет как выше или

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

ну в смысле сам формат подачи первый или второй лучшим будет и правильнее


Оставил пока так
[php]<div>
<?
$disc = $arResult['MIN_PRICE']['PRINT_DISCOUNT_DIFF'];
?>
<?//тут будет компонет pricegd
$APPLICATION->IncludeComponent("hard:pricegd", "catalogitem",
array(
"ELEMENT_ID" => $arResult['ID'],
"BASE_DISC" => $disc
),
false,
array(
"ACTIVE_COMPONENT" => "Y"
)
);
?>
</div>[/php]
страничка вроде ровно выходит и цена не падает.
25.08.2014 10:00
KirillHome
 
На всякий случай скажу, что у меня сейчас цена (зачёркнутая) отображается как 318 600 рублей, а не как 270 000 рублей (опять НДС?).
25.08.2014 10:01
aldemko
 
Да это с НДС.
сейчас поправится цена, выгружается уже с 1с
уже поправилась зачеркнутая цена
осталось вроде не так уже и много ( но наверное самое сложное
как цену сделать со скидкой (

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

сумму скидки не показало. если я правильно понял этот pricegd не совсем в курсе про $disc

попробовал так вот
[php]
$disc = $arResult['MIN_PRICE']['PRINT_DISCOUNT_DIFF'];

echo '<div class="item_current_price" id="">Скидка (тест): '.$disc.' руб.</div><br />'; [/php]
все равно про сумму скидки ему не ведомо
25.08.2014 10:18
KirillHome
 
Дальше надо читать в гугле по запросу "IncludeComponent передать параметр" и пробовать, пробовать, пробовать....
Параметр то был передан, а вот как его обработать? Я "с разбега" не разобрался....
25.08.2014 10:22
aldemko
 
а если попробовать, правда я пока не понял как но такую затею


есть код

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

//echo $arResult['DISCOUNTS']['col'];
/*echo "<pre>";
print_r ($arResult['DISCOUNTS']);
echo "</pre>";*/

$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]
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++)//погнали скидки выводить
[/php]
как я понял тут написано примерно так
если есть цена, выводим цену, если нет выводим цена по запросу
и ниже пошли перечни скидок и их действия

[php] 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 />";
}[/php]


нельзя ли как нибудь сделать к примеру новую скидку через этот pricegd
к примеру skidkacena
и сделать например так

[php]
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++)//погнали скидки выводить
[/php]

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

очень нужно что бы проклятая цена сдвинулась на сумму скидки (((
25.08.2014 10:39
aldemko
 
по идее должно сработать
сюда
[php]if ($arResult['DISCOUNTS']['price_osn'][''] != "")
{
echo '<div class="item_current_price" id="">Цена: '.$osn_price.' руб.</div><br />';[/php]
вместо .$osn_price. пишу например 123

получается цена 123 руб.

но если вставляю переменные с ниже описываемых скидок, он их не воспринимает
и пишет Цена руб.


в чему веду


через справочники настроены скидки которые выводятся сейчас, под ценой.
если в настройки справочника допустим добавить СКИДКА
а в выводе цены прописать что если есть СКИДКА то выводить ее а не osn_price
25.08.2014 10:53
KirillHome
 
Что надо делать - более-менее понятно.
1) Проверить, указанна ли "основная цена".
2) Проверить, что переданный параметр "скидка" - больше нуля.
3) Если ответ на оба вопроса да - то вычесть "скидку" из "основной цены" и вывести полученное значение.

Это всё ерунда.
Вопрос совсем в другом - как получить этот переданный параметр "скидка"???
Действия для нахождения ответа на этот вопрос - "искать и читать" я уже давал выше.
25.08.2014 10:56
aldemko
 
сюда же как то передается (((
но как

[php]
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;//это ноль прибавлен доля того, чтобы из 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 />';
}
[/php]

нижнюю
в которой в принципе реализованы скидки для переделанного модуля pricegd
[php]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]echo '<div class="item_current_price" id="">Цена: '.$osn_price.' руб.</div><br />';[/php]

может можно будет в скидке просто указать
[php]echo '<div class="item_current_price" id="">Цена: 'СКИДКА' руб.</div><br />';[/php]

У меня уже совсем нет сил, и так знаний не много, еще этот кипишь мол скорее скорее, вообще сбивает с толку.
все требуют требуют, а голова все хуже и хуже думает (
25.08.2014 11:12
KirillHome
 
Всё, указанное в данном куске - не передаётся, а вычисляется (берётся из базы).
Не путаем понятия.

Изначально передаётся в pricegd только идентификатор товара "ELEMENT_ID" => $arResult["ID"].
Всё.

Теперь пытаемся передать ещё одно значение "BASE_DISC" = >$disc.
И работать уже с ним.
25.08.2014 11:33
aldemko
 
а если хотя бы временно, попробовать через вычисляется
ну как предыдущие скидки. а потом уже пробовать со стандартной скидкой ?(
просто я не знаю как и эти скидки которые сейчас работают применить к цене (
25.08.2014 11:46
KirillHome
 
А что это за картинка
?

Что за параметры (числа) в ней задаются?

Вообще, что мне кажется.
Был "доработан" функционал стандартной Bitrix-системы.
Возможно, что были доработаны контроллеры с использованием MVC (см разъяснения в Google).
Возможно - что и нет.
Сейчас мы без знаний самого Bitrix-а (да и без знаний PHP, если честно) пытаемся что-то сделать.
Возможно (но не обязательно) что-то получится.
Но что-то мне подсказывает, что скорее всего не получится.

Ещё раз совет - искать специалиста по Bitrix, ставить задачу (множественность складов, вариабельность цен по ним, необходимо так же учитывать цены/параметры из "базовой карточки товара"), получить на выходе не только решение (работающий внедрённый модуль), но и документацию.
25.08.2014 11:50
aldemko
 
это скрин из самодельных скидок которые сейчас отображаются под ценой и описаны в этом коде
[php]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]
так при помощи настроек


и я подумал почему не создать склад СКИДКА.
что не проблематично конечно,
а проблема в том что бы именно этот склад скидка вывести в основной цене ,вместо основной цены



Кстати там тож не ясность пока что
есть склад Под заказ
и в скрипте мол если Под заказ то выводить то-то и то-то
переименовываю склад в Под заказ123
и в скрипте пишу мол если заказ 123 то выводить то-то и то-то
и не работает ( меняю назад, работает



вот я смог получить новую скидку

указал параметр Наличие на складах (не установлено)


а как в цену его перекинуть (
это значение
[php] 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 />";
}[/php]
сюда
[php]if ($arResult['DISCOUNTS']['price_osn'][''] != "")
{
echo '<div class="item_current_price" id="">Цена: '.$osn_price.' руб.</div><br />';
}[/php]
25.08.2014 13:34
aldemko
 
если я его просто меняю, то значение в строке ЦЕНА пропадает
как будто первая часть кода не имеет понятия о второй


Опции темы


Часовой пояс GMT +3, время: 02:45.

 

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