Вход

Просмотр полной версии : вопрос новичка:ссылка на страницу регистрации sr_feuserregister


sven
26.12.2010, 14:39
Уважаемые мастера!
Не могу решить простую (наверное) задачу, так как не особо силен в TS и PHP. Хочу на странице рядом с кнопкой "логин" в форме регистрации (использую sysext "felogin") разместить ссылку на регистрацию нового пользователя. Весь сервис по регистрации мне дает расширение sr_feuserregister. Размещая на странице элемент контента с этим расширением сразу под элементом контента "loginform" я получаю нужную мне ссылку, но она располагается ниже (под ссылкой восстановления пароля).

Оба расширения используют темплейты. Если добавить в шаблон felogin'а маркер, в который подставляет ссылку sr_feuserregister и этот же шаблон "скормить" этому расширению (через plugin.tx_srfeuserregister_pi1.templateFile = ...) то ссылка все равно выведется после всего что выводит felogin (что наверное логично).

Пробовал в php felogin'а дописать обработку нового маркера для ссылки на страницу регистрации, но получить адрес самой ссылки не могу, так ее генерирует srfeuserregister, а получить доступ к нему из php felogin'а не получается.

Сдается мне что я в какие-то дебри лезу и как-то проще должно все решаться, например из TS обрабатывать маркер, заполняя его ссылкой на регистрацию, но srfeuserregister никакого сервиса по предоставлению адресов ссылок не дает. Или в скрипте felogin получить доступ к имеющемуся объекту srfeuserregister у него спросить ????->urlObj->get('', ????->controlData->getPid('register').','.$GLOBALS['TSFE']->type, $vars, $unsetVars);

Подскажите, пжл, в какую сторону копать?

sven
28.12.2010, 03:53
Выкрутился через CSS - поставил ссылку на регистрацию в нужное место. Но сдается мне это некрасиво чуть менее чем полностью. Гораздо красивее было бы поставить в шаблоне felogin'а маркер и заполнить его ссылкой на регистрацию, которую получить у sr_feuserregister. Так что буду благодарен за подсказку как это сделать.

Андрей Аксенов
29.12.2010, 13:04
Посмотри, как сделано у меня - http://вебдизайн.гепарт.рф/
(вверху страницы). Нужно примерно так?
Тогда вот TS код шаблона:

### top nagivation
header.20 = COA
header.20.stdWrap.wrap = <div class="topNav"> | </div><div class="clearOnly"></div>
header.20.stdWrap.required = 1
header.20.10 = COA
header.20.10 {
stdWrap.wrap = <div id="login">|</div>
stdWrap.required = 1

10 = COA
10 {
20 = TEXT
20 {
# Only show the login link if there's a valid page to link to
if.isTrue = {$loginPID}
if.isTrue.insertData = 1

value = Авторизация
typolink.parameter = {$loginPID}
typolink.additionalParams = &return_url={getIndpEnv : REQUEST_URI}
typolink.additionalParams.insertData = 1
}

30 = TEXT
30 {
# Only show the login link if there's a valid page to link to
if.isTrue = {$loginPID}
if.isTrue.insertData = 1

value = &nbsp;|&nbsp;
}

40 = TEXT
40 {
# Only show the registration link if there's a valid page to link to
if.isTrue = {$registerPID}
if.isTrue.insertData = 1

value = Регистрация
typolink.parameter = {$registerPID}
typolink.additionalParams = &tx_srfeuserregister_pi1[cmd]=create
}
}
}

[loginUser = *]
header.20.10.10 >
header.20.10.10 = COA_INT
header.20.10.10 {
10 = TEXT
10 {
data = TSFE:fe_user|user|first_name // TSFE:fe_user|user|username
wrap = Добро пожаловать,&nbsp; | &nbsp;|&nbsp;

# Only show the edit link if there's a valid page to link to
typolink.if.isTrue = {$registerPID}
typolink.if.isTrue.insertData = 1
typolink.parameter = {$registerPID}
typolink.additionalParams = &tx_srfeuserregister_pi1[cmd]=edit
}

20 = TEXT
20 {
value = Выйти
typolink.parameter.data = TSFE : id
typolink.addQueryString = 1
typolink.addQueryString.method = GET
typolink.additionalParams = &logintype=logout
}
}


Итак, что происходит:
Определяем массив объектов для top nagivation <div class="topNav">. В данном случае в этом массиве находятся объект для перехода к авторизации, регистрации и поиск по сайту (часть для поиска я здесь не привожу...)
Объект header.20.10 этого массива как раз отвечает за авторизацию и регистрацию - его помещаем в <div id="login">|</div>...
Здесь даем две ссылки на страницу Авторизации и Регистрации, определяемых значением констант loginPID и registerPID, соответственно. Если эта константа определена в TS константах шаблона, то ссылка выводиться, если нет - то не выводится (if.isTrue = {$loginPID/$registerPID}). Сами константы определяют ID страниц авторизации и регистрации...
Далее. При авторизации пользователя ([loginUser = *]) все ссылки на страницы авторизации и регистрации убираются, вместо этого прописывается Добро пожаловать пользователь и дается ссылка на выход из авторизации...
Ну а какое расширение использовать для авторизации - по усмотрению...

sven
31.12.2010, 11:33
Андрей, огромное спасибо за подробный ответ!
У меня сейчас вот так сделано (http://unclesym.com). Пример помог разобраться с тем как сделать ссылку на регистрацию - переделаю в более красивый TS-вариант!

С новым годом!