Перейти к содержанию

Вторичное групповое форматирование


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

Привет,

Позвольте мне попытаться объяснить, что я пытаюсь сделать.

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

Но это относится только к основным группам. Хотелось примерно так:

Если первичная группа - «Администратор», а вторичная - «Донор» -> примените форматирование «Администратор»
Если первичная группа - «Член», а вторичная - «Донор» -> примените форматирование «Донор»

Возможно ли это? Любая помощь будет принята с благодарностью!

Если вы не понимаете, что я имел в виду, дайте мне знать. Я использую Google Translate. 😅

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

Конечно. просто будет больше if else
if (первичная группа - «Администратор» и вторичная - «Донор») {
примените форматирование «Администратор»
}elseif (первичная группа - «Член», а вторичная - «Донор» ){
примените
 форматирование «Донор»
}else{
обычное форматирование 
}

тут есть тема, как делать форматирование для группы + логика что я написал = ты успешен 

вот тема 

 

Можно и стилями хитро добиться такого результата 

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

13 hours ago, accop said:

<snip>

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

Как это:

image.png.1ab060bf4bf84370dd181c888ed8d919.png

Если участник находится в основной группе «Администратор» и дополнительной группе «Донор», примените форматирование «Администратор» по умолчанию. Если участник входит в основную группу «Участник» и дополнительную группу «Донор», примените форматирование «Донор».

Это имело смысл?

Спасибо!

image.png

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

Игнорируйте последний снимок экрана.
Я покопался и подумал, что мне нужно изменить userLink и userLinkFromData. Но я точно не знаю, что в них менять, так как я не программист.

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

Вы всерьёз полагаете, что людям есть дело, какого цвета у кого-то ник?!

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

10 minutes ago, Zero108 said:

Do you seriously believe that people care what color someone's nickname is ?!

Я ищу решение именно потому, что кто-то жаловался, что имена других доноров окрашены, а он нет.

Кроме того, я пытаюсь узнать что-то новое. Я новичок в программировании и подумал, что это будет хорошим началом. Для этого тоже есть плагин, но я не смог найти его в Интернете, чтобы я мог его изучить:

https://invisioncommunity.com/files/file/9833-secondary-group-formatting/

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

Так что мне удалось заставить его работать, отредактировав "userLink". Однако теперь цветные имена отображаются почти везде, что неплохо, но не является обычным явлением.

Я попытался добавить к условию «$ groupFormatting», но это применимо только к определенным группам. Остальные группы по-прежнему везде раскрашиваются.

У тебя есть идеи, что я могу сделать? @accop

Это мой код "userLink":

{{if $anonymous}}
    {lang="post_anonymously_placename"}{{else}}
{{$groupFormatting = ( $groupFormatting === NULL ) ? ( ( \IPS\Settings::i()->group_formatting == 'global' ) ? TRUE : FALSE ) : $groupFormatting;}}
{{if $member->member_id AND \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'members', 'front' ) ) }}<a href='{{if $warningRef}}{$member->url()->setQueryString( 'wr', $warningRef )}{{else}}{$member->url()}{{endif}}' data-ipsHover data-ipsHover-width='370' data-ipsHover-target='{$member->url()->setQueryString( array( 'do' => 'hovercard', 'wr' => $warningRef, 'referrer' => urlencode( \IPS\Request::i()->url() ) ) )}' title="{lang="view_user_profile" sprintf="$member->name"}" class="ipsType_break">
 
{{if ($member->member_group_id == 8 && $member->mgroup_others == 12)}}<span class="spkDoador">{$member->name}
{{else}}{$member->group['prefix']|raw}{$member->name}{{endif}}
{{if ($member->member_group_id == 8 && $member->mgroup_others == 12)}}</span>
{{else}}{$member->group['suffix']|raw}{{endif}}</a>
{{else}}{{if ($member->member_group_id == 8 && $member->mgroup_others == 12)}}<span class="spkDoador">{$member->name}
{{else}}{$member->group['prefix']|raw}{$member->name}{{endif}}
{{if ($member->member_group_id == 8 && $member->mgroup_others == 12)}}</span>
{{else}}{$member->group['suffix']|raw}{{endif}}
{{endif}}
{{endif}}

 

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

BlackShot конечно есть идея :)

очень хорошо, что ты разобрался с этим. 

Сейчас напишу тебе простое решение

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

BlackShot Смотри. Это мой код "userLink".

