Владельцам 3.8.6: не поставили патч - потеряли форум!

Файловый Архив

  • Неограниченное количество категорий и суб-категорий
  • Настройки прав доступа по группам
  • Настройки прав доступа по каждой категории
  • Предпросмотр медиа файлов: FLV, IFLV, F4A, F4V, MP4, MP3, MOV и других...
  • Мультизагрузка файлов - SWFUploader
  • Добавление файлов с сервера
Подробности и история обновлений продукта в этой теме
Loading

Go Back   форум vBSupport.org > > >
Register Изображения Меню vBsupport Files Manager Аллея Звёзд Реклама на форуме Search Today's Posts Mark Forums Read
  • Мемберка
  • Администраторам
  • Premoderation
  • For English speaking users
  • Изменения в правах
  • Каталог Фрилансеров
Пароли на скачивание файлов в Member Area меняются автоматически каждый день
Если вам нужно скачать какой то скрипт, за паролем ко мне в ЛС
привет какирам kerk
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота.
Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
На форуме введена премодерация ВСЕХ новых пользователей

Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
for English speaking users:
You may be surprised with restriction of access to the attachments of the forum. The reason is the recent change in vbsupport.org strategy:

- users with reputation < 10 belong to "simple_users" users' group
- if your reputation > 10 then administrator (kerk, Luvilla) can decide to move you into an "improved" group, but only manually

Main idea is to increase motivation of community members to share their ideas and willingness to support to each other. You may write an article for the subject where you are good enough, you may answer questions, you may share vbulletin.com/org content with vbsupport.org users, receiving "thanks" equal your reputation points. We should not only consume, we should produce something.

- you may:
* increase your reputation (doing something useful for another members of community) and being improved
* purchase temporary access to the improved category:
10 $ for 3 months. - this group can download attachments, reputation/posts do not matter.
20 $ for 3 months. - this group can download attachments, reputation/posts do not matter + adds eliminated + Inbox capacity increased + files manager increased permissions.

Please contact kerk or Luvilla regarding payments.

Important!:
- if your reputation will become less then 0, you will be moved into "simple_users" users' group automatically.*
*for temporary groups (pre-paid for 3 months) reputation/posts do not matter.
Не можете скачать вложение?
Изменения в правах групп пользователей
внимательно читаем эту и эту темы
Короткая версия - тут
Уважаемые пользователи!

На форуме открыт новый раздел "Каталог фрилансеров"

и отдельный раздел для платных заказов "Куплю/Закажу"

 
 
Old  
Sellrion
В Черном-причерном списке
 
Sellrion's Avatar
Default [Статья] Дополнительные поля профиля - Quick Guide 86

I. Вступление.
Итак, эта инструкция будет полностью посвещена дополнительным полям профиля. Мы узнаем что это за функция vBulletin и для чего ее можно применить. Так же мы познакомимся со способами и основными правилами применения дополнительных полей профиля.

II. Основные понятия.
Как мы с вами знаем vBulletin - это довольно функциональный скрипт форума со множеством возможностей. Однако, есть вещи, которые разработчики по объективным причинам не могут добавить в основной набор возможностей двига. Эти причины очевидны - либо они считают, что данная функция выходит за рамки необходимого, либо же она просто настолько узкоспециализированна, что может быть актуальна только на вашем конкретном форуме. Благо, возможностей реализации собственных функций в vBulletin много - начиная с продуктов и модулей, и заканчивая ручным редактированием файлов и шаблонов. И вот вы задались идеей создать некий свой собственный функционал. Вы прошли через все ужасы коддинга и постигания азов управления vBulletin, но тут столкнулись с проблемой - как позволить пользователю управлять новой функцией через изменение настроек? Все доступные пользователю опции размещены в UserCP (рус. "Мой кабинет"), но как сделать так, чтобы там присудствовали и ваши собственные настройки? Как добавить новую, настраиваемую пользователем, графу информации в его профиль? И, наконец, каким образом влиять на поведение форума в зависимости от значений этих настроек? Вот тут нам на помощь приходит мощный иснтрумент vBulletin - Дополнительные поля профиля. Я сказал "мощный" не просто так. Действительно, с помощью Дополнительных полей профиля можно привязать совершенно любое поведение форума к настройкам, которые были бы доступны для редактирования пользователю.

