Очень часто при работе с сайтом на Cotonti возникает задача создания дополнительных полей для заполнения пользователями в своем профиле. Принцип работы с экстраполями.
Допустим, перед нами стоит задача создать поля: Название компании, Адрес, Телефон.
1) Для начала надо уяснить для себя, что в Cotonti данные пользователей хранятся в таблице базы данных, которая называется cot_users (Префикс cot_ может быть другим. например во фриланс-бирже префикс по-умолчанию имеет значение flance_). Чтобы создать экстраполе для этой таблицы, нам нужно перейти в админке в раздел Экстраполя и выбрать нашу таблицу.
2) На странице будет выводиться форма создания экстраполя, а также список уже созданных экстраполей (если они уже были созданы ранее). Итак, чтобы создать экстраполе нам понадобится выбрать для них код и название. Код экстраполя должен состоять только из латинских символов, а название может быть написано на русском.
В нашем случае мы определим значения таким образом:
company — Название компании
addr — Адрес
phone — Телефон
Также для экстраполя можно установить тип поля и другие значения, если например поле будет в виде селекта или другого множественного элемента веб-формы. По-умолчанию тип поля устанавливается в виде простого инпута.
3) После того как мы создали наши экстраполя, нам необходимо разместить их в соответствующих шаблонах пользователя: профиль (users.profile.tpl) и страница пользователя (users.details.tpl).
В профиле пользователь может редактировать свои данные, то есть этот шаблон (users.profile.tpl) содержит форму. Форматы тэгов в ней имеют такой вид: {USERS_PROFILE_НАЗВАНИЕПОЛЯ}
В нашем случае в этот шаблон нужно прописать такие тэги:
Поле «Название компании»:
{USERS_PROFILE_COMPANY} — само поле
{USERS_PROFILE_COMPANY_TITLE} — название поля
Поле «Адрес»:
{USERS_PROFILE_ADDR} — само поле
{USERS_PROFILE_ADDR_TITLE} — название поля
Поле «Телефон»:
{USERS_PROFILE_PHONE} — само поле
{USERS_PROFILE_PHONE_TITLE} — название поля
Аналогичным образом прописываются значения этих полей на странице пользователя для вывода информации, но формат тэгов уже должен быть иным {USERS_DETAILS_НАЗВАНИЕПОЛЯ}:
Поле «Название компании»:
{USERS_DETAILS_COMPANY} — значение поля
{USERS_DETAILS_COMPANY_TITLE} — название поля
Поле «Адрес»:
{USERS_DETAILS_ADDR} — значение поля
{USERS_DETAILS_ADDR_TITLE} — название поля
Поле «Телефон»:
{USERS_DETAILS_PHONE} — значение поля
{USERS_DETAILS_PHONE_TITLE} — название поля
Для шаблона users.edit.tpl:
Поле «Название компании»:
{USERS_EDIT_COMPANY} — значение поля
{USERS_EDIT_COMPANY_TITLE} — название поля
Поле «Адрес»:
{USERS_EDIT_ADDR} — значение поля
{USERS_EDIT_ADDR_TITLE} — название поля
Поле «Телефон»:
{USERS_EDIT_PHONE} — значение поля
{USERS_EDIT_PHONE_TITLE} — название поля
Обратите внимание, для каждого раздела в Cotonti структура тэгов экстраполей имеет разный формат. Чтобы определить этот формат, рекомендуется смотреть шаблоны соответствующих разделов.
Чтобы поле было обязательным только на определенной странице, например в настройках профиля — в экстраполе чекбокс снимаем «обязательное», а HTML-код поля в самом шаблоне .TPL должен включать атрибут required
примерно так в шаблон users.profile.tpl
{USERS_PROFILE_PHONE_CONTACT|cot_rc_modify($this, 'placeholder="Телефон" required="required"')}
или даже вот так
<!-- IF {USERS_PROFILE_PHONE_CONTACT} --> <div> <div class="uk-card uk-card-default uk-padding-small uk-border-rounded"> <label class="uk-form-label">{USERS_PROFILE_PHONE_CONTACT_TITLE}</label> <div class="uk-form-controls"> {USERS_PROFILE_PHONE_CONTACT|cot_rc_modify($this, 'placeholder="Телефон" required="required"')} </div> </div> </div> <!-- ENDIF -->
пример
Название поля | Описание поля (_TITLE) | Тип поля | HTML-код поля |
adress_local | Адрес, местоположение | input | <input class="uk-input" placeholder="Центрально-Городской р-н, пр. Мира, дом 21, офис 214" type="text" name="{$name}" value="{$value}" maxlength="255" /> |
Страница FaceBook | input | <input class="uk-input uk-width-1-1" type="text" name="{$name}" value="{$value}" maxlength="255" /> |
|
first_second_name | Контактное лицо | input | <input class="uk-input" type="text" name="{$name}" value="{$value}" placeholder="Имя Фамилия" maxlength="255" /> |
Страница в Instagram | input | <input class="uk-input uk-width-1-1" type="text" name="{$name}" value="{$value}" maxlength="255" /> |
|
name_company | Название компании, предприятия | input | <input class="uk-input uk-width-1-1" type="text" name="{$name}" value="{$value}" maxlength="255" /> |
phone_contact | Телефон контактный | input | <input class="uk-input uk-width-1-1" type="text" name="{$name}" value="{$value}" maxlength="255" /> |
Telegram | Telegram | input | <input class="uk-input" type="text" name="{$name}" value="{$value}" placeholder="MyNickTelega" maxlength="255" /> |
time_working | Время работы | input | <input class="uk-input uk-width-1-1" type="text" name="{$name}" value="{$value}" placeholder="09.00 - 21.30" maxlength="255" /> |
whats_app | input | <input class="uk-input" type="text" name="{$name}" value="{$value}" maxlength="255" /> |
|
www_site | Мой сайт | input | <input class="uk-input" type="text" name="{$name}" value="{$value}" placeholder="mydomen.com" maxlength="255" /> |
youtube_link | YouTube канал/страница | input | <input class="uk-input uk-width-1-1" type="text" name="{$name}" value="{$value}" placeholder="https://www.youtube.com/c/NatGeo/featured" maxlength="255" /> |
сори за картинки не впопад