На последней строке я добавил в ссылку класс:

{{if $anonymous}}
	{lang="post_anonymously_placename"}{{else}}
{{$groupFormatting = ( $groupFormatting === NULL ) ? ( ( \IPS\Settings::i()->group_formatting == 'global' ) ? TRUE : FALSE ) : $groupFormatting;}}
{{if $member->member_id AND \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'members', 'front' ) ) }}<a class='colorFor{$member->member_group_id}{{$test = implode("", explode(",", $member->mgroup_others));}}{$test}' href='{{if $warningRef}}{$member->url()->setQueryString( 'wr', $warningRef )}{{else}}{$member->url()}{{endif}}' data-ipsHover data-ipsHover-width='370' data-ipsHover-target='{$member->url()->setQueryString( array( 'do' => 'hovercard', 'wr' => $warningRef, 'referrer' => urlencode( \IPS\Request::i()->url() ) ) )}' title="{lang="view_user_profile" sprintf="$member->name"}" class="ipsType_break">{{if $groupFormatting && $member->group['prefix']}}{$member->group['prefix']|raw}{{endif}}{$member->name}{{if $groupFormatting && $member->group['suffix']}}{$member->group['suffix']|raw}{{endif}}</a>{{else}}{{if $groupFormatting && $member->group['prefix']}}{$member->group['prefix']|raw}{{endif}}{$member->name}{{if $groupFormatting && $member->group['suffix']}}{$member->group['suffix']|raw}{{endif}}{{endif}}{{endif}}

Было:

... <a href=' ...

Добавил класс:

... <a class='colorFor{$member->member_group_id}{{$test = implode("", explode(",", $member->mgroup_others));}}{$test}' href=' ...

Получается у тебя есть класс для каждой группы и для связки основной группы и дополнительной

если у пользователя только группа администратор (id 4) будет класс = colorFor4

если есть дополнительная группа, будет colorFor43 или colorFor42

Все последующие  группы будут добавляться цифрами к этому классу colorFor376

Потом просто добавляешь CSS в custom.css

.colorFor376{
color: red!important;
}

и так добавляешь стили для каждой уникальной связке групп

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

34 minutes ago, accop said:

BlackShot Смотри. Это мой код "userLink".

На последней строке я добавил в ссылку класс:


{{if $anonymous}}
	{lang="post_anonymously_placename"}{{else}}
{{$groupFormatting = ( $groupFormatting === NULL ) ? ( ( \IPS\Settings::i()->group_formatting == 'global' ) ? TRUE : FALSE ) : $groupFormatting;}}
{{if $member->member_id AND \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'members', 'front' ) ) }}<a class='colorFor{$member->member_group_id}{{$test = implode("", explode(",", $member->mgroup_others));}}{$test}' href='{{if $warningRef}}{$member->url()->setQueryString( 'wr', $warningRef )}{{else}}{$member->url()}{{endif}}' data-ipsHover data-ipsHover-width='370' data-ipsHover-target='{$member->url()->setQueryString( array( 'do' => 'hovercard', 'wr' => $warningRef, 'referrer' => urlencode( \IPS\Request::i()->url() ) ) )}' title="{lang="view_user_profile" sprintf="$member->name"}" class="ipsType_break">{{if $groupFormatting && $member->group['prefix']}}{$member->group['prefix']|raw}{{endif}}{$member->name}{{if $groupFormatting && $member->group['suffix']}}{$member->group['suffix']|raw}{{endif}}</a>{{else}}{{if $groupFormatting && $member->group['prefix']}}{$member->group['prefix']|raw}{{endif}}{$member->name}{{if $groupFormatting && $member->group['suffix']}}{$member->group['suffix']|raw}{{endif}}{{endif}}{{endif}}

Было:


... <a href=' ...

Добавил класс:


... <a class='colorFor{$member->member_group_id}{{$test = implode("", explode(",", $member->mgroup_others));}}{$test}' href=' ...

Получается у тебя есть класс для каждой группы и для связки основной группы и дополнительной

если у пользователя только группа администратор (id 4) будет класс = colorFor4

если есть дополнительная группа, будет colorFor43 или colorFor42

Все последующие  группы будут добавляться цифрами к этому классу colorFor376

Потом просто добавляешь CSS в custom.css


.colorFor376{
color: red!important;
}

и так добавляешь стили для каждой уникальной связке групп