IV. Панель администратора.
Для того, чтобы начать работу с дополнительными полями профиля надо зайти в Панель управления (администрирования). Слева рассположены группы настроек. Нам необходимо найти группу под названием "Дополнительные поля профиля". Если мы развернем группу, то увидим список из трех строк:

  • Управление дополнительными полями профиля. Позволяет получит доступ к списку уже созданных полей профиля и отредактировать любой из них. Обратите внимание, что изначально этот список уже включает в себя пять стандартных полей. Их при желании можно отредактировать или удалить.
  • Добавить дополнительное поле профиля. Позволяет полноценно добавить новое поле профиля, полностью его настроив.
  • Категории дополнительных полей профиля. Позволяет создать произвольное количество категорий полей профиля и управлять ими. Эта функция была добавлена сравнительно недавно и заключается они лишь в том, что поля разных категорий будут разделены между собой заголовками - названиями категорий при отображении их на форуме. Не советую пользоваться категориями, так как с точки зрения дизайна они выглядят весьма странно и бесмысленно. Однако их можно использвать для того чтобы рассортировать поля в списке, который доступен через Управление дополнительными полями профиля см. выше. Только в этом случае необходимо чтобы эти поля не были предназначены для их отображения в профиле пользователя.


V. Добавление дополнительного поля профиля.
Итак, для начала разберемся с добавлением нового поля. Выберем сответствующую строку в списке и перейдем к первому шагу - выбору типа поля. Существует шесть доступных типов полей на выбор:
  • Текстовое поле одной строкой. Пользователю отображается текстовое поле, в которое можно ввести текст определенной длинны, но только в одну строку.

  • Многострочное текстовое поле. Пользователю отображается текстовое поле, в которое можно ввести текст определенной длинны в несколько строк.

  • "Радио" кнопки с выбором одного Пользователю отображается переключатель, состоящий из заданного количества позиций. Пользователь может выбрать лишь одну позицию из всех предложенных.

  • Меню с выбором одного Пользователю отображается раскрывающийся список с определенным количеством строк - вариантов опций. Пользователь может выбрать лишь одну опцию из списка.
  • Меню с выбором нескольких Пользователю отображается список с определенным количеством строк - вариантов опций. Пользователь может выбрать несколько вариантов из списка, выделив их поочередно в списке, удерживая клавишу Ctrl при каждом щелчке на строку с опцией.

  • Флажки (checkboxes) c возможностью выбора нескольких Пользователю отображается группа опций. Пользователь может выбрать несколько вариантов, отметив их флажком (галочкой).

После того как вы определелитесь с типом поля, можно переходить ко второй стадии создания. Так как в зависимости от сделанного выбора интерфейс далее немного меняется, то рассмотрим все варианты по-порядку.

Текстовое поле одной строкой.
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]
где, X - числовой идентификатор поля. Его можно узнать, зайдя в Управление дополнительными полями профиля панели администратора. Колонка "Название" как раз содержит этот идентификатор. Допустим идентификатор поля - field20. Для вывода значения этого поля пользователя на экран Вы должны в шаблон вставить следующий код:
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>
Переменная $userinfo['fieldX'] имеет тип булевой перемменой, т.е. может принимать два значения - True и False. Если $userinfo['fieldX'] имеет значение True значит значение настройки не пустое, следовательно будет выполнена первая часть кода. Довольно часто вам будет необходимо узнавать значение конкретной настройки не того пользователя, пост или профиля просматривается в данный момент, а пользователя просматривающего форум. Для этого используется массив $bbuserinfo. Синтаксис выглядит так:
Code:
<if condition = "$bbuserinfo[field20]=='Да'">
Ваш код здесь
<else />
Ваш код здесь
</if>
или
Code:
<if condition = "$bbuserinfo['field20']">
Ваш код здесь
<else />
Ваш код здесь
</if>
Внимание! У вас может возникнуть вопрос: как проверить значения выбранных полей, если в настройках полей профиля стоит множественный выбор? Действительно, если мы создадим текстовое поле с выбором нескольких вариантов ответа, то переменная $userinfo['field20'] будет содержать что-то вроде "256847". Как перевести это в читаемый формат? Дело в том, что в случае выбора нескольких вариантов, в базу данных записываются биты этих вариантов. Каждый вариант идентифицируется битом по порядку: 1, 2, 4, 8, 16, 32, 64, 128, 256 и т.д. При выборе нескольких вариантов в базу записывается сумма этих битов. Чтобы проверить выбран ли тот или иной вариант, следует применять код:
Code:
<if condition = "$userinfo[fieldX] & 32">
Ваш код здесь
<else />
Ваш код здесь
</if>
или
Code:
<if condition = "$bbuserinfo[fieldX] & 32">
Ваш код здесь
<else />
Ваш код здесь
</if>
Код выше проверяет не выбрана ли опция номер 6.

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">
4. Заменяем этот код на структуру if, которая будет обрабатывать ошибку в том случае, если значение поля окажется пустым. Следовательно:
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>
Обратите внимание, так как название вариантов опции соответствуют правильному HTML синтаксису, то мы можем просто заменить $stylevar[outerdivwidth] на $bbuserinfo[fieldX]. Форум просто подставит значение поля fieldX в код шаблона. Все! Теперь пользователь может выбирать ширину форума.

