Spq2

Gavrilov

Проверенные
Сообщения
30
Реакции
6
Баллы
3,305
.
 
Последнее редактирование:
Зато можно нормально отстроить цвета. И не накладно, делается две дочерних темы от родителя, правится родитель, в дочерних только цвета, стили, лого и т.д.
А затем дефолтный можно переключать часовому поясу юзверя.
 
Последнее редактирование:
Yafetius, Сделайте стандартный стиль черным фоном, поставьте переключатель!
 
Последнее редактирование:
Первый плагин не пробовал, второй тестил, не понравился, много настроек лишних и работает как то не понятно :) еще один есть для переключения стилей, тоже не понравился. В теме стиля UI.X Pro давал код переключателя, потом для себя его переделал, что бы ссылка не отображалась при наведении :) длинная не красивая.
Yafetius, короче так, выше написали про дочерние, вот на примере того же UI.X Pro структура стилей получается такая:
2020-01-06_075041.png
Для редактирования стили UI.X Pro Child и UI.X Pro Dark Child, во втором только цветовая палитра темная, а все основные изменения вносятся только в первый. Стили UI.X Pro и UI.X Pro Dark только для обновления, когда выйдет новая редакция стиля для новой версии движка.
Теперь про переключатель, делаем модификацию шаблона PAGE_CONTAINER, используем регулярное выражение:
Найти:
Код:
/<xf:if is="\$xf\.visitor.canChangeStyle().*?<\/li>/s
Заменить:
Код:
$0
<xf:if is="{$xf.visitor.style_id} == 8">
    <xf:set var="$svgStyleSwitchHref" value="{{ link('misc/style', null, {'style_id': 9,'_xfRedirect': $xf.fullUri,'t': csrf_token()}) }}" />
    <xf:set var="$svgStyleSwitchIcon" value="fa-lightbulb" />
<xf:elseif is="{$xf.visitor.style_id} == 9" />
    <xf:set var="$svgStyleSwitchHref" value="{{ link('misc/style', null, {'style_id': 8,'_xfRedirect': $xf.fullUri,'t': csrf_token()}) }}" />
    <xf:set var="$svgStyleSwitchIcon" value="fa-lightbulb-on" />
</xf:if>

<li data-xf-init="tooltip" title="Переключить стиль">
    <a onclick='javascript:document.location.href="{$svgStyleSwitchHref}"'>
        <xf:fa icon="{$svgStyleSwitchIcon}" />
    </a>
</li>
Меняет id стилей на свои, у меня 8 - темный стиль, 9 - светлый, если у пользователя светлый, то переключатель на темный, так как то :)
 

Skaiman, а вот этот сценарий ты тестил?
<xf:if is="{$xf.visitor.style_id} == 1 OR {$xf.visitor.style_id} == 'default'"> — стиль по дефолту, в моём случае светлый, и его айди (По умолчанию гость, который впервые заходит на сайт, использует стиль default, после чего в случае выбора стиля, работают условия с числовыми айди. Без этого уточнения у новых посетителей не будет отображаться иконка, пока они не выберут какой-то стиль в футере и движок это не запомнит).
 
Последнее редактирование:
HAIM, я не видел тот материал. Условие с дефолтным стилем вроде как лишнее, посетитель его и так видит, когда впервые заходит, можно просто добавить условие скрытия от гостей, пока не зарегался, не можешь переключать.

Так то есть основа, а допилить всегда можно под свои нужды, у меня там тож не все гладко :)
 
Последнее редактирование модератором:
Skaiman, ну хз, может в последней версии ксенфоро что-то и поменяли, но у меня на 2.1.5 в инкогнито у пользователя юзается айди стиля 0. Как в этом случае будет работать условие вида айди_стиля=1, я не совсем понимаю
1578287559049.png
 
Да, надо добавить для дефолтного стиля условие
Код:
|| {$xf.visitor.style_id} == 'default'
HAIM, у меня форум не рабочий, такие мелочи могу упустить, потестил, ответил на вопрос и забыл, не возникло других вопросов по ответу, совсем забыл, возникли, проверил, доработал :)

HAIM, возьми собери все в плагин, с выбором отображения переключателя в настройках, в хейдере или в футере, мне чет лень :)
 
Последнее редактирование модератором:
HAIM, возьми собери все в плагин, с выбором отображения переключателя в настройках, в хейдере или в футере, мне чет лень :)
Я не умею плагины собирать :) А учиться ленивенько
 
.
 
Последнее редактирование:
  • Ха-ха-ха
Реакции: HAIM
Yafetius, это не очень хороший подход, два стиля лучше, по тому способу, как я понимаю, снесены практически все переменные и настраивать будешь только в шаблоне стиля, потом подумай об обновлениях. Не все на хабре надо считать неоспоримым правильным ходом :)
 
не совсем ясно, как браузер запоминает эту переключалку
Никак. По ссылке, которую Вы же и привели, есть демка. На ней посмотрите, и увидите, что ничего не запоминается.

Сделайте уже двумя отдельными стилями. Не морочьте никому голову. Это наиболее простой способ.
 
И сама переключалка в html:
Поверь, тебе советуют наиболее правильное решение, кто там что мутит не важно, только они потом сидят на старых версиях, без возможности обновления, так как намутили всего, по хабру :)
 
.
 
Последнее редактирование:
Но там же не xenforo, для чего приводить пример из другой оперы.
Вообще хотелось бы понять, как оно работает
Изучай html, css, js, php и разберешься

HAIM, там надо условие не для визитера делать, а для стиля
Код:
<xf:if is="{$xf.style.style_id} == 8">
это условие компилирует код только в определенных стилях тогда, по идеи можно делать модификации, исключающие не нужные стили
Код:
<xf:if is="{$xf.style.style_id} == 8">
    <xf:set var="$svgStyleSwitchHref" value="{{ link('misc/style', null, {'style_id': 9,'_xfRedirect': $xf.fullUri,'t': csrf_token()}) }}" />
    <xf:set var="$svgStyleSwitchIcon" value="fa-lightbulb" />
<xf:elseif is="{$xf.style.style_id} == 9" />
    <xf:set var="$svgStyleSwitchHref" value="{{ link('misc/style', null, {'style_id': 8,'_xfRedirect': $xf.fullUri,'t': csrf_token()}) }}" />
    <xf:set var="$svgStyleSwitchIcon" value="fa-lightbulb-on" />
</xf:if>
<xf:if is="{$xf.style.style_id} == 8 || {$xf.style.style_id} == 9">
    <li data-xf-init="tooltip" title="Переключить стиль">
        <a onclick='javascript:document.location.href="{$svgStyleSwitchHref}"'>
            <xf:fa icon="{$svgStyleSwitchIcon}" />
        </a>
    </li>
</xf:if>

В принципе и массив должен прокатить
Код:
<xf:if is="in_array({$xf.style.style_id}, [8, 9]) ">
 
Последнее редактирование модератором:
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу