Garret Опубликовано 27 Февраля 2005 Жалоба Поделиться Опубликовано 27 Февраля 2005 Вопрос к тем кто хорошо разберается в коде ИПБ. МОя версия форума 2.х Мне нужно добавить в поле ответа под номером пользователя некоторое значение, которое я буду читать с БД. Во первых сначала подготовим скин:Skins->Topic View->member_numberВидим там {ipb.lang['member_no']} $numberдописываем <br>{ipb.lang['money']} $moneyТекст в языковом файле тоже написан. Теперь открываю sources/topic.php и после долгих поисков нахожу такое$member['member_posts'] = $this->html->member_posts( $std->do_number_format($member['posts']) ); $member['member_number'] = $this->html->member_number( $std->do_number_format($member['id']) ); Вот тут то и начинается загвоздка. Я не знаю как написать чтоб из ряда ibf_members взялось значение money и вывелось бы там где надо.Пробовал делать отдельные запросы, никак.$row=mysql_query("select * from ibf_members where id = ".$member['id'].""); $r=mysql_num_rows($row); $member['member_money'] = $r['money']; Испробовал много вариантов, не помагает. А структуру организации кода в ИПБ понять не могу. Помогите кто может. Заранее спасибо. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
SphinX Опубликовано 3 Марта 2005 Жалоба Поделиться Опубликовано 3 Марта 2005 Ммм, тебе нужно в mysql_queries.php в функции function topics_get_posts и function topics_get_posts_with_join в списке дёргаемых полей:m.id,m.name,m.mgroup,m.email,m.joined,m.posts, m.last_visit, m.last_activity,m.login_anonymous,m.title,m.hide_email, m.warn_level, m.warn_lastwarn,дописать своё поле в виде m.{название поля в ibf_members}, например:m.id,m.name,m.mgroup,m.email,m.joined,m.posts, m.last_visit, m.last_activity,m.login_anonymous,m.title,m.hide_email, m.warn_level, m.warn_lastwarn,m.money,Тогда у тебя в topics.php появится возможность работать с $member['money'] в функции parse_member. А в скине уже в функции RenderRow в список выводимых под аватарой полей дописывай $author['money']. И конечно не вздумай форматирование этого поля впихивать в стороннюю скиновую функцию типа member_number, для этих целей в skin_topic.php выдели новую функцию. Если нужно будет. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Garret Опубликовано 3 Марта 2005 Автор Жалоба Поделиться Опубликовано 3 Марта 2005 Спасибо, попробую. Добавлено в [mergetime]1109861087[/mergetime] Все так и сдлал(отредактировал mysql_query.php, скин), но все равно не могу понять что надо писать в topics.php?Даже пытался сделать новую функцию и писать$member['member_money'] = $this->html->member_money( $std->do_number_format($member['money']) ); Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
SphinX Опубликовано 8 Марта 2005 Жалоба Поделиться Опубликовано 8 Марта 2005 Внимайте... 0. Не забываем забэкапить topics.php и lang_topics.php 1. Создаём новую функцию в скине. Она будет форматировать значение $money и выдавать обработанный результат. В итоге в будущем можно будет быстро и безболезненно изменять, к примеру, стиль начертания данного поля и т. п. Сделаем всё по правилам, через админку.Заходим в Админцентр » Шаблоны » Управление шаблонами » скин » Изменить HTML фрагменты » Topic View » Добавить фрагмент шаблона.Заполняем формочку Название фрагмента шаблона: дадим функции понятное и логично название, например member_money.Входящие переменные: как внутри функции будем обращаться к переданному числовому значению поля с деньгами? - $moneyГруппа фрагмента: удостоверяемся, что стоит skin_topic Далее вписываем саму функцию.Листинг:{$ibforums->lang['m_money']} $money <br />$ibforums->lang['m_money'] обращается к языковому файлу (где мы скоро впишем название поля с деньгами под аватарой), $money добавляет в вывод числовое значение денег. Всё предельно просто 2. Рассказываем форуму о наших проделках.То есть в topics.php заставляем Инвижен обрабатывать поле с деньгами из БД согласно скиновой функции из пункта 1.Итак, в topics.php ищем (ориентировочно 1020 строка, функция parse_row): if ( $member['id'] ) { $member['addresscard'] = $this->html->member_icon_vcard( $member['id'] ); }и после этого пишем вставляем: if ( $member['money'] ) { $member['money'] = $this->html->member_money( $member['money'] ); }То есть проверяем, заполнено ли в базе у пользователя поле money, если заполнено, передаём управление скиновой функции из пункта 1. Опять же, довольно просто. 3. Добавляем наше поле под аватару пользователя в темах.Админцентр » Шаблоны » Управление шаблонами » скин » Изменить HTML фрагменты » Topic View » RenderRowВ нашем случае поле мы вставляем под номер пользователя, так что находим {$author['member_number']}<br />и после этого пишем {$author['money']}Почему не нужно писать <br /> после {$author['money']}? А мы ведь уже включили <br /> в вывод в скиновой функции 4. И пусть мёртвые заговорят.Дело за малым - в lang_topic.php создать такой ключ (лучше в самом конце файла перед ?>, чтобы проще было искать в случае проблем):$lang['money'] = "Деньги:";Вместо "Деньги:" можно написать что угодно по вкусу Save & Upload ©Перестраиваем кэш скина. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Garret Опубликовано 12 Марта 2005 Автор Жалоба Поделиться Опубликовано 12 Марта 2005 Спасибо, очень помог. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.