Jump to content

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

Featured Replies

Posted
comment_169828

Привет,

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

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

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

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

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

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

comment_169829

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

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

вот тема 

 

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

  • Author
comment_169831
13 hours ago, accop said:

<snip>

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

Как это:

image.png.1ab060bf4bf84370dd181c888ed8d919.png

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

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

Спасибо!

image.png

  • Author
comment_169832

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

  • Author
comment_169848
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/

  • Author
comment_169910

Так что мне удалось заставить его работать, отредактировав "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}}

 

comment_169912

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;
}

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

  • Author
comment_169913
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" после всех этих изменений?

  • Author
comment_169914

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

  • Author
comment_169915

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

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

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

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

comment_169921

BlackShot Используй 

!important

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

  • Author
comment_169955
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 часов только на то, чтобы вычислить тот последний фрагмент кода, который отправил вам, поскольку я не разработчик и не эксперт. 😅

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

  • Author
comment_169956

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

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

  • Author
comment_169958
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 месяца спустя...
  • Author
comment_171681

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

Спасибо!

  • Author
comment_171684
3 minutes ago, by_ix said:

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

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

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

comment_171687
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()", но я его не знаю.

  • Author
comment_171691
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, но это привело к поломке всего макета. 😅

  • Author
comment_171693
7 minutes ago, by_ix said:

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

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

  • Author
comment_171695

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.


Guest
Ответить в этой теме...

Последние посетители 0

  • No registered users viewing this page.