XF 2.3 Как заменить кнопки "Подписаться" и "Отписаться" иконками Font Awesome 5?

Версия XenForo
2.3

osmxnxn

Проверенные
Сообщения
44
Реакции
5
Баллы
40
Подскажите, может кто знает. Не получается кнопки "Подписаться" и "Отписаться" через Extra.less заменить нормально на иконки Flat Awesome 5. Получается всегда одна иконка отображается, вместо двух - подписки и отписки. И плюс если нажать, видимо, скрипт срабатывает и еще и надпись отображаться начинает.
 
Подскажите, может кто знает.
Привет. Я надеюсь тебе нужно было вот это.

Найди шаблон через свой стиль: member_macros. Открой его.
Найди:
HTML:
<xf:macro id="member_action_buttons" arg-user="!" arg-context="!">
P.S. У меня это 83 строка
<xf:macro id="member_action_buttons" arg-user="!" arg-context="!">
<!--[XF:action_groups:outer_start]-->
<xf:if contentcheck="true">
<!--[XF:action_groups:start]-->
<div class="buttonGroup">
<xf:contentcheck>
<!--[XF:action_group_1:start]-->
<xf:if is="$xf.visitor.canFollowUser($user)">
<xf:button href="{{ link('members/follow', $user) }}"
class="button--link"
data-xf-click="switch"
data-sk-follow="{{ phrase('follow') }}"
data-sk-unfollow="{{ phrase('unfollow') }}">
{{ $xf.visitor.isFollowing($user) ? phrase('unfollow') : phrase('follow') }}
</xf:button>
</xf:if>
<xf:if is="$xf.visitor.canIgnoreUser($user)">
<a href="{{ link('members/ignore', $user) }}"
class="button button--link"
data-xf-click="switch"
data-sk-ignore="{{ phrase('ignore')|for_attr }}"
data-sk-unignore="{{ phrase('unignore')|for_attr }}">
{{ $xf.visitor.isIgnoring($user) ? phrase('unignore') : phrase('ignore') }}
</a>
</xf:if>
<!--[XF:action_group_1:end]-->
</xf:contentcheck>
</div>
</xf:if>

<!--[XF:action_groups:middle]-->

<xf:if contentcheck="true">
<div class="buttonGroup">
<xf:contentcheck>
<!--[XF:action_group_2:start]-->
<xf:if is="$xf.visitor.canStartConversationWith($user)">
<xf:button href="{{ link('direct-messages/add', null, {'to': $user.username}) }}" class="button--link">
{{ phrase('send_direct_message') }}
</xf:button>
</xf:if>
<xf:if is="$xf.visitor.canSearch() AND $context != 'tooltip'">
<div class="buttonGroup-buttonWrapper">
<xf:button class="button--link menuTrigger" data-xf-click="menu" aria-expanded="false" aria-haspopup="true">{{ phrase('find') }}</xf:button>
<div class="menu" data-menu="menu" aria-hidden="true">
<div class="menu-content">
<h4 class="menu-header">{{ phrase('find_content') }}</h4>
<!--[XF:find_menu:top]-->
<a href="{{ link('search/member', null, {'user_id': $user.user_id}) }}" rel="nofollow" class="menu-linkRow">{{ phrase('find_all_content_by_x', {'name': $user.username}) }}</a>
<a href="{{ link('search/member', null, {'user_id': $user.user_id, 'content': 'thread'}) }}" rel="nofollow" class="menu-linkRow">{{ phrase('find_all_threads_by_x', {'name': $user.username}) }}</a>
<!--[XF:find_menu:bottom]-->
</div>
</div>
</div>
</xf:if>
<!--[XF:action_group_2:end]-->
</xf:contentcheck>
</div>
<!--[XF:action_groups:end]-->
</xf:if>
<!--[XF:action_groups:outer_end]-->
</xf:macro>
Замени всё что находится с (83) строки по последнюю (144) на этот код ниже.
<xf:macro id="member_action_buttons" arg-user="!" arg-context="!">
<!--[XF:action_groups:outer_start]-->
<xf:if contentcheck="true">
<!--[XF:action_groups:start]-->
<div class="buttonGroup">
<xf:contentcheck>
<!--[XF:action_group_1:start]-->
<xf:if is="$xf.visitor.canFollowUser($user)">
<xf:button href="{{ link('members/follow', $user) }}"
class="button--link"
data-xf-click="switch"
data-sk-follow=""
data-sk-unfollow=""
data-label=".js-label">
<span class="button-text">
<xf:if is="$xf.visitor.isFollowing($user)">
<xf:fa icon="fas fa-user-times" />
</xf:if>
<xf:if is="!$xf.visitor.isFollowing($user)">
<xf:fa icon="fas fa-user-plus" />
</xf:if>
</span>
</xf:button>
</xf:if>
<xf:if is="$xf.visitor.canIgnoreUser($user)">
<a href="{{ link('members/ignore', $user) }}"
class="button button--link"
data-xf-click="switch"
data-sk-ignore="{{ phrase('ignore')|for_attr }}"
data-sk-unignore="{{ phrase('unignore')|for_attr }}">
{{ $xf.visitor.isIgnoring($user) ? phrase('unignore') : phrase('ignore') }}
</a>
</xf:if>
<!--[XF:action_group_1:end]-->
</xf:contentcheck>
</div>
</xf:if>

