Forum categories

Руководство по тегам в шаблонах - полная версия шпаргалка

Плагин 'xtradbrowusers'. Интеграция и прописание тегов для вывода экстраполей в шаблонах. Текст полной версии шпаргалки в каком шаблоне какие теги прописывать правильно.

webitproff
webitproff • 2026-08-15 00:01 #574

Плагин 'xtradbrowusers' - Руководство по тегам в шаблонах. Интеграция и прописание тегов для вывода экстраполей в шаблонах. Текст полной версии шпаргалки. 

Начало шпаргалки, а также все скриншоты для наглядности, - всё это лежит в статье “Плагин xtradbrowusers — Руководство по тегам в шаблонах” 

Пользователи (модуль 'users')

Список шаблонов модуля в папке вашей темы, например "2waydeal", "index36", "nemesis" — важно то, что они должны лежать именно в папке темы, соблюдая такой путь:

/themes/2waydeal/modules/users/users.edit.tpl
/themes/2waydeal/modules/users/users.profile.tpl
/themes/2waydeal/modules/users/users.details.contractor.tpl
/themes/2waydeal/modules/users/users.details.tpl
/themes/2waydeal/modules/users/users.register.tpl
/themes/2waydeal/modules/users/users.tpl

 

users.edit.tpl 

шаблон редактирования данных пользователя администратором.

Открываем шаблон, и обязательно внутри формы

<form action="{USERS_EDIT_SEND}" method="post" name="useredit" enctype="multipart/form-data" class="needs-validation" novalidate>
	<input type="hidden" name="id" value="{USERS_EDIT_ID}" />
	....
	
	....
		<button type="submit" class="btn btn-outline-primary">
		  <i class="fa-solid fa-floppy-disk me-1"></i> {PHP.L.Update} 
		</button>
  </form>

в любом для вас удобном месте вставляем блок с выводом наших полей:

<!-- IF {PHP|cot_plugin_active('xtradbrowusers')} -->
<div class="row my-5">
	<p>{PHP.L.xtradbrowusers_edit_tpl_title}</p>
	<div class="list-group list-group-striped list-group-flush border-bottom">
	
		<!-- IF {USERS_EDIT_XTRA_X020_ABOUT_VENDOR_TEXT} -->
		<div class="list-group-item py-3">
			<label>{USERS_EDIT_XTRA_X020_ABOUT_VENDOR_TEXT_TITLE}:</label>
			{USERS_EDIT_XTRA_X020_ABOUT_VENDOR_TEXT}
		</div>
			<!-- IF {USERS_EDIT_XTRA_X020_ABOUT_VENDOR_TEXT_EN} -->
			<div class="list-group-item py-3">
				<label>{USERS_EDIT_XTRA_X020_ABOUT_VENDOR_TEXT_EN_TITLE}:</label>
				{USERS_EDIT_XTRA_X020_ABOUT_VENDOR_TEXT_EN}
			</div>
			<!-- ENDIF -->
		<!-- ENDIF -->
		
		<!-- IF {USERS_EDIT_XTRA_X010_PHONE_VENDOR_ORDERS} -->
		<div class="list-group-item py-3">
			<label>{USERS_EDIT_XTRA_X010_PHONE_VENDOR_ORDERS_TITLE}:</label>
			{USERS_EDIT_XTRA_X010_PHONE_VENDOR_ORDERS}
		</div>
		<!-- ENDIF -->
		
		<!-- IF {USERS_EDIT_XTRA_X011_TG_VENDOR_ORDERS} -->
		<div class="list-group-item py-3">
			<label>{USERS_EDIT_XTRA_X011_TG_VENDOR_ORDERS_TITLE}:</label>
			{USERS_EDIT_XTRA_X011_TG_VENDOR_ORDERS}
		</div>
		<!-- ENDIF -->
		
		<!-- IF {USERS_EDIT_XTRA_X012_TG_CHANEL_VENDOR} -->
		<div class="list-group-item py-3">
			<label>{USERS_EDIT_XTRA_X012_TG_CHANEL_VENDOR_TITLE}:</label>
			{USERS_EDIT_XTRA_X012_TG_CHANEL_VENDOR}
		</div>
		<!-- ENDIF -->
		
		<!-- IF {USERS_EDIT_XTRA_X200_RESUME_FILE} -->
		<div class="list-group-item py-3">
			<label>{USERS_EDIT_XTRA_X200_RESUME_FILE_TITLE}:</label>
			{USERS_EDIT_XTRA_X200_RESUME_FILE}
		</div>
		<!-- ENDIF -->
		
		<!-- IF {USERS_EDIT_XTRA_X200_LAST_PROMOTION} -->
		<div class="list-group-item py-3">
			<label>{USERS_EDIT_XTRA_X200_LAST_PROMOTION_TITLE}:</label>
			{USERS_EDIT_XTRA_X200_LAST_PROMOTION}
		</div>
		<!-- ENDIF -->
		
		<!-- IF {USERS_EDIT_XTRA_X200_DEPARTMENT} -->
		<div class="list-group-item py-3">
			<label>{USERS_EDIT_XTRA_X200_DEPARTMENT_TITLE}:</label>
			{USERS_EDIT_XTRA_X200_DEPARTMENT}
		</div>
		<!-- ENDIF -->

	</div>
