Перехід змінної шаблону Expression Engine

Я будую в Expression Engine 2.3 систему профілів користувача, використовуючи модулі User and Friends Solspace. Вони чудово працюють, але у мене є неймовірно важкий час, коли пропускають вбудовані змінні навколо.

У мене є шаблон .profile_head , який викликається з кожного шаблону. Сторінка профілю, сторінка друзів, сторінка особистих повідомлень тощо. Вона створює користувальницьку навігацію, відображає аватар, усі звичайні елементи користувача. Все це базується на ідентифікаторі користувача, який пройшов через {segment_3} . Це дозволяє мені відображати іншу інформацію про користувача, змінюючи цей сегмент.

Проблема в цьому робить мої URL-адреси надто точними. Я не можу переходити до користувачів/користувачів, їм слід перейти до/users/profile/UID, або найкращим сценарієм є сторінка з помилкою або перенаправлення на домашню сторінку.

Я спробував вирішити цю проблему через змінні у моєму шаблоні:

{embed="/users/.profile_head" uid="{segment_3}"}
 or......
{embed="/users/.profile_head" uid="{logged_in_member_id}"}

У файлі шаблонів .profile_head я можу надрукувати (embed: uid) , але я намагаюся присвоїти йому що-небудь (наприклад, цикл або інший шаблон) , вона порушує:

<!-- /users/.profile_head -->
{exp:friends:members member_id="{embed:uid}" dynamic="off" limit="1"}
 or.....
{embed="users/.profile_column" uid="{embed:uid}"}

Наприклад, якщо (embed: uid) встановлено як {logged_in_member_id} , я отримую таку помилку:

Parse error: syntax error, unexpected T_LNUMBER in /var/www/system/expressionengine/libraries/Functions.php(656) : eval()'d code on line 9

Це рядок 9:

{if logged_in_member_id == "{embed:uid}"} This is you!{/if}

Я дійсно закінчую своїм розумом. Мені потрібно мати можливість використовувати цей заголовок профілю у шаблонах, не вимагаючи ідентифікатора користувача в URL-адресі для таких речей, як повідомлення з користувачами та сторінки налаштувань. Але нічого, що я намагаюся, здається, працює найменше.

0

1 Відповіді

Я вважаю, що {logged_in_member_id} - це запізнених змінної змінної , що означає, що вона може бути недоступною в деяких ваших тегах у пункті, де вони обробляються, - отже, це прийнято як буквально {logged_in_member_id} .

Спробуйте замість константи CURRENT_USER .

3
додано
Це працює. Ще одне питання ... У моєму вбудованому шаблоні є такий: Надіслати повідомлення . URI оцінюється за адресою http://mysite.com/users/sendmessage/CURRENT_USER . Чи є спосіб друку справжнього ідентифікатора користувача? Я вважаю, що CURRENT_USER призначений для використання в тегах та умовних умовах, а не друкує, правильно?
додано Автор jdp, джерело
Проблема полягає в тому, що єдиним посиланням на шаблон може бути той ідентифікатор, який він використовує через (embed: uid) . Якщо вбудований var - CURRENT_USER , то це те, що мені довелося працювати. Я не можу використовувати {logged_in_member_id} , тому що я повинен використовувати той самий шаблон на сторінках, які мають відношення до іншого користувача, крім поточного входу в систему.
додано Автор jdp, джерело
Я так багато розумію. Дозвольте мені спробувати пояснити це трохи краще. mysite.com/users/profile . Немає segment_3, тому використовуйте поточний користувач. {embed = "users/.profile_head" uid = "CURRENT_USER"}. ІЛИ: mysite.com/users/profile/4 . Сегмент 3, тому використовуйте користувач 4. {embed = "users/.profile_head" uid = "{segment_3}"}. Тепер, коли я повторюю (embed: uid) в .profile_head, якщо я використав {segment_3} , я отримую 4 . Якщо я використав CURRENT_USER , я отримую CURRENT_USER . Це проблема. У мене немає способу отримати розібраний ідентифікатор, якщо я використовую константу в звичайному тексті (за винятком умовних) у вбудованому шаблоні.
додано Автор jdp, джерело
Спасибі Дуг. В кінці кінців я зміг це виправити, використовуючи умови. Дійсно ціную всю допомогу, яку ви дали.
додано Автор jdp, джерело
Можливо, ви використовуєте {logged_in_member_id} у цій ситуації, оскільки воно не оцінюється, просто друкується. Не бачачи повної ієрархії вкладень та умовностей, важко дати остаточну відповідь на те, що слід використовувати там. Це може стати складним.
додано Автор Derek Hogue, джерело
Але CURRENT_USER і {logged_in_member_id} є однаковими - це просто те, що він аналізується рано, і один з них розпізнається пізно.
додано Автор Derek Hogue, джерело
Відповідно до документів Solspace: "Ви можете жорстко кодувати ідентифікатор учасника, передавати його через вкладений файл, захопити його з URI або вказати" CURRENT_USER ", щоб відобразити профіль поточного входу користувача". Схоже, що фактичний рядок "CURRENT_USER" до тегу дасть потрібний результат.
додано Автор Doug Avery, джерело