<!--[XF:action_groups:middle]-->

<xf:if contentcheck="true">
<div class="buttonGroup">
<xf:contentcheck>
<!--[XF:action_group_2:start]-->
<xf:if is="$xf.visitor.canStartConversationWith($user)">
<xf:button href="{{ link('direct-messages/add', null, {'to': $user.username}) }}" class="button--link">
{{ phrase('send_direct_message') }}
</xf:button>
</xf:if>
<xf:if is="$xf.visitor.canSearch() AND $context != 'tooltip'">
<div class="buttonGroup-buttonWrapper">
<xf:button class="button--link menuTrigger" data-xf-click="menu" aria-expanded="false" aria-haspopup="true">{{ phrase('find') }}</xf:button>
<div class="menu" data-menu="menu" aria-hidden="true">
<div class="menu-content">
<h4 class="menu-header">{{ phrase('find_content') }}</h4>
<!--[XF:find_menu:top]-->
<a href="{{ link('search/member', null, {'user_id': $user.user_id}) }}" rel="nofollow" class="menu-linkRow">{{ phrase('find_all_content_by_x', {'name': $user.username}) }}</a>
<a href="{{ link('search/member', null, {'user_id': $user.user_id, 'content': 'thread'}) }}" rel="nofollow" class="menu-linkRow">{{ phrase('find_all_threads_by_x', {'name': $user.username}) }}</a>
<!--[XF:find_menu:bottom]-->
</div>
</div>
</div>
</xf:if>
<!--[XF:action_group_2:end]-->
</xf:contentcheck>
</div>
<!--[XF:action_groups:end]-->
</xf:if>
<!--[XF:action_groups:outer_end]-->
</xf:macro>

1751785448160.png
1751785499667.png


1751785541646.png

 
Последнее редактирование:
Привет. Я надеюсь тебе нужно было вот это.

Найди шаблон через свой стиль: member_macros. Открой его.
Найди:
HTML:
<xf:macro id="member_action_buttons" arg-user="!" arg-context="!">
P.S. У меня это 83 строка
<xf:macro id="member_action_buttons" arg-user="!" arg-context="!">
<!--[XF:action_groups:outer_start]-->
<xf:if contentcheck="true">
<!--[XF:action_groups:start]-->
<div class="buttonGroup">
<xf:contentcheck>
<!--[XF:action_group_1:start]-->
<xf:if is="$xf.visitor.canFollowUser($user)">
<xf:button href="{{ link('members/follow', $user) }}"
class="button--link"
data-xf-click="switch"
data-sk-follow="{{ phrase('follow') }}"
data-sk-unfollow="{{ phrase('unfollow') }}">
{{ $xf.visitor.isFollowing($user) ? phrase('unfollow') : phrase('follow') }}
</xf:button>
</xf:if>
<xf:if is="$xf.visitor.canIgnoreUser($user)">
<a href="{{ link('members/ignore', $user) }}"
class="button button--link"
data-xf-click="switch"
data-sk-ignore="{{ phrase('ignore')|for_attr }}"
data-sk-unignore="{{ phrase('unignore')|for_attr }}">
{{ $xf.visitor.isIgnoring($user) ? phrase('unignore') : phrase('ignore') }}
</a>
</xf:if>
<!--[XF:action_group_1:end]-->
</xf:contentcheck>
</div>
</xf:if>