Вау, отличное решение! Не могли бы вы показать мне, каким будет весь код в "userLink" после всех этих изменений?

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

Не берите в голову. Я быстро проверил коды и не заметил, что все было на первой строчке. Я протестирую и дам знать! 😄

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

@accop Мы почти на месте. Итак, в custom.css есть следующее:

.colorFor812 {
  color: #c90076;
  font-size: 102%;
  background: url(https://i.imgur.com/8wxFgdm.gif) repeat;
}

"color", "font-size" и "background" работают нормально. Но цвет ни на что не влияет.

Вы знаете, почему это так? 🤔

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

BlackShot Используй 

!important

Скорее всего другие стили перекрывают твой. Поэтому надо добавлять !important чтобы повысить приоритет стиля

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

8 hours ago, accop said:

BlackShot Используй 


!important

Скорее всего другие стили перекрывают твой. Поэтому надо добавлять !important чтобы повысить приоритет стиля

Именно в этом была проблема! Ты сделал это!!! 🤩

Однако есть одна небольшая проблема. Каждый, кого я добавляю в custom.css, получает свое имя в темах. Остальные пользователи этого не делают, что является нормальным поведением для IPS.

Чтобы решить эту проблему, я добавил в ваш код условие «$ groupFormatting»:

<a class='{{if $groupFormatting}}colorFor{$member->member_group_id}{{$test = implode("", explode(",", $member->mgroup_others));}}{$test}' href='{{if $warningRef}}{$member->url()->setQueryString( 'wr', $warningRef )}{{else}}{$member->url()}{{endif}}{{endif}}'

Так что я предполагаю, что теперь все работает нормально! БОЛЬШОЕ спасибо за вашу доброту и помощь! Я потратил более 5 часов только на то, чтобы вычислить тот последний фрагмент кода, который отправил вам, поскольку я не разработчик и не эксперт. 😅

Еще раз спасибо!!!!! 🥰💛

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

@accop У меня почему-то пропала возможность щелкать названия профилей в темах/topics.

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

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

BlackShot Попробуй восстановить userLink по умолчанию и ещё раз внести правки. 

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

1 hour ago, accop said:

BlackShot Попробуй восстановить userLink по умолчанию и ещё раз внести правки. 

Я узнал о проблеме после вашего комментария. Ваш код работает нормально. Я добавил условие «$ groupFormatting» даже для части URL. Вот что его сломало.

Теперь у меня есть:

<a class='{{if $groupFormatting}}colorFor{$member->member_group_id}{{$test = implode("", explode(",", $member->mgroup_others));}}{$test}{{endif}}' href='{{if $warningRef}}{$member->url()->setQueryString( 'wr', $warningRef )}{{else}}{$member->url()}{{endif}}'

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

🥰🤩

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

  • 2 месяца спустя...

@accop, есть некоторые виджеты, такие как whosOnline, которые используют userLinkFromData вместо userLink, поэтому имена пользователей не отображаются в формате (formatted). Вы знаете, как я могу это изменить? Или как изменить userLinkFromData, чтобы отразить наши изменения?

Спасибо!

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

BlackShot если добавить тот же класс в userLinkFromData, изменений тоже нет?

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

3 minutes ago, by_ix said:

BlackShot если добавить тот же класс в userLinkFromData, изменений тоже нет?

Я думаю, что переменные немного разные. Если я это сделаю, это испортит чтение данных. Я пробовал это раньше, и это не сработало. То же самое произошло бы, если бы я изменил whosOnline на userLink вместо userLinkFromData в некоторых файлах.

@by_ix eсть ли у вас еще какие-нибудь предложения?

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

1 час назад, BlackShot сказал:

Я думаю, что переменные немного разные.

сейчас посмотрю.

1 час назад, BlackShot сказал:

переменные немного разные

в том файле указаны только определённые переменные и нет переменной с айди групп, редачить его в пхп не хочу.
поэтому вот:

{{if $anonymous}}
	{lang="post_anonymously_placename"}{{else}}
{{$groupid = \IPS\Db::i()->select( 'member_group_id', 'core_members', array ( 'member_id=?', $id ) )->first();}}
{{$groupids = \IPS\Db::i()->select( 'mgroup_others', 'core_members', array ( 'member_id=?', $id ) )->first();}}
{{if $id AND \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'members', 'front' ) ) }}<a class='{{if $groupIdForFormatting}}colorFor{$groupid}{{$secondarygroups = implode("", explode(",", $groupids));}}{$secondarygroups}{{endif}}' href='{url="app=core&module=members&controller=profile&id={$id}" seoTemplate="profile" seoTitle="$seoName ?: \IPS\Http\Url::seoTitle( $name )"}' data-ipsHover data-ipsHover-width="370" data-ipsHover-target='{url="app=core&module=members&controller=profile&id={$id}&do=hovercard" seoTemplate="profile" seoTitle="$seoName ?: \IPS\Http\Url::seoTitle( $name )"}' title="{lang="view_user_profile" sprintf="$name"}" class="ipsType_break">{{if $groupIdForFormatting AND ( $groupFormatting === TRUE OR ( $groupFormatting === NULL AND \IPS\Settings::i()->group_formatting == 'global' ) )}}{expression="\IPS\Member\Group::load( $groupIdForFormatting )->formatName( $name )" raw="true"}{{else}}{$name}{{endif}}</a>{{else}}{{if $groupIdForFormatting AND ( $groupFormatting === TRUE OR ( $groupFormatting === NULL AND \IPS\Settings::i()->group_formatting == 'global' ) )}}{expression="\IPS\Member\Group::load( $groupIdForFormatting )->formatName( $name )" raw="true"}{{else}}{$name}{{endif}}{{endif}}
{{endif}}

