Форма регистрации на сайте. Для того чтобы вставить форму регистрации, сперва нужно включить это опцию в административной части. В третьей версии spip это можно сделать в меню Настройка -> Посетители (регистрация без входа в административную часть). Если необходимо дать пользователям доступ в административную часть, то нам нужно включить эту возможность в меню Настройка -> Автоматическая регистрация новых авторов. Авторизация Начнем с формы входа. В нужное место на сайте вставляем код формы: [(#REM) Если мы не_авторизированы - выводим форму входа] [(#SESSION{login}|non)#FORMULAIRE_LOGIN_FORUM{#SELF,#LANG}] [(#REM) Если авторизированы - выводим логин и ссылку для выхода] [(#SESSION{login}|oui)#SESSION{nom},&nbsp;<a href="#URL_LOGOUT{#SELF}" title="Выход">Выход</a>] После этой формы можно добавить ссылки на страницы регистрации(/spip.php?page=identifiants) и восстановления пароля(/spip.php?page=spip_pass). Страница регистрации За вид этой страницы отвечает шаблон identifiants.html. Для начала скопируем этот файл в папку /squelettes/. Внутри этого файла саму форму для регистрации выводит тег #FORMULAIRE_INSCRIPTION. Остальное добавляем по своему усмотрению: можно, например, добавить еще путь к статье или форму входа на этой странице. Заканчиваем стилевое оформление шаблона и переходим к коду регистрации. Код формы регистрации Шаблон с формой регистрании, как нетрудно догадаться, называется inscription.html. Копируем этот файл в папку /squelettes/formulaires/ вместе с обработчиком формы (inscription.php). Внутри этого файла мы можем увидеть теги, которые отвечают за обработку событий, вывод сообщений и вывод самой формы регистрации. Здесь, в этом файле мы также можем дописать код капчи, или дополнительные поля для регистрации. Пример вставки дополнительных полей и капчи (более полные примеры реализации капчи вы можете посмотреть в интернете): [(#REM) Капча] <input type="text" name="captcha" id="captcha" value size="5" autofocus="autofocus" autocapitalize="off" autocorrect="off" /> <img class="captcha" src="/squelettes/formulaires/img.php?sid=<?=session_id();?>" /> [<span class="erreur_message">(#ENV*{erreurs}|table_valeur{captcha})</span>] [(#REM) Доп. поля] <div> <label for="sex_inscription">Пол</label> <select name="sex_inscription" id="sex_inscription"> <option value="" selected="selected"></option> <option value="men">Мужской</option> <option value="women">Женский</option> </select> [<span class="erreur_message">(#ENV*{erreurs}|table_valeur{sex_inscription})</span>] </div> <div> <label for="forex_exp_inscription">Еще одно поле</label> <input[ (#HTML5|?{required="required" type="number" class="text email",type="number" class="text"})] name="forex_exp_inscription" id="forex_exp_inscription" value="#ENV{forex_exp_inscription}" size="30"[(#ENV{focus}|=={forex_exp_inscription}|et{#HTML5}|oui) autofocus="autofocus"] autocapitalize="off" autocorrect="off" min="0" max="50" /> [<span class="erreur_message">(#ENV*{erreurs}|table_valeur{forex_exp_inscription})</ span>] </div> В файле-обработчике формы введенные значения мы можем получить с помощью функции _request('sex_inscription') для первого поля в примере и _request('forex_exp_inscription') для второго поля. Дополнительные поля мы можем реализовать с помощью плагина Champs Extras. Более полную документацию по плагину можно посмотреть на сайте http://contrib.spip.net. Для записи введенного значения в базу мы используем функцию sql_updateq (http://programmer.spip.net/sql_updateq,675) В дополнение к примеру выше, вносим введенное значение в таблицу пользователей: $forex_exp = _request('forex_exp_inscription'); if ($desc[id_auteur]) { if($forex_exp) sql_updateq('spip_auteurs', array('forex_exp' => $forex_exp) , 'id_auteur='.$desc[id_auteur]); } Забыли пароль? В заключение хотелось бы сказать о возможности восстановления пароля, за это отвечает шаблон spip_pass.html. Стоит отметить сразу, что в этом файле мы можем ввести e-mail, на который будет отправлено письмо с инструкциями восстановления, а так-же ввести новый пароль (после перехода по ссылке в письме). Как обычно, копируем его в папку с шаблонами и приступаем к редактированию. Основную и важную роль здесь играет вот этот код, который отвечает за вставку форм восстановления пароля: [(#ENV{p}|non) #FORMULAIRE_OUBLI] [(#ENV{p}|oui) #FORMULAIRE_MOT_DE_PASSE ] Выше мы видим проверку на переменную окружения p. Если она присутствует - выводим форму для ввода нового пароля. Если переменная не определена, то будет выведена форма для указания адреса почты, на который будет выслано сообщение и инструкциями. Для изменения самих форм, нужно поместить файлы oubli.html и mot_de_passe.html в папку /squelettes/formulaires/. Вот и все! Если все сделано правильно - новые пользователи смогут регистрироваться на вашем сайте. Просмотр статей и разделов только для зарегистрированных пользователей (ручная проверка) Для этой опции нужно добавить в начало шаблона, перед <BOUCLE_main> код: <?php if ($auteur_session) { ?> А так же после <//B_main>: <?php } else { ?> <INCLURE {fond=inc_restricted}> <?php } ?> Если пользователь не авторизирован и просматривает такую статью\раздел – он вместо статьи увидит содержимое шаблона inc_restricted. Просмотр статей и разделов только для зарегистрированных пользователей (проверка с помощью плагина) Для этой опции существует плагин Acces Restreint (http://contrib.spip.net/Acces-Restreint-30). Плагин позволяет скрывать как разделы, так и статьи в этих разделах. Важная деталь: если скрыть единственную статью в разделе этим плагином – то родительский раздел статьи так же будет скрыт. После установки и настройки этого плагина, все соответствующие элементы не будут отображаться на сайте (если в букле не указать критерий {tout_voir}). Чтобы обрабатывать ошибки и показывать пользователям сообщение об ограничении доступа существуют два фильтра: Для статей - AccesRestreint_article_restreint [(#ID_ARTICLE|AccesRestreint_article_restreint|?{'<INCLURE {fond=inc_restricted}>','<INCLURE {fond=404}>'})] Проверяем: если статья с #ID_ARTICLE скрыта – мы показываем шаблон inc_restricted.html, если такой статьи не существует – показываем шаблон 404 страницы. Для разделов - AccesRestreint_article_restreinte [(#ID_RUBRIQUE|AccesRestreint_article_restreinte|?{'<INCLURE {fond=inc_restricted}>','<INCLURE {fond=404}>'})] Проверяем: если раздел с #ID_ RUBRIQUE скрыт – мы показываем шаблон inc_restricted.html, если такого раздела не существует – показываем шаблон 404 страницы. Подробную информацию по использованию плагина можно найти по ссылке http://contrib.spip.net/Le-plugin-Acces-Restreint.