Jump to main content Jump to doc navigation

Что такое @INHERIT привязка?

Привязка @INHERIT автоматически найдет соответствующее значение родительского ресурса и будет использовать его в качестве значения. Если родительский ресурс также имеет @INHERIT, он будет смотреть на значение родительского ресурса этого родителя и так далее. Если это заканчивается в корне, и никакое значение не было указано, значение будет 0.

Например, если вы определяете переменную шаблона для использования значения по умолчанию «@INHERIT», то при создании дочернего ресурса под родителем значение TV в дочернем элементе будет отражать значение, хранящееся в родительском ресурсе.

Дьявол кроется здесь в деталях: если значение дочернего TV не было переопределено (т.е. Унаследованное значение сохраняется), тогда MODX следует экономным правилам хранения, и ни одна строка не будет создана внутри таблицы modx_site_tmplvar_contentvalues. Если вы обращаетесь к значениям через API, то с помощью метода getTVValue() для объекта страницы он будет проходить вверх по иерархии, чтобы найти значение из родительского ресурса.

$pages = $modx->getCollection('modResource');
foreach ($pages as $p) {
    print $p->getTVValue('my_inheritance');
}

Будь осторожен Значение не всегда записывается в базу данных, когда вы используете @INHERIT.

Обратите внимание, что это динамический поиск, который происходит всякий раз, когда дочерняя страница сохраняется и ее значение пусто. Если вы позже отредактируете значения в родительском, они будут отражены в дочернем. Вы можете нарушить наследство, указав свою собственную ценность в ребенке. Вы также можете восстановить наследование, удалив значение и оставив поле пустым.

Использование

Это используется, когда вы определяете переменную шаблона. Вы вставляете следующее в поле «Значение по умолчанию» TV:

@INHERIT

Смотрите также