Jump to content

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


vinegredz
 Share

Recommended Posts

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

 

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

 

Так:

 

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

 

И так:

 

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

 

Даже так:

 

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

 

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

Link to comment
Share on other sites

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

 

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

Link to comment
Share on other sites

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

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

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

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

fields.png

 

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

Link to comment
Share on other sites

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

 

Я пытался вытащить конкретное поле из 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}}

 

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

Link to comment
Share on other sites

Говоря по-простому, на указанной странице все продукты находятся в массиве $_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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

{{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 поля. Остальные не будут выведены

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...