Формируем заголовок товара.

Как получить значение TV родителей?

Итак, есть у нас интернет-магазин, имеющий общий каталог в нём несколько категорий товара и в каждой категории лежит товар. Товар загружается с помощью модуля «загрузки и выгрузки» товара, а заголовок страницы формируется по артиклю самого товара.

Image

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

Image

В системе управления сайтом выбираем "Элементы"-> "Управление элементами" -> "Параметры (TV)" -> выбираем "Новый TV параметр".

Image

Имя параметра: name

Заголовок: Название товара:

Описание: Название товара: в родителе

Тип ввода: Text

Выбираем шаблон где будет использоваться данный TV

Image

Далее создаем сниппет.

Название сниппета: GetField

Код сниппета:

   
documentIdentifier;

# $field [ string ]
# Name of the field for which to get the content:
# - any of the document object fields (http://modxcms.com/the-document-object.html)
# - template variable
# Default: 'pagetitle'

$gfStrDocField = (isset($field)) ? trim($field) : 'pagetitle';

# $parent [ 0 | 1 ]
# If set to 1, the snippet will return value for the document parent.
# Default: 0

$gfBoolParent = (isset($parent)) ? $parent : 0;

# $parentLevel [ int ]
# Specifies how high in the document tree to search for the parent of the document:
# - $parentLevel = 0 - returns the ultimate parent (right under site root)
# - $parentLevel = 1 - returns the direct parent
# Default: 0

$gfIntParentLevel = (isset($parentLevel) && is_int((int) $parentLevel)) ? $parentLevel : 0;

# $topid [ int ]
# Id of the topmost document in the document tree under which to search for a parent. Used only with $parent set to 1.
# Default: 0

$gfIntTopDocId = (isset($topid) && is_int((int) $topid)) ? $topid : 0;

/* Do not edit the code below!
----------------------------------------------- */

# Include logic
include_once('assets/snippets/getfield/getfield.inc.php');

# Get parent document ID
if ($gfBoolParent)
	$gfIntDocId = gfGetParentId($modx, $gfIntDocId, $gfIntTopDocId, $gfIntParentLevel);

# Get content of the field
$output = gfGetFieldContent($modx,$gfIntDocId,$gfStrDocField);

unset($gfIntDocId, $gfStrDocField, $gfBoolParent, $gfIntParentLevel, $gfIntTopDocId);

return $output;
?>

Заходим в категорию товара, там у Вас должен появиться TV параметр, и вписываем наименование товара.

Image

Там, где мы раньше вызывали [ +pagetitle+] меняем на такой вызов:

Вызов на странице каталога [ [GetField? &parent=`0` &field=`name`]] [ +pagetitle+]

Вызов на странице самого товара [ [GetField? &docid=`[ *parent*]` &field=`name`]] [ *pagetitle*]

убрать пробел между первыми скобками [ [GetField? и [ +pagetitle и [ *pagetitle и [ *parent*]

В итоге должно получиться так.

Image

Все сниппеты и html коды можно скачать здесь

сниппет GetField.txt

вызов сниппета в чанке на странице каталога здесь

вызов сниппета на странице товара здесь

Комментарии

Отменить