Задача №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>
Первая часть кода говорит о том, что если значение поля отсутсвует, то никакая картинка отображена не будет. do nothing - это лишь комментарий, там можно написать что угодно. Все! Пользователь может выбирать картинку на посте в зависимости от своего пола.

IX. Задача для самопроверки
Разрешите пользователю использовать на форуме оба шаблона постов - postbit или postbit_legacy в зависимости от выбранных настроек. PHP код задания отображения темы с шаблоном postbit:
PHP Code:
$vbulletin->options['legacypostbit'] = 0
с шаблоном postbit_legacy:
PHP Code:
$vbulletin->options['legacypostbit'] = 1
Удачи в изучении! Все вопросы по пройденному материалу оставляйте здесь, буду отвечать...
 
Bot
Yandex Bot Yandex Bot is online now
 
Join Date: 05.05.2005
Реклама на форуме А что у нас тут интересного? =)
Old  
kerk
k0t
 
kerk's Avatar
Default 3

очень гут!
статья грамотно и доходчиво написана
первый пост закрепил
 
Old  
TAIFUN
Человек
vBSSecurity
 
TAIFUN's Avatar
Default 1

Sellrion, респект, ты как всегда - на 5 баллов. ))

P.S. Третьего пункта нет.
 
Old  
Sellrion
В Черном-причерном списке
 
Sellrion's Avatar
Default 0

Quote:
Originally Posted by TAIFUN View Post
. Третьего пункта нет.
Все на месте, просто в нумерации ошибся. Поправим...
 
Old  
TAIFUN
Человек
vBSSecurity
 
TAIFUN's Avatar
Default 0

Sellrion, я так и понял )
Попробовал задачу №1. Некоторые поля уменьшило в величине, а некоторые нет.
Скриншот позже выложу.
 
Old  
Sellrion
В Черном-причерном списке
 
Sellrion's Avatar
Default 0

TAIFUN, не уменьшило футер, хедер и навбар. И не должно. Как поправить подумай, специально не сказал...
 
Old  
wireless
Простоузер
Question [Статья] Huh? 0

Такой вопрос: как мне отключить видимость полей дополнительной информации для пользователей определяемых мною групп? Мучаюсь-мучаюсь, и пока ничего не получается. Пока дошел до того, что залез в шаблон modifyprofile, и там обнаружив следующие строчки почесал затылок. А что есть весь этот кусок в оператор условия внести, но я не силен в коде, хотелось бы спросить как...
Code:
<!-- start if customfields -->		
</div>
</div>
</td>
</tr>
</table>

<br />

<table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" align="center">
<tr>
	<td class="thead">$vbphrase[additional_information]</td>
</tr>
<tr>
	<td class="panelsurround" align="center">
	<div class="panel">
		<div style="width:$stylevar[formwidth_usercp]" align="$stylevar[left]">

		$customfields[regular]

<!-- end if custom fields -->
И все же, если моя идея попахивает маразмом, не могли бы вы подсказать какой-нибудь способ решения проблемы. Повторюсь, вопрос состоит в том: как мне отключить видимость полей дополнительной информации для групп пользователей, оставив его, допустим, только для модераторов и супер-модераторов?
 
Old  
kerk
k0t
 
kerk's Avatar
Default 2

HTML Code:
<if condition="$bbuserinfo[usergroupid] == '6' OR $bbuserinfo[usergroupid] == '5'">$show_code<else />$no_code</if>
 
Old  
wireless
Простоузер
Default 0

kerk, спасибо. решил проблему ;)

wireless добавил 04.06.2008 в 12:22
А можно как-нибудь сделать, чтобы одно поле было доступно для редактирования только группе с id=30, а другое только пользователям группы с id=32, допустим? Просто, в шаблоне modifyprofile в конце:
Code:
$customfields[regular]
И все. Т.е. блоком даются сразу все поля, т.е. если блокировать к ни доступ, то только ко всем. А если мне нужно только часть?

Last edited by wireless : 06-04-2008 at 01:22 PM. Reason: Добавлено сообщение
 
Old  
kerk
k0t
 
kerk's Avatar
Default 0

посмотри, как формирует это дело ф-я fetch_profilefields в файле functions_user.php
 
 

Tags
profile fields, поля профиля

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off




All times are GMT +4. The time now is 06:39 PM.


Powered by vBulletin® Version Kerk Edition
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.