Редактор полей в Vtiger CRM. Активируем возможность задавать собственное имя поля.

Редактор полей в Vtiger CRM. Активируем возможность задавать собственное имя поля.

Vtiger CRM даёт нам отличную возможность быстро и легко созавать поля в любом модуле. Но при таком подходе есть одна загвоздка.

В редакторе полей вы можете задавать заголовок поля, даже его длину, но при создании система назначает имя вновь созданному полю автоматически, при этом имя будет совсем нечитаемым, например cf_997. Где cf - сокращённо "Custom Field", а 997 - это номер нового поля.

И это совсем не удобно для разработки или для интеграции по API. Если вы создаёте только одно поле, то ничего страшного. А если кастомных полей много, то такое разнообразие цифр превращается в кошмар.

Вы просто будете вынуждены проверять по базе как называется ваше поле, чтобы вставить его номер в код. Но что если вместо номера будет какой-то понятный текст. Например, cf_friend_name. Согласитесь, это намного более удобно и проще в поддержке?

Ниже я предлагаю несколько рекомендаций по изменению редактора полей, чтобы вы имели возможность задать собственное имя полю. Для этого вам потребуются базовые знания программирования и внести корректировки в 4 файла.

Итак, для начала меняем файл layouts/v7/modules/Settings/LayoutEditor/FieldCreate.tpl, в районе строки 77.

Под этой строкой:

 {if !$IS_FIELD_EDIT_MODE}

Добавляем следующее:

<div class="form-group">

                            <label class="control-label fieldLabel col-sm-5">

                                {vtranslate('Field Name', $QUALIFIED_MODULE)}

                                &nbsp;<span class="redColor">*</span>

                            </label>

                            <div class="controls col-sm-7">

                                <input type="text" class='inputElement col-sm-9' maxlength="50" {if $IS_FIELD_EDIT_MODE}disabled="disabled"{/if} name="fieldName" value="{vtranslate($FIELD_MODEL->get('label'), $SELECTED_MODULE_NAME)}" data-rule-alphanumeric='true' style='width: 75%' />

                            </div>

                        </div>

 

Далее файл modules/Settings/LayoutEditor/models/Module.php в районе строки 146

Измените следующий код:

$max_fieldid = $db->getUniqueID("vtiger_field");

$columnName = 'cf_'.$max_fieldid;

$custfld_fieldid = $max_fieldid;

На этот:

if(!empty($params['fieldName'])){

    $columnName = 'cf_'.$params['fieldName'];

}

else

{

$max_fieldid = $db->getUniqueID("vtiger_field");

$columnName = 'cf_'.$max_fieldid;

$custfld_fieldid = $max_fieldid;

}

 

Далее нам потребуется добавить своего рода валидации, чтобы система принимала только цифры и буквы, а также символ нижнего подчёркивания. Колонки в базе данных создаются с таким же названием, как и имя поля. Поэтому без валидации здесь никуда.

layouts/v7/modules/Settings/LayoutEditor/resources/LayoutEditor.js на строке 854,

под строкой:

form.find('[name="fieldLabel"]').attr('data-rule-illegal', "true");

добавьте следующую:

form.find('[name="fieldName"]').attr('data-rule-alphanumeric', "true");

layouts/v7/modules/Vtiger/resources/validation.js на строке 22 добавляем:

jQuery.validator.addMethod("alphanumeric", function(value, element, params) {

if(value){

var regex = /^[a-z0-9_]+$/g;

if(!value.match(regex)){

return false;

}

}

return true;

}, jQuery.validator.format("Small Letters, numbers, and underscores only please"));

 

Итак, теперь когда вы напишете в поле friendname система создаст новое поле под названием cf_friendname. Т.е. перед названием поля будет добавлен префикс cf_

Это системный префикс, который говорит, что поле было создано вручную и может быть безопасно удалено из CRM.

Если вы не заполните поле, то всё пойдёт по старинке и имя будет создано автоматом, из цифр.

Популярное

Самые популярные посты

Как быть максимально продуктивным на удалённой работе?
Business

Как быть максимально продуктивным на удалённой работе?

Я запустил собственный бизнес и намеренно сделал всё возможное, чтобы работать из любой точки мира. Иногда я сижу с своём кабинете с большим 27-дюймовым монитором в своей квартире в г. Чебоксары. Иногда я нахожусь в офисе или в каком-нибудь кафе в другом городе.

Привет! Меня зовут Сергей Емельянов и я трудоголик
Business PHP

Привет! Меня зовут Сергей Емельянов и я трудоголик

Я программист. В душе я предприниматель. Я начал зарабатывать деньги с 11 лет, в суровые 90-е годы, сдавая стеклотару в местный магазин и обменивая её на сладости. Я зарабатывал столько, что хватало на разные вкусняшки.

Акция! Профессиональный разработчик CRM за 2000 руб. в час

Выделю время под ваш проект. Знания технологий Vtiger CRM, SuiteCRM, Laravel, Vue.js, Golang, React.js. Предлагаю варианты сотрудничества, которые помогут вам воспользоваться преимуществами внешнего опыта, оптимизировать затраты и снизить риски. Полная прозрачность всех этапов работы и учёт временных затрат. Оплачивайте только рабочие часы разработки после приемки задачи. Экономьте на платежах по его содержанию разработчика в штате. Возможно заключение договора по ИП. С чего начать, чтобы нанять профессионального разработчика на full-time? Просто заполните форму!

Telegram
@sergeyem
Telephone
+4915211100235