Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
vinegredz

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

Recommended Posts

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

 

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

 

Так:

 

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

 

И так:

 

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

 

Даже так:

 

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

 

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

Share this post


Link to post

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

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

Share this post


Link to post

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

 

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

Share this post


Link to post

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

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

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

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

fields.png

 

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

Share this post


Link to post

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

 

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

 

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

Share this post


Link to post

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

Share this post


Link to post

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

Share this post


Link to post

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

Share this post


Link to post

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

Share this post


Link to post

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
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...