Вы можете использовать редактор шаблонов документов Rentman, чтобы настроить шаблоны в соответствии со своими предпочтениями и нуждами компании. Вам не надо уметь программировать, ведь мы работаем по системе WYSIWYG («что видишь, то и получишь»).
Тем не менее мы хотим, чтобы технически продвинутые пользователи могли вносить в шаблоны более масштабные изменения, помимо тех, что предлагает WYSIWYG. Поэтому мы сделали возможным редактирование CSS, регулирование и логичное выстраивание переменных, а также применение условных стилей.
Примечание. Для применения описанных выше функций требуются технические навыки. Если у вас их нет, обратитесь за помощью к сторонней компании или воспользуйтесь нашими дополнительными услугами по настройке шаблонов. В нашу сферу поддержки не входит внедрение CSS, переменных и условных стилей, а также устранение неполадок в процессе.
CSS
Если вы хотите вручную изменить CSS документа по своему усмотрению, то можете сделать это через меню «Стили документа» в редакторе шаблонов.
Прежде чем менять CSS, мы советуем применить тему, которая структурирует документ. После это вы сможете внести нужные изменения.
Классы CSS
У каждого элемента шаблона в Rentman есть класс CSS, который можно использовать для настройки собственного стиля. В нашем распоряжении нет полного списка классов, которым мы могли бы поделиться, но вы можете посмотреть, какой их них нужно использовать, открыв код документа. Для этого необходимо воспользоваться меню браузера в редакторе шаблонов.
На примере выше строки с прокатными элементами в модуле оборудования имеют класс item rental
.
Совет. Строки могут быть динамически сформированы и иметь один и тот же класс. Например, у всех прокатных элементов будет указанный выше класс. Чтобы поменять конкретные строки, используйте превдоселекторы, например :nth-child(i)
.
PHP
Если вы будете редактировать текстовый блок в любом системном шаблоне, то увидите, как меняется представленная информация. И если до начала редактирования ваше имя клиента выглядело как «Rentman», то теперь на его месте {$f.customer.displayname}
. Это переменная. Она извлекает отображаемое имя клиента из проекта и вставляет его на свое место в создаваемый документ.
Модификаторы переменных
В большинстве случаев для отображения определенной переменной достаточно просто добавить ее в документ. Однако бывают случаи, когда необходимо манипулировать определенной переменной. Например, прежде чем соотнести цену с числом (чтобу узнать об условных операторах if, смотрите раздел ниже) требуется преобразовать цену в цифры.
Для этого можно добавить к переменной модификатор. Возьмем пример выше и используем модификатор regex_replace. Вот как выглядит переменная полной цены {$f.project_total_price}
, преобразованная в цифры:
{$f.project_total_price|regex_replace:'/[^0-9]/':''|intval}
Чтобы узнать, какие типы манипуляций возможны с переменными, прочитайте документацию о модификаторах переменных.
Примечание. В редакторе шаблонов разрешено использование не всех переменных. При применении недопустимого модификатора на экране появится предупреждение. Ниже вы найдете список пользовательских модификаторов и функций, разрешенных к использованию в нашем редакторе шаблонов.
Вы можете применять к переменным следующие пользовательские модификаторы:
"lcfirstLocal",
"lcfirstlocal",
"ucfirstLocal",
"ucfirstlocal",
"formatTime",
"formatBytes",
"formatDateTime",
"formatDiscount",
"formatDistance",
"formatDuration",
"formatMonth",
"formatDay",
"formatDate",
"formatBoolean",
"formatNumber",
"formatPrice",
"formatPercentage",
"formatSpellout",
"formatPriceCustom",
Пример. Модификатор {$number|formatPrice}
отобразит число, возвращаемое переменной {$number}
, в качестве цены с использованием десятичных и тысячных разделителей и валюты в соответствии с данными модуля «Конфигурация» и настройками страны в шаблонах документов. Если вы используете рубли и страна документа Россия, то возвращаемое значение переменной {$number}
10000 будет показано как 10 000,00 ₽.
Разрешенные функции PHP
В нашем редакторе шаблонов также можно использовать некоторые функции PHP. Список вы найдете ниже. Чтобы узнать о применении этих функций и их синтаксисе, прочитайте документацию PHP.
public const F_TYPE = [
'is_array',
'is_bool',
'is_countable',
'is_int',
'is_integer',
'is_object',
'is_null',
'is_string',
'is_float',
'is_double',
'isset',
];
public const F_CAST = [
'intval',
'boolval',
'doubleval',
'floatval',
];
public const F_DATETIME = [
'time',
'date',
];
public const F_ARRAY = [
'empty',
'count',
'sizeof',
'current',
'explode',
'array_key_exists',
'array_keys',
'array_values',
];
public const F_REGEX = [
'regex_replace',
];
public const F_STRING = [
'nl2br',
"ucfirst",
"lcfirst",
"ucwords",
"htmlentities",
"htmlspecialchars",
"trim",
"ltrim",
"rtrim",
"strtolower",
"strtoupper",
"mb_strtoupper",
"count",
"escape",
"strlen",
"mb_strlen",
"substr",
"mb_substr",
"str_replace",
'str_pad',
'wordwrap',
'sprintf',
'strip_tags',
'urlencode',
];
public const F_MISC = [
'min',
'max',
'abs',
'rand',
'number_format',
'round',
'ceil',
'floor',
];
public const F_RENTMAN = [
"Rentman\\getTemplateVal",
"sumprice",
"substr",
"multiplyprice",
"removePrice",
"toDate",
'buildrow',
'roundcents',
];
Условные операторы if
Условные операторы if заставляют документы выполнять некоторые действия при соответствии определенным условиям, и делать что-то другое, если условие не соблюдено. Такой условный оператор есть в самом первом текстовом блоке всех системных шаблонов коммерческих предложений, контрактов и счетов. Если вы решите отредактировать этот текстовый блок, то увидите следующий код:
{$f.customer.displayname}
{if $f.contact > 0}attn. {$f.contact.firstname} {$f.contact.surfix} {$f.contact.lastname}
{/if}{$f.customer.post_street} {$f.customer.post_number}
{$f.customer.post_postalcode} {$f.customer.post_city} {if $f.customer.country != $company.country}{$f.customer.country}{/if}
Условие всегда определяется в начале оператора if, и в нашем случае оно следующее:
{if $f.contact > 0}
Если возвращаемое значение переменной {$f.contact}
(количество контактных лиц клиента) больше 0, в документе появится информация, указанная до закрывающего тега {/if}
. В нашем случае это будет текст «attn.» и полное имя контактного лица. Если условие не соблюдено (у клиента нет контактного лица), информация внутри условного оператора if будет проигнорирована и в документе ничего не появится.
Это также применимо, если у вас есть несколько условий. Для этого нужно использовать оператор {elseif}
. Пример:
{if $name ='Fred'}
Welcome Sir.
{elseif $name = 'Wilma'}
Welcome Ma'am.
{else}
Welcome, whatever you are.
{/if}
Условные стили
Условные стили позволяют применять определяемый вами класс CSS, если в выбранном столбце указано определенное значение. Например, у вас есть дополнительное поле ввода для оборудования, которое может иметь два значения: синий и оранжевый. Используя условные стили, вы можете указать, что у строк оборудования синего цвета будет класс CSS .blue
, а у строк оборудования оранжевого цвета — класс CSS .orange
.
Сделав это, вы можете стилизовать строки оборудования по отдельности на основе присвоенных им классов. Например, у вас может быть «оранжевое» оборудование, то есть строки в таблице будут иметь соответствующий фон. То же относится и к синему.
Как только вы освоите условные стили, то сможете менять внешний вид документа практически как угодно. Любые стили, применяемые к документам, можно применить к классам, которые вы определяете с помощью условных стилей.
Условные стили можно задать, нажав кнопку «Параметры вырезать/вставить» в выбранном модуле:
Структура
Если вы нажмете кнопку «Параметры вырезать/вставить», перед вами появится вот такое окно:
Чтобы применить условные стили, вы можете добавить следующий код прямо перед закрывающейся скобкой «Параметры вырезать/вставить»:
,
"conditionalstyling": [
{
"condition": {
"field": "templVarName",
"comparator": "comparatorValue",
"value": {
"value": "valueValue"
}
},
"class": "cssClass"
}
]
Отредактируйте этот фрагмент кода, указав свои условия:
- templVarName = значение в поле
templVar
для столбца, в котором вы хотите находить условие. Возьмем для примера скриншот выше. Если вы должны определить условие на основе значения фактора (staffel), вы напишите“staffel”
. - comparatorValue = тип сравнения значения в поле, определенного выше, со значением, выбранным для сравнения. Вы можете использовать различные операторы сравнения, например:
=
(равно),!=
(не равно),>
(больше чем),<
(меньше чем),*=
(содержит),*!=
(не содержит). Если вы хотите проверить, больше фактор, чем 3 или нет, то ставите здесь>
. - valueValue = значение, с которым вы хотите сравнить. Если вы хотите проверить, больше фактор, чем 3 или нет, то здесь надо написать
3
. Так же можно сравнить со значением из другого поля, например:"value":{"value":"templVarName", "type: "templVar"}}
- cssClass = класс CSS, который вы хотите присваивать строкам, отвечающим определенному вами условию, например
factorGreaterThanThree
(фактор больше трех).