Писать на форуме DIAFAN.CMS могут только зарегистрированные пользователи. Войдите или зарегистрируйтесь.

Форум Модули DIAFAN.CMS Магазин Кастомизация вывода дополнительных характеристик в shop.view.param.php и вывод в определенном месте shop.view.id.php


Кирилл (kirilldmt) 318 января 2017 г.

Есть дополнительная характеристика товара - значение1|значение2.
Необходимо выводить её определенным образом (<div class="p1">значение1</div><div class="p2">значение2</div>) в определенном месте shop.view.id.php.
Как это можно реализовать?

Dmitry (afonnikov10) 22118 января 2017 г., редакция 18 января 2017 г.

$result['all_param']
- Обходите массив foreach циклом и с условием if (ID характеристики = "нужный ID") выводите значения характеристики

КОД можно клепать прям во вьюхе...
Спасибо сказали: Привет (romaromk)

Dmitry (afonnikov10) 22118 января 2017 г., редакция 18 января 2017 г.

Вставляете где угодно во вьюхи карточки товара:
Код

foreach ( $result['all_param'] as $values ) {
if($values['id']==14){
echo '<div>'.$values['name'].' => '.$values['value'].'</div>';
}
}


число 14 - меняете на ID характеристики (можно посмотреть в списке характеристик - Админка)

если несколько характеристик (как пример 14 и 15) то:

Код

foreach ( $result['all_param'] as $values ) {
if($values['id']==14 or $values['id']==15){
echo '<div>'.$values['name'].' => '.$values['value'].'</div>';
}
}

Кирилл (kirilldmt) 318 января 2017 г.

Спасибо)
А если доп характеристика содержит 2 значения - например цена и ссылка на другой магазин (2000|http://shop.ru) - как мне разбить это значение на две части при выводе в шаблоне?

Denis (Drachoon) 13918 января 2017 г.

Ну сохраните в разные переменные и подставьте туда куда надо в шаблоне.

Dmitry (afonnikov10) 22118 января 2017 г., редакция 18 января 2017 г.

Код
foreach ( $result['all_param'] as $key => $values ) {
if($key==3){
if(is_array($values['value'])){
// Значение массив
echo "<div>".$values['name']." = ";
foreach ($values['value'] as $value){
echo $value.", ";
}
echo "</div>";
}else{

Показать весь код
// Значение не массив
echo "<div>".$values['name']." = ".$values['value']."</div>";
}
}
//print_r ($values);
}


в строке
Код
if($key==3){

3 - Это ID характеристики
Спасибо сказали: Кирилл (kirilldmt)

Ксения Платова (Kplatova) 08 марта 2017 г.

Дмитрий, а если то же самое делать на списке товаров ?
В коде ниже вывожу название товара и артикул в списке товаров, а хочется еще дополнительно характеристику (id=32)

Код

. '<a href="' . BASE_PATH_HREF . $row["link"] . '" class="item-info__link">'.$row['name'].', '.$row["article"].'</a>'

evrokomfort12 (evrokomfort12) Сайт в Diafan.Cloud06 февраля, среда

А не подскажете, что изменить в коде, чтобы он работал в файлах shop.view.buy_form_id.php и shop.view.buy_form.php?

Степан (idxdoc) 14006 февраля, среда

Сначала нужно убедиться что туда передается полный массив $result, если это так, то ничего не меняется, единственное что может быть, $result кладется в $row. Пишу по памяти. Если не работает, вместо $result, напишите $row

Александра (Alexa0105) 16706 февраля, среда

Воть тут почитайте. Возможно поможет. Именно для buy_form решение.

Алексей (misterio) 112 августа 2017 г., редакция 12 августа 2017 г.

Может подскажите, как вывести характеристику даже если она не заполнена. Т.е. name выводим, а value - пустое значение.
Спасибо!

Степан (idxdoc) 14012 августа 2017 г.

А как Вы выводите если она заполнена?
https://www.diafan.ru/dokument/full-manual/examples/extra-goods-prop/

Виталий NVGPRO (DIAFAN.CMS) 32612 августа 2017 г.

Есть такой файл /modules/shop/shop.model.php
В нем есть функция
Код
private function param(&$good, $function = "id") { ... }
Вот в этой функции идет проверка: если значение пустое, то оно отбрасывается.

Алексей (misterio) 113 августа 2017 г., редакция 13 августа 2017 г.

Спасибо, Виталий!
если кому еще пригодится скидываю по шагам, как делал
находим в /modules/shop/shop.model.php
Код
private function param(&$good, $function = "id") { ... }


внутри этой функции находим
Код
if(isset($row["value"])) {
....
}

добавляем условие else. копируем туда все что лежит в if
и в else вместо
Код
"value" => $row["value"],

пишем
Код
"value" => " ",


Dmitry (afonnikov10) 22113 августа 2017 г., редакция 13 августа 2017 г.

- Как съесть Апельсин на завтрак если его нет в доме(холодильнике)?

1) Купить и положить его (сделать это днем раньше) - в вашем случаи в характеристике иметь доп значение (Нет или Не указано) и у товаров указать его

2) Подойти к холодильнику и Представить продукт, потом открыть поискать и если его нет, закрыть дверь холодильника и повторить процедуру (с перебором всех продуктов.... которые вы знаете из ближайшего магазина....)

как то так)))

Алексей (misterio) 113 августа 2017 г.

ох уж эти умники ))

Dmitry (afonnikov10) 22113 августа 2017 г.

А как изящно описано)))