|
|
![]() |
|
![]() |
![]() = = = = = = = = = = = = = = = = = Вынесено в F.A.Q. Закреплено. Закрыто. Если возникают вопросы - задавать здесь: Дополнительные поля профиля - Quick Guide = = = = = = = = = = = = = = = = = I. Вступление. Итак, эта инструкция будет полностью посвещена дополнительным полям профиля. Мы узнаем что это за функция vBulletin и для чего ее можно применить. Так же мы познакомимся со способами и основными правилами применения дополнительных полей профиля. II. Основные понятия. Как мы с вами знаем vBulletin - это довольно функциональный скрипт форума со множеством возможностей. Однако, есть вещи, которые разработчики по объективным причинам не могут добавить в основной набор возможностей двига. Эти причины очевидны - либо они считают, что данная функция выходит за рамки необходимого, либо же она просто настолько узкоспециализированна, что может быть актуальна только на вашем конкретном форуме. Благо, возможностей реализации собственных функций в vBulletin много - начиная с продуктов и модулей, и заканчивая ручным редактированием файлов и шаблонов. И вот вы задались идеей создать некий свой собственный функционал. Вы прошли через все ужасы коддинга и постигания азов управления vBulletin, но тут столкнулись с проблемой - как позволить пользователю управлять новой функцией через изменение настроек? Все доступные пользователю опции размещены в UserCP (рус. "Мой кабинет"), но как сделать так, чтобы там присудствовали и ваши собственные настройки? Как добавить новую, настраиваемую пользователем, графу информации в его профиль? И, наконец, каким образом влиять на поведение форума в зависимости от значений этих настроек? Вот тут нам на помощь приходит мощный иснтрумент vBulletin - Дополнительные поля профиля. Я сказал "мощный" не просто так. Действительно, с помощью Дополнительных полей профиля можно привязать совершенно любое поведение форума к настройкам, которые были бы доступны для редактирования пользователю. IV. Панель администратора. Для того, чтобы начать работу с дополнительными полями профиля надо зайти в Панель управления (администрирования). Слева рассположены группы настроек. Нам необходимо найти группу под названием "Дополнительные поля профиля". Если мы развернем группу, то увидим список из трех строк:
V. Добавление дополнительного поля профиля. Итак, для начала разберемся с добавлением нового поля. Выберем сответствующую строку в списке и перейдем к первому шагу - выбору типа поля. Существует шесть доступных типов полей на выбор:
Текстовое поле одной строкой. 1. Заголовок: заголовок отображается в качестве заголовка группы элементов в опциях пользователя. 2. Описание: описание позволяет Вам ввести текст, который бы описывал Вашу настройку пользователю. В этом поле можно использовать HTML-код, поэтому текст можно отформатировать по своему вкусу. 3. Категория профиля: этой настройкой определяется принадлежность поля к одной из раннее созданных категорий. Если у Вас несколько категорий, то они все будут в этом списке. Для того чтобы не привязывать опцию к категории поставьте переключатель в положение "(Вне категорий)". 4. Значение по-умолчанию: позволяет Вам ввести текст, который будет отображаться в поле по-умолчанию, и может быть изменен пользователем на свой. 5. Максимальное количество символов в значении поля: позволит Вам ограничить число символов для ввода. Строго рекомендуется всегда указывать приемлемые и адекватные цифры для этого параметра! 6. Размер поля: позволяет Вам указать длину поля. Выбирайте ее, исходя из Вашего дизайна, но помните, что ее необходимо вводить в символах. Так же хотелось бы обратить внимание на замечание из Помощи администратору: "Это значение должно быть меньше или равным максимальному количеству символов, позволенному ввести в это поле.". Не забывайте об этом. 7. Порядок отображения по: если Вы планируете создать несколько полей подряд, то этот параметр поможет Вам установить очередность их следования при отображении на форуме в Опциях Моего кабинета. Если Вы не установите своего значения, поле будет добавлено последним. 8. Обязательное поле: эта настройка позволяет устанавливать правила необходимости заполнения данного поля. Нет - мользователь может не заполнять поле. Нет, но показывать при регистрации - настройка будет отображена при регистрации, но от ее изменения пользователь может отказаться. Да, при регистрации и обновлении профиля - пользователь должен заполнить это поле при регистрации или при первом редактировании своего профиля. Да, всегда - пользователь должен будет заполнить это поле, в противном случае ему будет блокирован доступ на форум до тех пор пока он не выполнит изменение настройки. 9. Доступно для редактирования пользователем: Нет - пользователь сможет лишь один раз установить значение этой настройки или поля профиля. Да - пользователь может изменять настройку в любой момент. Только при регистрации - пользователь сможет отредактировать поле или настройку только раз - при регистрации. 10. Личное поле: определяет права доступа к чтению содержимого поля. Настройка имеет смысл только если она создается как дополнительное поле профиля. Если установить переключатель в положение "Да", то поле будет доступно для чтения только самому пользователю и тем пользователям, у кого есть необходимые разрешения на просмотр личных полей. 11. Доступен поиск по этому полю в списке пользователей: управляет доступностью этой опции в расширенном поиске форума. Если настройка включена, то пользователей можно будет икать по данному полю. 12. Отображать в списке пользователей: позволяет отобразить значение этого поля в списке пользователей в отдельной колонке. 13. Регулярное выражение: необходимо для обработки правильности ввода значения в данное поле. Регулярное выражение необходимо вводить в так называемом PCRE формате. Подробнее о правилах написания регулярных выражений можно узнать из любого учебника по PHP. Если значение, введенное пользователем, не соответсвует правилам, заданным при помощи регулярного выражения, то форум не примет ввод и выдаст ошибку. Многострочное текстовое поле. См. пункт "Текстовое поле одной строкой." "Радио" кнопки с выбором одного. 1. Заголовок: заголовок отображается в качестве заголовка группы элементов в опциях пользователя. 2. Описание: описание позволяет Вам ввести текст, который бы описывал Вашу настройку пользователю. В этом поле можно использовать HTML-код, поэтому текст можно отформатировать по своему вкусу. 3. Категория профиля: этой настройкой определяется принадлежность поля к одной из раннее созданных категорий. Если у Вас несколько категорий, то они все будут в этом списке. Для того чтобы не привязывать опцию к категории поставьте переключатель в положение "(Вне категорий)". 4. Элементов на строку: позволяет Вам выбрать количество позиций в одной строке. Учтите, что если отключить эту опцию, то при большом числе позиций дизайн форума растянется. 5. Опции: введите сюда все желаемые позиции - варианты опций по одному на каждую строку. 6. По умолчанию: позволяет Вам задать первую опцию в списке выбранной по-умолчанию. Если эту опцию отключить, то ни одна из позиций не будет выбрана и значение этого поля профиля будет пустым до тех пор пока пользователь не внесет изменения. 7. Порядок отображения по: если Вы планируете создать несколько полей подряд, то этот параметр поможет Вам установить очередность их следования при отображении на форуме в Опциях Моего кабинета. Если Вы не установите своего значения, поле будет добавлено последним. 8. Порядок отображения по: если Вы планируете создать несколько полей подряд, то этот параметр поможет Вам установить очередность их следования при отображении на форуме в Опциях Моего кабинета. Если Вы не установите своего значения, поле будет добавлено последним. 9. Обязательное поле: эта настройка позволяет устанавливать правила необходимости заполнения данного поля. Нет - мользователь может не заполнять поле. Нет, но показывать при регистрации - настройка будет отображена при регистрации, но от ее изменения пользователь может отказаться. Да, при регистрации и обновлении профиля - пользователь должен заполнить это поле при регистрации или при первом редактировании своего профиля. Да, всегда - пользователь должен будет заполнить это поле, в противном случае ему будет блокирован доступ на форум до тех пор пока он не выполнит изменение настройки. 10. Доступно для редактирования пользователем: Нет - пользователь сможет лишь один раз установить значение этой настройки или поля профиля. Да - пользователь может изменять настройку в любой момент. Только при регистрации - пользователь сможет отредактировать поле или настройку только раз - при регистрации. 11. Личное поле: определяет права доступа к чтению содержимого поля. Настройка имеет смысл только если она создается как дополнительное поле профиля. Если установить переключатель в положение "Да", то поле будет доступно для чтения только самому пользователю и тем пользователям, у кого есть необходимые разрешения на просмотр личных полей. 12. Доступен поиск по этому полю в списке пользователей: управляет доступностью этой опции в расширенном поиске форума. Если настройка включена, то пользователей можно будет икать по данному полю. 12. Отображать в списке пользователей: позволяет отобразить значение этого поля в списке пользователей в отдельной колонке. Меню с выбором одного. 1. Заголовок: заголовок отображается в качестве заголовка группы элементов в опциях пользователя. 2. Описание: описание позволяет Вам ввести текст, который бы описывал Вашу настройку пользователю. В этом поле можно использовать HTML-код, поэтому текст можно отформатировать по своему вкусу. 3. Категория профиля: этой настройкой определяется принадлежность поля к одной из раннее созданных категорий. Если у Вас несколько категорий, то они все будут в этом списке. Для того чтобы не привязывать опцию к категории поставьте переключатель в положение "(Вне категорий)". 4. Опции: введите сюда все желаемые позиции - варианты опций по одному на каждую строку. 5. По умолчанию: Да, даже с пустой первой опцией - устанавливает первую строку списка как значение по-умолчанию, даже если эта строка пуста. Нет - значение по-умолчанию отсутствует. Да, но первая опция не пустая - устанавливает первую строку списка как значение по-умолчанию, но только при условии что эта строка не пуста. Замечание о пустой первой строке: дело в том, что меню сделано таким образом, что у пользователя нет возможности "обнулить" настройку, однажды ее изменив. Для имитирования пустого значения поля, иногда, первую строку делают пустой, чтобы дать пользователю возможность выключить использование поля совсем. 6. Порядок отображения по: если Вы планируете создать несколько полей подряд, то этот параметр поможет Вам установить очередность их следования при отображении на форуме в Опциях Моего кабинета. Если Вы не установите своего значения, поле будет добавлено последним. 7. Порядок отображения по: если Вы планируете создать несколько полей подряд, то этот параметр поможет Вам установить очередность их следования при отображении на форуме в Опциях Моего кабинета. Если Вы не установите своего значения, поле будет добавлено последним. 8. Обязательное поле: эта настройка позволяет устанавливать правила необходимости заполнения данного поля. Нет - мользователь может не заполнять поле. Нет, но показывать при регистрации - настройка будет отображена при регистрации, но от ее изменения пользователь может отказаться. Да, при регистрации и обновлении профиля - пользователь должен заполнить это поле при регистрации или при первом редактировании своего профиля. Да, всегда - пользователь должен будет заполнить это поле, в противном случае ему будет блокирован доступ на форум до тех пор пока он не выполнит изменение настройки. 9. Доступно для редактирования пользователем: Нет - пользователь сможет лишь один раз установить значение этой настройки или поля профиля. Да - пользователь может изменять настройку в любой момент. Только при регистрации - пользователь сможет отредактировать поле или настройку только раз - при регистрации. 10. Личное поле: определяет права доступа к чтению содержимого поля. Настройка имеет смысл только если она создается как дополнительное поле профиля. Если установить переключатель в положение "Да", то поле будет доступно для чтения только самому пользователю и тем пользователям, у кого есть необходимые разрешения на просмотр личных полей. 11. Доступен поиск по этому полю в списке пользователей: управляет доступностью этой опции в расширенном поиске форума. Если настройка включена, то пользователей можно будет икать по данному полю. 12. Отображать в списке пользователей: позволяет отобразить значение этого поля в списке пользователей в отдельной колонке. Меню с выбором нескольких. 1. Заголовок: заголовок отображается в качестве заголовка группы элементов в опциях пользователя. 2. Описание: описание позволяет Вам ввести текст, который бы описывал Вашу настройку пользователю. В этом поле можно использовать HTML-код, поэтому текст можно отформатировать по своему вкусу. 3. Категория профиля: этой настройкой определяется принадлежность поля к одной из раннее созданных категорий. Если у Вас несколько категорий, то они все будут в этом списке. Для того чтобы не привязывать опцию к категории поставьте переключатель в положение "(Вне категорий)". 4. Максимум опций: позволяет Вам установить максимальное количество вариантов опции, которое может выбрать пользователь. 0 - не ограниченно, хоть все. 5. Высота поля: укажите высоту контейнера со списком. Если она меньше кол-ва опций, то будет отображена вертикальная полоса прокрутки. 6. Опции: введите сюда все желаемые позиции - варианты опций по одному на каждую строку. Не более 31 варианта. 7. Порядок отображения по: если Вы планируете создать несколько полей подряд, то этот параметр поможет Вам установить очередность их следования при отображении на форуме в Опциях Моего кабинета. Если Вы не установите своего значения, поле будет добавлено последним. 8. Порядок отображения по: если Вы планируете создать несколько полей подряд, то этот параметр поможет Вам установить очередность их следования при отображении на форуме в Опциях Моего кабинета. Если Вы не установите своего значения, поле будет добавлено последним. 9. Обязательное поле: эта настройка позволяет устанавливать правила необходимости заполнения данного поля. Нет - мользователь может не заполнять поле. Нет, но показывать при регистрации - настройка будет отображена при регистрации, но от ее изменения пользователь может отказаться. Да, при регистрации и обновлении профиля - пользователь должен заполнить это поле при регистрации или при первом редактировании своего профиля. Да, всегда - пользователь должен будет заполнить это поле, в противном случае ему будет блокирован доступ на форум до тех пор пока он не выполнит изменение настройки. 10. Доступно для редактирования пользователем: Нет - пользователь сможет лишь один раз установить значение этой настройки или поля профиля. Да - пользователь может изменять настройку в любой момент. Только при регистрации - пользователь сможет отредактировать поле или настройку только раз - при регистрации. 11. Личное поле: определяет права доступа к чтению содержимого поля. Настройка имеет смысл только если она создается как дополнительное поле профиля. Если установить переключатель в положение "Да", то поле будет доступно для чтения только самому пользователю и тем пользователям, у кого есть необходимые разрешения на просмотр личных полей. 12. Доступен поиск по этому полю в списке пользователей: управляет доступностью этой опции в расширенном поиске форума. Если настройка включена, то пользователей можно будет икать по данному полю. 13. Отображать в списке пользователей: позволяет отобразить значение этого поля в списке пользователей в отдельной колонке. Флажки. 1. Заголовок: заголовок отображается в качестве заголовка группы элементов в опциях пользователя. 2. Описание: описание позволяет Вам ввести текст, который бы описывал Вашу настройку пользователю. В этом поле можно использовать HTML-код, поэтому текст можно отформатировать по своему вкусу. 3. Категория профиля: этой настройкой определяется принадлежность поля к одной из раннее созданных категорий. Если у Вас несколько категорий, то они все будут в этом списке. Для того чтобы не привязывать опцию к категории поставьте переключатель в положение "(Вне категорий)". 4. Элементов на строку: позволяет Вам выбрать количество позиций в одной строке. Учтите, что если отключить эту опцию, то при большом числе позиций дизайн форума растянется. 5. Максимум опций: позволяет Вам установить максимальное количество вариантов опции, которое может выбрать пользователь. 0 - не ограниченно, хоть все. 6. Опции: введите сюда все желаемые позиции - варианты опций по одному на каждую строку. Не более 31 варианта. 7. Порядок отображения по: если Вы планируете создать несколько полей подряд, то этот параметр поможет Вам установить очередность их следования при отображении на форуме в Опциях Моего кабинета. Если Вы не установите своего значения, поле будет добавлено последним. 8. Порядок отображения по: если Вы планируете создать несколько полей подряд, то этот параметр поможет Вам установить очередность их следования при отображении на форуме в Опциях Моего кабинета. Если Вы не установите своего значения, поле будет добавлено последним. 9. Обязательное поле: эта настройка позволяет устанавливать правила необходимости заполнения данного поля. Нет - мользователь может не заполнять поле. Нет, но показывать при регистрации - настройка будет отображена при регистрации, но от ее изменения пользователь может отказаться. Да, при регистрации и обновлении профиля - пользователь должен заполнить это поле при регистрации или при первом редактировании своего профиля. Да, всегда - пользователь должен будет заполнить это поле, в противном случае ему будет блокирован доступ на форум до тех пор пока он не выполнит изменение настройки. 10. Доступно для редактирования пользователем: Нет - пользователь сможет лишь один раз установить значение этой настройки или поля профиля. Да - пользователь может изменять настройку в любой момент. Только при регистрации - пользователь сможет отредактировать поле или настройку только раз - при регистрации. 11. Личное поле: определяет права доступа к чтению содержимого поля. Настройка имеет смысл только если она создается как дополнительное поле профиля. Если установить переключатель в положение "Да", то поле будет доступно для чтения только самому пользователю и тем пользователям, у кого есть необходимые разрешения на просмотр личных полей. 12. Доступен поиск по этому полю в списке пользователей: управляет доступностью этой опции в расширенном поиске форума. Если настройка включена, то пользователей можно будет икать по данному полю. 13. Отображать в списке пользователей: позволяет отобразить значение этого поля в списке пользователей в отдельной колонке. Дополнительный ввод. При создании полей профиля определенного типа, Вам может быть отображена опция дополнительного ввода. Ее включение позволяет пользователю не выбирать вариант из существующих, а написать свой в соответствующее текстовое поле, которое появится при отображении настройки в Моем кабинете. Настройки здесь аналогичны настройкам поля типа "Текстовое поле одной строкой". VI. Показать страницу. Установка значения этой настройки является одной из важнейших стадий создания дополнительного профиля пользователя. Она фактически определит роль нового поля профиля на форуме. Есть два варианта: 1 - значение опции будет отображено в профиле пользователя. Для этого необходимо выбрать из списка строку "Редактировать профиль". Настройка будет отображена в разделе "Редактировать профиль" Моего кабинета, а значение настройки будет выведено в профиль пользователя. 2 - опция будет управлять каким-либо поведением или внешним видом форума. Для этого настройку стоит поместить в наиболее подходящую группу раздела "Опции" Моего кабинета. Чтобы сделать это, просто выберите из списка строку с соответствующим названием группы. Ваша настройка будет отображена в одной из групп раздела "Опции" Моего кабинета, а ее значение будет управлять событиями на форуме или поведением/отображением форума пользователю. VII. Немного коддинга. Итак, новое поле создано и отображено в желаемом месте настроек Моего кабинета. Что же дальше? А дальше нам необходимо выяснить как использовать значение настройки в кодах шаблонов. Все значения полей профиля пользователя доступны через глобальный массив $userinfo. Кроме того, они доступны в массиве $post при просмотре темы. Для вывода значения опции используется синтаксис: Code:
$userinfo[fieldX] Code:
$post[fieldX] Code:
$userinfo[field20] Code:
$post[field20] Code:
<if condition = "$userinfo[field20]=='Да'"> Ваш код здесь <else /> Ваш код здесь </if> Code:
<if condition = "$userinfo[field20]=='Да'"> Ваш код здесь </if> <if condition = "$userinfo[field20]=='Нет'"> Ваш код здесь </if> Code:
<if condition = "$userinfo['field20']"> Ваш код здесь <else /> Ваш код здесь </if> Code:
<if condition = "$post['field20']"> Ваш код здесь <else /> Ваш код здесь </if> Code:
<if condition = "$bbuserinfo[field20]=='Да'"> Ваш код здесь <else /> Ваш код здесь </if> Code:
<if condition = "$bbuserinfo['field20']"> Ваш код здесь <else /> Ваш код здесь </if> Code:
<if condition = "$userinfo[fieldX] & 32"> Ваш код здесь <else /> Ваш код здесь </if> Code:
<if condition = "$bbuserinfo[fieldX] & 32"> Ваш код здесь <else /> Ваш код здесь </if> VIII. Решение задач Итак, для примера решим две довольно распространенные задачи. Задача №1: Необходимо дать возможность пользователю выбирать ширину основной таблицы форума через настройку в разделе "Опции" Моего кабинета. Решение 1. Создаем новое поле профиля пользователя. Вибираем тип поля - "Радио" кнопки с выбором одного. 2. Заполняем настройки. Настройку "Опции" заполняем значениями: 100%, 90%, 80%, 950px, 750px, разделяя значения переводом строки (Enter-ом). px - латинские буквы, обозначающие единицы измерения - пикселы. 3. Задаем место отображения настройки - Опции: Другое. 4. Открываем шаблон spacer_open. В нем ищем код, определяющий ширину таблицы форума: HTML Code:
<div class="page" style="width:$stylevar[outerdivwidth]; text-align:$stylevar[left]"> <div style="padding:0px $stylevar[spacersize]px 0px $stylevar[spacersize]px"> HTML Code:
<if condition = "!$bbuserinfo['fieldX']"> <div class="page" style="width:$stylevar[outerdivwidth]; text-align:$stylevar[left]"> <div style="padding:0px $stylevar[spacersize]px 0px $stylevar[spacersize]px"> <else /> <div class="page" style="width:$bbuserinfo[fieldX]; text-align:$stylevar[left]"> <div style="padding:0px $stylevar[spacersize]px 0px $stylevar[spacersize]px"> </if> Задача №2: Необходимо отобразить в легенде поста пользователя изображение, соответствующее его полу. Решение 1. Создаем новое поле профиля пользователя. Вибираем тип поля - Меню с выбором одного. 2. Заполняем настройки. Настройку "Опции" заполняем значениями: [пустая строка], мужской, женский, разделяя значения переводом строки (Enter-ом). [пустая строка] - чтобы создать пустую строку, просто нажмите Enter. 3. Задаем место отображения настройки - Опции: просмотр темы. 4. Открываем шаблон postbit или postbit_legacy, и в нужном месте шаблона пишем код: HTML Code:
<if condition = "!$post['fieldX']"> <!-- do nothing //--> <else /> <if condition = "$post[fieldX]=='мужской'"> Код картинки здесь </if> <if condition = "$post[fieldX]=='женский'"> Код картинки здесь </if> </if> IX. Задача для самопроверки Разрешите пользователю использовать на форуме оба шаблона постов - postbit или postbit_legacy в зависимости от выбранных настроек. PHP код задания отображения темы с шаблоном postbit: PHP Code:
PHP Code:
= = = = = = = = = = = = = = = = =
Вынесено в F.A.Q. Закреплено. Закрыто. Если возникают вопросы - задавать здесь: Дополнительные поля профиля - Quick Guide = = = = = = = = = = = = = = = = = |
![]() |
||||
|
||||
Реклама на форуме А что у нас тут интересного? =)
|
Thread Tools | |
|
|