возможно, можно вызвать группу без запроса к бд, другим запросом, по типу "\IPS\Member\Group::load()", но я его не знаю.

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

1 hour ago, by_ix said:

сейчас посмотрю.

в том файле указаны только определённые переменные и нет переменной с айди групп, редачить его в пхп не хочу.
поэтому вот:

{{if $anonymous}}
	{lang="post_anonymously_placename"}{{else}}
{{$groupid = \IPS\Db::i()->select( 'member_group_id', 'core_members', array ( 'member_id=?', $id ) )->first();}}
{{$groupids = \IPS\Db::i()->select( 'mgroup_others', 'core_members', array ( 'member_id=?', $id ) )->first();}}
{{if $id AND \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'members', 'front' ) ) }}<a class='{{if $groupIdForFormatting}}colorFor{$groupid}{{$secondarygroups = implode("", explode(",", $groupids));}}{$secondarygroups}{{endif}}' href='{url="app=core&module=members&controller=profile&id={$id}" seoTemplate="profile" seoTitle="$seoName ?: \IPS\Http\Url::seoTitle( $name )"}' data-ipsHover data-ipsHover-width="370" data-ipsHover-target='{url="app=core&module=members&controller=profile&id={$id}&do=hovercard" seoTemplate="profile" seoTitle="$seoName ?: \IPS\Http\Url::seoTitle( $name )"}' title="{lang="view_user_profile" sprintf="$name"}" class="ipsType_break">{{if $groupIdForFormatting AND ( $groupFormatting === TRUE OR ( $groupFormatting === NULL AND \IPS\Settings::i()->group_formatting == 'global' ) )}}{expression="\IPS\Member\Group::load( $groupIdForFormatting )->formatName( $name )" raw="true"}{{else}}{$name}{{endif}}</a>{{else}}{{if $groupIdForFormatting AND ( $groupFormatting === TRUE OR ( $groupFormatting === NULL AND \IPS\Settings::i()->group_formatting == 'global' ) )}}{expression="\IPS\Member\Group::load( $groupIdForFormatting )->formatName( $name )" raw="true"}{{else}}{$name}{{endif}}{{endif}}
{{endif}}

возможно, можно вызвать группу без запроса к бд, другим запросом, по типу "\IPS\Member\Group::load()", но я его не знаю.

Я попытался добавить их в userLink, но это привело к поломке всего макета. 😅

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

BlackShot потому что нужно заменить всё в userLinkFromData.

Изменено пользователем by_ix
Ссылка на комментарий
Поделиться на другие сайты

7 minutes ago, by_ix said:

BlackShot потому что нужно заменить всё в userLinkFromData.

Ой, как плохо. Я посмотрел на структуру и подумал, что мне нужно изменить userLink, а не userLinkFromData. Я скоро попробую еще раз.

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

@by_ixТы удивительный! Теперь все работает нормально. Я сравню исходный код с вашим, чтобы увидеть, что мне нужно было сделать, и, надеюсь, немного узнаю. Спасибо!!!

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

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

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

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

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

  Разрешено использовать не более 75 эмодзи.

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

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

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

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...