Перейти к контенту

Добавить поле в профиль


Рекомендуемые сообщения

IPB v2.1.x

 

Нужно добавить в профиль дополнительное поле - select box, которое должно создаваться динамически на основе неких данных из таблиц разрабатываемого мода.

 

Вариант с использованием таблицы ibf_pfields_data и класса custom_fields не подходит, ибо в данном случае внутренность select'а сохраняется статично. Кроме того, очень хочется иметь возможность подсвечивать элементы списка (<option value='0' style='background:#aabbcc'>title</option>). Точнее, это требование критично.

 

Какие ещё существуют варианты?

Ссылка на комментарий
Поделиться на других сайтах

Так я и спрашиваю: как?

 

В phpbb версии мода я просто передаю в шаблон сформированный select в том виде, в каком он мне нужен. Там это просто.

 

В IPB всё гораздо сложнее. Возможно, я ошибаюсь. Если есть способ передать в шаблон дополнительный select целиком, пожалуйста, расскажите мне о нём.

Ссылка на комментарий
Поделиться на других сайтах

Вы просто не дали себе труда разобраться, как это делается в IPB. :D

 

У шаблона есть переменные. Их можно увидеть, открыв кусок шаблона в админке и нажав кнопку «Show data variables». Например, имеем абстрактный шаблон MyHeader с переменными $data,$level,$title="". Из скрипта он будет вызываться, например, вот так:

$this->output .= $this->html->MyHeader($least_array, $sync_level, $title);

То есть, вам понадобится сформировать html код select'а в скрипте, записать его в какую-либо переменную — скажем, $select — и передать её шаблону.

$select = "<select name="with_post"><option value="1">{ipb.lang['with_post_y']}</option><option value="0">{ipb.lang['with_post_n']}</option></select>";
$this->output .= $this->html->MyHeader($least_array, $sync_level, $title, $select);

Соответственно в админке делаем Show Data Variables для шаблона и дописываем туда переменную $select. Например, $data,$level,$title="",$select="".

 

Всё. После этого в шаблоне можно использовать локальную переменную $select. Оформлять её, впрочем, лучше как {$select}. ;)

 

Помимо этого, в шаблонах автоматом доступны часть данных, например настройки IPB — {ipb.vars[?]}, языковые переменные {ipb.lang[?]}, входящие переменные сценария {ipb.input[?]} и так далее.

Ссылка на комментарий
Поделиться на других сайтах

Вы просто не дали себе труда разобраться, как это делается в IPB. :D

Дал, только осилил не сразу ;) Большое спасибо за развёрнутый ответ - многое стало понятнее. Сам уже успел догадаться, но до "более другого" способа:

 

user_cp::personal() {
 ...
 $this->ipsclass->member['my_field'] = genMySelect()
 ...
}

 

Фактически, одна строчка кода решает проблему, и это хорошо.

 

Вообще, собрался побыстрому денег заработать, продавая простой, но потенциально очень востребованный мод, который в оригинале является частью "персонального форумного движка". Но выясняется, что на понимание того, как более-менее прямым образом прикрутить имеющийся код к популярным движкам, требуется в разы больше времени, чем когда-то ушло на локальную реализацию идеи :)

 

Но ничего, для phpBB готово, для IPB почти, на очереди версия для vBulletin... За пару-тройку дней должен закончить с программированием, ещё пара дней на написание лицензий и верстание простенького сайта и вот оно - счастье :)

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.