<!--[XF:action_groups:middle]-->

<xf:if contentcheck="true">
<div class="buttonGroup">
<xf:contentcheck>
<!--[XF:action_group_2:start]-->
<xf:if is="$xf.visitor.canStartConversationWith($user)">
<xf:button href="{{ link('direct-messages/add', null, {'to': $user.username}) }}" class="button--link">
{{ phrase('send_direct_message') }}
</xf:button>
</xf:if>
<xf:if is="$xf.visitor.canSearch() AND $context != 'tooltip'">
<div class="buttonGroup-buttonWrapper">
<xf:button class="button--link menuTrigger" data-xf-click="menu" aria-expanded="false" aria-haspopup="true">{{ phrase('find') }}</xf:button>
<div class="menu" data-menu="menu" aria-hidden="true">
<div class="menu-content">
<h4 class="menu-header">{{ phrase('find_content') }}</h4>
<!--[XF:find_menu:top]-->
<a href="{{ link('search/member', null, {'user_id': $user.user_id}) }}" rel="nofollow" class="menu-linkRow">{{ phrase('find_all_content_by_x', {'name': $user.username}) }}</a>
<a href="{{ link('search/member', null, {'user_id': $user.user_id, 'content': 'thread'}) }}" rel="nofollow" class="menu-linkRow">{{ phrase('find_all_threads_by_x', {'name': $user.username}) }}</a>
<!--[XF:find_menu:bottom]-->
</div>
</div>
</div>
</xf:if>
<!--[XF:action_group_2:end]-->
</xf:contentcheck>
</div>
<!--[XF:action_groups:end]-->
</xf:if>
<!--[XF:action_groups:outer_end]-->
</xf:macro>
Замени всё что находится с (83) строки по последнюю (144) на этот код ниже.
<xf:macro id="member_action_buttons" arg-user="!" arg-context="!">
<!--[XF:action_groups:outer_start]-->
<xf:if contentcheck="true">
<!--[XF:action_groups:start]-->
<div class="buttonGroup">
<xf:contentcheck>
<!--[XF:action_group_1:start]-->
<xf:if is="$xf.visitor.canFollowUser($user)">
<xf:button href="{{ link('members/follow', $user) }}"
class="button--link"
data-xf-click="switch"
data-sk-follow=""
data-sk-unfollow=""
data-label=".js-label">
<span class="button-text">
<xf:if is="$xf.visitor.isFollowing($user)">
<xf:fa icon="fas fa-user-times" />
</xf:if>
<xf:if is="!$xf.visitor.isFollowing($user)">
<xf:fa icon="fas fa-user-plus" />
</xf:if>
</span>
</xf:button>
</xf:if>
<xf:if is="$xf.visitor.canIgnoreUser($user)">
<a href="{{ link('members/ignore', $user) }}"
class="button button--link"
data-xf-click="switch"
data-sk-ignore="{{ phrase('ignore')|for_attr }}"
data-sk-unignore="{{ phrase('unignore')|for_attr }}">
{{ $xf.visitor.isIgnoring($user) ? phrase('unignore') : phrase('ignore') }}
</a>
</xf:if>
<!--[XF:action_group_1:end]-->
</xf:contentcheck>
</div>
</xf:if>

<!--[XF:action_groups:middle]-->

