Skip to content

Получить ID группs пользователя через API

Здравствуйте.

Итак, сколько не гуглил, так и не нашел внятной документации по API.

IPB 3.3.1

 

Имеем профиль пользователя (допустим /user/1001/)

 

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

 

Например у группы id 7, ссылка на сайт из профиля должна быть индексируемая.

У остальных групп - ссылки не индексируемые.

 

Ковырял skin_profile, в частности "customFieldGroup__contact".

 

Попытка тупо вывести хотя бы id группы пользователя или id пользователя методом:

{$author['member_id']} или {$member['member_id']}, так же {$author['g_id']} или {$member['g_id']} и т.д. - не дают результата.

 

{$this->memberData['member_id']} - выводит ID пользователя, который просматривает страницу.

 

Вот как мне в "customFieldGroup__contact" получить ID группы пользователя, чтобы на основе этого построить затем условя отображения ссылок и т.д.?

Featured Replies

Если не ошибаюсь, то вот Вам ID группы:

$this->memberData['member_group_id']

  • Author

Если не ошибаюсь, то вот Вам ID группы:

$this->memberData['member_group_id']

 

Это ID группы того, кто смотрит страницу/профиль - т.е. собственный.

 

А нужен ID группы того, чей профиль мы смотрим - т.е. отдельного пользователя, чей профиль мы просматриваем.

Edited by rech

Я лично не подскажу, но пока ждете ответа от знающих людей, советую посмотреть все хуки, которые могут быть связаны с этим функционалом и найти правильный код в них.

  • Author

Я лично не подскажу, но пока ждете ответа от знающих людей, советую посмотреть все хуки, которые могут быть связаны с этим функционалом и найти правильный код в них.

 

 

смотрел, но так и ничего не нашел.

 

У меня условие: это нужно встраивать в шаблон.

 

З.Ы. А как часто тут появляются профи?

  • Author

Итак дополняю.

 

Есть шаблон profileModern, в нем есть код отвечающий за вывод "контактов":

 

<if test="member_contact_fields:|:is_array( $member['custom_fields']['contact'])">
 <foreach loop="cfields:$member['custom_fields']['contact'] as $field">
   {$field}
 </foreach>
</if>

 

этот код генерирует всё на основе "customFieldGroup__contact", там есть следующие строчки:

<if test="cf_website:|:$f->raw_data['pf_key'] == 'website'">
<a class='url uid' rel="me" href='{$f->parsed}'>{$f->parsed}</a>
<else />

 

 

мне нужно, чтобы у пользователей групп не ID 7 в профиле это выглядело так:

 

<if test="cf_website:|:$f->raw_data['pf_key'] == 'website'">
<a class='url uid' rel="me nofollow" href='{$f->parsed}'>{$f->parsed}</a>
<else />

 

т.е. мне бы тупо получить ID группы того пользователя, которого просматриваю.

Вот как мне в "customFieldGroup__contact" получить ID группы пользователя, чтобы на основе этого построить затем условя отображения ссылок и т.д.?

В customFieldGroup__contact нет ид группы пользователя, ни каких-либо других его данных. Получить можно только в шаблоне профиля profileModern - $member['member_group_id']

  • Author

В customFieldGroup__contact нет ид группы пользователя, ни каких-либо других его данных. Получить можно только в шаблоне профиля profileModern - $member['member_group_id']

какой кошмар, эта ваша заливная рыба... брррр.. т.е. IPB.

 

Пришлось распарсить url, чтобы получить id пользователя и через IPSMember получить уже его группу.

  • Author

Я вот тут подумал.

 

А может как то можно создать глобальную переменную в profileModern и ей присвоить ID группы пользователя, чтобы потом её извлечь в customFieldGroup__contact?

 

или как-то передать данные из profileModern в customFieldGroup__contact?

 

а то, ято всё сделал, всё работает, но ИМХО: душа требует использование "внутренних функций" IPB.

Дело в том, что customFieldGroup__contact собирается раньше чем profileModern, т.е. передать через глобальную переменную не получится. Можно конечно захукать или захоркодить метод где собирается customFieldGroup__contact - sources\classes\customfields\profileFields.php, parseToView. В нем доступна свойство $this->member_data.

Создайте там глоб. переменную $GLOBALS['member_data'], откуда можно будет получить данные в шаблонах семейство customFieldGroup__*

 

$GLOBALS['member_data'] = $this->member_data;

Create an account or sign in to comment

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.