</div>
<!-- ENDIF -->

Важно: этот код выведет лишь некоторые поля из всего «демонстрационного набора» экстраполей при установке плагина.

Моя задача — создать для вас хоть какую-то шпаргалку с иллюстрацией механизма включения (прописания) полей в шаблоны.

Здесь можно запутаться, но на самом деле всё предельно просто.

Собрать правильный тег для вашего шаблона, чтобы в нём получить своё поле, — это как собрать игрушечный паровозик из нескольких вагончиков:

  • USERS_EDIT_XTRA_ — префикс из нашего плагина
  • X020_ABOUT_VENDOR_TEXT — имя нашего поля

USERS_EDIT_XTRA_ + X020_ABOUT_VENDOR_TEXT = USERS_EDIT_XTRA_X020_ABOUT_VENDOR_TEXT

Видите, как просто.

Обернув в фигурные скобки, мы нашему шаблонизатору XTemplate говорим: 

«дай мне в шаблоне здесь {КАРТОШКА_ЖАРЕННАЯ}, {КЕТЧУП_ОСТРЫЙ}», 

и если имя корректное — он принесёт сюда в шаблон то, что туда положили повара на кухне. Поваром здесь может быть и разработчик, и вы сами как пользователь или администратор.

В нашем случае у шаблонизатора мы попросили {USERS_EDIT_XTRA_X020_ABOUT_VENDOR_TEXT} в шаблоне редактирования, и он нам сюда принесёт поле для заполнения, редактирования и сохранения данных текстового типа.

Теперь как собрать заголовок поля, то есть получить его «Описание поля (_TITLE)»?

Всё также предельно просто:

  • USERS_EDIT_XTRA_ — префикс из нашего плагина
  • X020_ABOUT_VENDOR_TEXT — имя нашего поля
  • _TITLE — суффикс из нашего плагина

USERS_EDIT_XTRA_ + X020_ABOUT_VENDOR_TEXT + _TITLE = USERS_EDIT_XTRA_X020_ABOUT_VENDOR_TEXT_TITLE

Подробнее в файле хукинга.

Снова обернули наш «паровозик» в фигурные скобки и кричим нашему шаблонизатору XTemplate в шаблоне: 

«Эй, официант, хочу {USERS_EDIT_XTRA_X020_ABOUT_VENDOR_TEXT_TITLE}!».

 

И разумеется, если такое есть — он вернёт нам описание поля. В демке это лейбл поля «Обо мне кратко».

Однажды вникнув, потратив с практикой и чтением шпаргалки минут 15, — вас уже не будут смущать ни «вагончики» детского «паровозика», ни незнакомец-официант по имени «шаблонизатор XTemplate».

 

Запомнили одно: собрали паровозик из нужных вагончиков — всё, теперь зовём официанта и корректно называем то, что хотите от него!


Для разработчиков

В Cotonti шаблонизатор работает так:

  1. В PHP-коде вы присваиваете значение переменной:

    $t->assign('FIELD_NAME', htmlspecialchars(mb_strtoupper($exfld['field_name'])));
  2. В шаблоне вы используете фигурные скобки:

    {FIELD_NAME}
  3. Класс Cotpl_data при загрузке шаблонного блока разбирает его содержимое и находит все подстроки вида {...}.

    Именно этот фрагмент кода выделяет имя переменной:

    if ($firstSymbol === '{' && $lastSymbol === '}') {
        $this->chunks[] = new Cotpl_var(mb_substr($chunk, 1, mb_strlen($chunk) - 2));
    }

    Он убирает { и }, берёт внутреннее имя (FIELD_NAME) и создаёт объект Cotpl_var, который позже при выводе заменится на значение из массива, переданного через assign().

  4. Когда шаблон рендерится, XTemplate проходит по чанкам блока, находит Cotpl_var для FIELD_NAME и подставляет актуальное значение (в вашем случае — имя поля в верхнем регистре).

Таким образом, фигурные скобки — это обязательный синтаксис для вывода переменных, а Cotpl_data отвечает за то, чтобы эти переменные были распознаны и корректно заменены при парсинге шаблона.

Подробнее в файле cotemplate.php.

 

This post was edited by webitproff (2026-08-15 00:51, 9 hours ago)
🗿

🧙‍♂️ Well met, good traveler! Fate has guided your steps to our humble realm. Here, wise sages and masters of the coding craft ⚒️📜 gather to unravel the mysteries of the code ✨⚙️, share their knowledge, and add new chapters to our chronicles.
⬅️ To the left lie ancient scrolls 📚 filled with forgotten wisdom. ⬆️ Straight ahead, friendly folk offer counsel 💬 to those in need. ➡️ To the right, you may become a chronicler ✍️ yourself, sharing your craft and leaving words of wisdom for those yet to come.
📝 Delay no longer—tell us the name by which you are known, complete the rite of registration 🛡️, and join our fellowship!
🏰 Our brotherhood holds no secret initiation, yet many halls remain closed to wandering guests, for some knowledge 💎 is reserved for those who choose to walk this path beside us.