Экстраполя для профиля пользователя

Очень часто при работе с сайтом на 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 Страница 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 Страница в 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 WhatsApp 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" />

сори за картинки не впопад

 

Другая документация по фриланс-бирже на Cotonti

Хостинг без головной боли

Тариф "Старт" - оптимально, не дорого, полностью готовый и проверенный хостинг для установки такого сайта, - сборка фриланс биржи и маркетплейс услуг, продукции, цифровых товаров.

1 месяц на тест бесплатно + сервисный домен
(свой домен прикрепить и протестирвать можно даже на бесплатном тестовом периоде хостинга)

Оставьте комментарий

Прокрутить вверх