Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
vinegredz

Как вывеси значение кастомного поля для продукта?

Рекомендованные сообщения

Здравствуйте!

 

В Commerce можно добавлять для товаров свои значения. Но я никак не пойму как мне в нужных местах эти поля выводить в шаблоне. Пробовал по разному.

 

Так:

 

{$package->fieldValues()['field_4']|raw}

 

И так:

 

{$item->fieldValues()['field_4']|raw}

 

Даже так:

 

{$product->fieldValues()['field_4']|raw}

 

Подскажите, верный синтаксис, пожалуйста.

Поделиться сообщением


Ссылка на сообщение

выводить в шаблоне.

В каком шаблоне?

Поделиться сообщением


Ссылка на сообщение

Желательно без привязки к конкретному месту, но вообще я хотел вывести здесь:

 

{template="cartContents" group="store" params="$location, $currency"}

Поделиться сообщением


Ссылка на сообщение

без привязки к конкретному месту,

Если в шаблоне нет данных, то их нужно сперва получить, чтобы в дальнейшем с ними работать.

но вообще я хотел вывести здесь:
Здесь нет ничего, связанного с продуктом/полями.

Данный код выводиться на странице /store/cart/. Там уже есть поля.

fields.png

 

Посмотрите шаблон cartContents. Там есть примеры, как загружать продукты и поля

Поделиться сообщением


Ссылка на сообщение

Да, все верно они там уже выводятся, но по умолчанию, не подходит.

 

Я пытался вытащить конкретное поле из foreach, но пока результатов не добился.

 

Нужно иметь управление над каждым полем в отдельности. Пытался осознать вот этот код, но PHP так быстро не сдается:

 

{{foreach $item->details as $k => $v}}
<strong>{lang="nexus_pfield_{$k}"}: </strong> {expression="\IPS\nexus\Package\CustomField::load( $k )->displayValue( $v )" raw="true"}<br>
{{endforeach}}

 

Работаю методом тыка, подыскиваю похожие примеры, но пока не сообразил, как все это делается.

Поделиться сообщением


Ссылка на сообщение

Говоря по-простому, на указанной странице все продукты находятся в массиве $_SESSION

Вот код, который можете рассматривать

{{if count( $_SESSION['cart'] )}}
{{foreach $_SESSION['cart'] as $id => $item}}
	{{if $item instanceof \IPS\nexus\extensions\nexus\Item\Package}}
		{{try { $package = \IPS\nexus\Package::load( $item->id ); } catch( \OutOfRangeException $e ) { continue; } }}
	{{endif}}
	{{foreach $item->details as $k => $v}}
		<strong>{lang="nexus_pfield_{$k}"}: </strong> {expression="\IPS\nexus\Package\CustomField::load( $k )->displayValue( $v )" raw="true"}<br>
	{{endforeach}}
{{endforeach}}
{{endif}}

 

Пытался осознать вот этот код, но PHP так быстро не сдается:

В $item->details содержатся поля со введенными значениями

 

$k - ID поля

$v - значение

 

Можете проверять ID

Поделиться сообщением


Ссылка на сообщение

Спасибо, понял. Но как вывести $k вне цикла? Мне нужно управлять каждый полем в отдельности, потому что не все нужно выводить и у каждого свое формление.

Поделиться сообщением


Ссылка на сообщение

{{if count( $_SESSION['cart'] )}}
   {{foreach $_SESSION['cart'] as $id => $item}}
       {{if $item instanceof \IPS\nexus\extensions\nexus\Item\Package}}
           {{try { $package = \IPS\nexus\Package::load( $item->id ); } catch( \OutOfRangeException $e ) { continue; } }}
       {{endif}}
       {{foreach $item->details as $k => $v}}
		{{if $k == 1}}
			Оформление для поля с ID #1
		{{elseif $k == 2}}
			Оформление для поля с ID #2
		{{endif}}
       {{endforeach}}
   {{endforeach}}
{{endif}}

Оформляете 2 поля. Остальные не будут выведены

Поделиться сообщением


Ссылка на сообщение

Спасибо. Это работает как надо.

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...