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 при просмотре темы. Для вывода значения опции используется синтаксис:
или
где, X - числовой идентификатор поля. Его можно узнать, зайдя в Управление дополнительными полями профиля панели администратора. Колонка "Название" как раз содержит этот идентификатор. Допустим идентификатор поля - 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;