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

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


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

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

 

МОя версия форума 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 ©

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

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

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

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

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

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

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

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

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

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

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

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

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