ivlad Опубликовано 10 Января 2006 Жалоба Поделиться Опубликовано 10 Января 2006 IPB v2.1.x Нужно добавить в профиль дополнительное поле - select box, которое должно создаваться динамически на основе неких данных из таблиц разрабатываемого мода. Вариант с использованием таблицы ibf_pfields_data и класса custom_fields не подходит, ибо в данном случае внутренность select'а сохраняется статично. Кроме того, очень хочется иметь возможность подсвечивать элементы списка (<option value='0' style='background:#aabbcc'>title</option>). Точнее, это требование критично. Какие ещё существуют варианты? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
.silent Опубликовано 10 Января 2006 Жалоба Поделиться Опубликовано 10 Января 2006 создавать свои таблицы и, не используя, custom fields, выводить каким-то своим образом... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
ivlad Опубликовано 10 Января 2006 Автор Жалоба Поделиться Опубликовано 10 Января 2006 Так я и спрашиваю: как? В phpbb версии мода я просто передаю в шаблон сформированный select в том виде, в каком он мне нужен. Там это просто. В IPB всё гораздо сложнее. Возможно, я ошибаюсь. Если есть способ передать в шаблон дополнительный select целиком, пожалуйста, расскажите мне о нём. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Dr.Freddy Опубликовано 10 Января 2006 Жалоба Поделиться Опубликовано 10 Января 2006 Вы просто не дали себе труда разобраться, как это делается в IPB. У шаблона есть переменные. Их можно увидеть, открыв кусок шаблона в админке и нажав кнопку «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[?]} и так далее. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
ivlad Опубликовано 10 Января 2006 Автор Жалоба Поделиться Опубликовано 10 Января 2006 Вы просто не дали себе труда разобраться, как это делается в IPB. Дал, только осилил не сразу Большое спасибо за развёрнутый ответ - многое стало понятнее. Сам уже успел догадаться, но до "более другого" способа: user_cp::personal() { ... $this->ipsclass->member['my_field'] = genMySelect() ... } Фактически, одна строчка кода решает проблему, и это хорошо. Вообще, собрался побыстрому денег заработать, продавая простой, но потенциально очень востребованный мод, который в оригинале является частью "персонального форумного движка". Но выясняется, что на понимание того, как более-менее прямым образом прикрутить имеющийся код к популярным движкам, требуется в разы больше времени, чем когда-то ушло на локальную реализацию идеи Но ничего, для phpBB готово, для IPB почти, на очереди версия для vBulletin... За пару-тройку дней должен закончить с программированием, ещё пара дней на написание лицензий и верстание простенького сайта и вот оно - счастье Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.