<xf:if contentcheck="true">
<div class="buttonGroup">
<xf:contentcheck>
<!--[XF:action_group_2:start]-->
<xf:if is="$xf.visitor.canStartConversationWith($user)">
<xf:button href="{{ link('direct-messages/add', null, {'to': $user.username}) }}" class="button--link">
{{ phrase('send_direct_message') }}
</xf:button>
</xf:if>
<xf:if is="$xf.visitor.canSearch() AND $context != 'tooltip'">
<div class="buttonGroup-buttonWrapper">
<xf:button class="button--link menuTrigger" data-xf-click="menu" aria-expanded="false" aria-haspopup="true">{{ phrase('find') }}</xf:button>
<div class="menu" data-menu="menu" aria-hidden="true">
<div class="menu-content">
<h4 class="menu-header">{{ phrase('find_content') }}</h4>
<!--[XF:find_menu:top]-->
<a href="{{ link('search/member', null, {'user_id': $user.user_id}) }}" rel="nofollow" class="menu-linkRow">{{ phrase('find_all_content_by_x', {'name': $user.username}) }}</a>
<a href="{{ link('search/member', null, {'user_id': $user.user_id, 'content': 'thread'}) }}" rel="nofollow" class="menu-linkRow">{{ phrase('find_all_threads_by_x', {'name': $user.username}) }}</a>
<!--[XF:find_menu:bottom]-->
</div>
</div>
</div>
</xf:if>
<!--[XF:action_group_2:end]-->
</xf:contentcheck>
</div>
<!--[XF:action_groups:end]-->
</xf:if>
<!--[XF:action_groups:outer_end]-->
</xf:macro>


Спасибо за такой развернутый ответ, но имел ввиду кнопки "Подписаться" и "Отписаться" на темы, а не на пользователя.
 
Shumasick, нашел по аналогии в шаблоне thread_view

Код:
<xf:if is="$thread.canWatch()">
    <xf:button href="{{ link('threads/watch', $thread) }}" class="button--link"
        data-xf-click="switch-overlay"
        data-sk-watch="{{ phrase('watch') }}"
        data-sk-unwatch="{{ phrase('unwatch') }}">
        <xf:if is="{$thread.Watch.{$xf.visitor.user_id}}">
            {{ phrase('unwatch') }}
        <xf:else />
            {{ phrase('watch') }}
        </xf:if>
    </xf:button>
</xf:if>

и заменил на это

Код:
<xf:if is="$thread.canWatch()">
    <xf:button href="{{ link('threads/watch', $thread) }}" class="button--link"
        data-xf-click="switch-overlay"
        data-sk-watch=""
        data-sk-unwatch=""
        data-label=".js-label">
        <span class="button-text">
            <xf:if is="{$thread.Watch.{$xf.visitor.user_id}}">
                <xf:fa icon="fas fa-bell-slash" />
            <xf:else />
                <xf:fa icon="fas fa-bell" />
            </xf:if>
        </span>
    </xf:button>
</xf:if>

 
Shumasick, нашел по аналогии в шаблоне thread_view

Код:
<xf:if is="$thread.canWatch()">
    <xf:button href="{{ link('threads/watch', $thread) }}" class="button--link"
        data-xf-click="switch-overlay"
        data-sk-watch="{{ phrase('watch') }}"
        data-sk-unwatch="{{ phrase('unwatch') }}">
        <xf:if is="{$thread.Watch.{$xf.visitor.user_id}}">
            {{ phrase('unwatch') }}
        <xf:else />
            {{ phrase('watch') }}
        </xf:if>
    </xf:button>
</xf:if>

и заменил на это

Код:
<xf:if is="$thread.canWatch()">
    <xf:button href="{{ link('threads/watch', $thread) }}" class="button--link"
        data-xf-click="switch-overlay"
        data-sk-watch=""
        data-sk-unwatch=""
        data-label=".js-label">
        <span class="button-text">
            <xf:if is="{$thread.Watch.{$xf.visitor.user_id}}">
                <xf:fa icon="fas fa-bell-slash" />
            <xf:else />
                <xf:fa icon="fas fa-bell" />
            </xf:if>
        </span>
    </xf:button>
</xf:if>

Теперь я понял где вы изначально хотели заменить текст на иконки. Проверил, тоже работает, спасибо. Возьму себе на заметку.
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу