Авторизация

UMI CMS API Шаблоны данных Добавить префикс к полю с помощью формата значения

Работал с версией UMI 2.9.7

Добавить к полю префикс или суффикс можно с помощью подсказки или формата значения.

Создавать новый формат значения можно с помощью restriction. Есть пример в WIKI.

Здесь приведу пример как я делал, код нужно проверять и тестировать. Создаём новый restriction:

baseRestriction::add('mm', 'mm', 5);

Можно проверить созданные (или создать новый) restriction в БД таблица : cms3_object_fields_restrictions

Сейчас в админке работать не будет, чтобы начало работать нужно создать класс в classes/system/subsystems/models/data/restrictions/mm.php в нём:

<?php
class mmRestriction extends baseRestriction {
    protected $errorMessage = 'restriction-error-mm';

    public function validate($value, $objectId = false) {
        return $value ? $value : true;
    }
};
?>

Теперь всё работает осталось сделать вывод на странице, чтобы при выводе значения поля добавлялись мм. к цифрам.

Я проверял поле на совпадение с ID restriction и выводил название restriction, таким способом:

public function getFieldRestrictionTitle($field_id = false){
    $fieldsCollection = umiFieldsCollection::getInstance();
    $field = $fieldsCollection->getField($field_id); // FIELD ID

    if($field->getRestrictionId()){
        return baseRestriction::get($field->getRestrictionId())->getTitle();
    }
}

 

Не забываем добавить getFieldRestrictionTitle в permissions.custom.php

$permissions = array(
    'tree' => array(),
    'view' => array('getFieldRestrictionTitle')
);

В XSLT выводил так:

<xsl:template match="property[@type='int']" mode="catalog_object_group">
<xsl:variable name="res" select="document(concat('udata://catalog/getFieldRestrictionTitle/', @id))/udata" />
<li><b><xsl:value-of select="title" />: </b> <xsl:value-of select="value" /><xsl:if test="$res != ''">&#0160;<xsl:value-of select="$res" /></xsl:if></li>
</xsl:template>

Может кому будет полезно!

[ Saitadmin.ru || с 2006 по текущий год || Санкт-Петербург ]