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

Как добавить в поле ответа нужную переменную?


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

Вопрос к тем кто хорошо разберается в коде ИПБ.

 

МОя версия форума 2.х :D

 

Мне нужно добавить в поле ответа под номером пользователя некоторое значение, которое я буду читать с БД.

 

Во первых сначала подготовим скин:

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'];

:)

 

Испробовал много вариантов, не помагает. А структуру организации кода в ИПБ понять не могу. :)

 

Помогите кто может. Заранее спасибо.

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

Ммм, тебе нужно в 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 выдели новую функцию. Если нужно будет.
Ссылка на комментарий
Поделиться на других сайтах

Спасибо, попробую.

Добавлено в [mergetime]1109861087[/mergetime]

Все так и сдлал(отредактировал mysql_query.php, скин), но все равно не могу понять что надо писать в topics.php?

Даже пытался сделать новую функцию и писать

$member['member_money'] = $this->html->member_money( $std->do_number_format($member['money']) );

:D

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

Внимайте...

 

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'] = "Деньги:";

Вместо "Деньги:" можно написать что угодно по вкусу :D

 

Save & Upload ©

Перестраиваем кэш скина.

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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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

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

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