XF 2.0 Как передать переменную из шаблона в стиль?

Статус
В этой теме нельзя размещать новые ответы.

aolko

Проверенные
Сообщения
32
Реакции
9
Баллы
3,305
Есть в шаблоне условие
Код:
<xf:if is="{$xf.visitor.Profile.custom_fields.user_color}">
        <xf:css src="custom.less"/>
</xf:if>
Как передать значение поля в сам стиль?
 
В шаблоне впиши
HTML:
<style>
    .selector
    {
        color: {$myVar};
    }
</style>
хорошо, но у меня может быть довольно объёмный стиль, вроде как-то можно объявить @переменную_стиля
 
А что передать надо? И для чего?

Вообще данные в стиль "передаются" через классы и id элементов. И обычно этим можно обойтись.

Упс извиняюсь. Только сейчас прочитал сам код.
 
Последнее редактирование:
aolko, переменные для ксс берутся из настроек стиля, а не из шаблона, переменную для ксс нельзя задать в шаблонах, я не понимаю, каким должен быть код ксс, чтобы "не хотелось" вставлять его в шаблон через тег <style>
 
  • Мне нравится
Реакции: CMTV
Код:
<xf:if is="{$xf.visitor.Profile.custom_fields.user_color}">
        <xf:css>
            .p-body{
                background: {$xf.visitor.Profile.custom_fields.user_color};
            }
            .p-title{
                color: contrast({$xf.visitor.Profile.custom_fields.user_color});
            }
        </xf:css>
    </xf:if>
очень странные дела, <style> и <xf:css> __не__ парсят less в шаблонах, а наоборот напрямую css
1513238142781.png
 
Последнее редактирование:
Кто-нибудь ответьте по теме, либо сразу скажите что вам пофиг или вы не знаете
Поумерьте свой пыл! Тут Вам никто и ничем не обязан, запомните это раз и навсегда. Если ответа нет, то логично, что никто его не знает.
Все тут помогают по мере наличия свободного времени и собственных знаний.
 
Последнее редактирование:
А зачем именно подключать свойства стиля таким образом, а если создать шаблон .less и подключить его
А как вы передадите значение поля в less стиль, скажите мне, я пробовал, в less не парсятся условия и/или переменные шаблона
 
Тоже стало интересно. на англоязычном форуме. Посмотрим, что ответят.

Пробовал уже и врубать режим разработки, добавлять новый стилей параметр, который принимает значение от шаблона. Но никак.
 
Последнее редактирование:
  • Мне нравится
Реакции: Hope
Человек, который состоит в команде, которая делает стиль UI.X и качественные плагины, говорит, что без вмешивания через аддон нельзя передать значение кастомного поля в .less шаблон. А жаль, я думал, что какой-то способ есть...

Так что, остается только способ ты (aolko) сам предложил в своем первом сообщении.
You won't be able to use a custom user field within a less template, they get cached by the browser so there will be a lot of unexpected things happening. You'll just need to include the extra less template with a conditional like you used above
Перевод: Вы не можете использовать значение кастомного поля пользователя, так как оно будет мгновенно закешировано браузером или CDN (если используется). Все это приведет к куче проблем. А вот способ с проверкой в шаблоне и загрузкой .less шаблона подходит.
 
Последнее редактирование:
  • Мне нравится
Реакции: Hope
А вот способ с проверкой в шаблоне и загрузкой .less шаблона подходит.
Это типа так
PHP:
<xf:if is="{$xf.visitor.Profile.custom_fields.user_color}">
    <xf:css src="custom_fields_user_color.less" />
</xf:if>
И сам шаблон
Less:
@fields_user_color: {$xf.visitor.Profile.custom_fields.user_color};

.p-body {
    background: @fields_user_color;
}
.p-title {
    color: contrast(@fields_user_color);
}

Или так, покрасивше :)
Less:
@fields_user_color: {$xf.visitor.Profile.custom_fields.user_color};

.p {
    &-body {
        background: @fields_user_color;
    }
    &-title {
        color: contrast(@fields_user_color);
    }
}
 
  • Мне нравится
Реакции: Hope
Это типа так
PHP:
<xf:if is="{$xf.visitor.Profile.custom_fields.user_color}">
    <xf:css src="custom_fields_user_color.less" />
</xf:if>
И сам шаблон
Less:
@fields_user_color: {$xf.visitor.Profile.custom_fields.user_color};

.p-body {
    background: @fields_user_color;
}
.p-title {
    color: contrast(@fields_user_color);
}

Или так, покрасивше :)
Less:
@fields_user_color: {$xf.visitor.Profile.custom_fields.user_color};

.p {
    &-body {
        background: @fields_user_color;
    }
    &-title {
        color: contrast(@fields_user_color);
    }
}
1513615619267.png
мимо

Код:
<xf:if is="{$xf.visitor.Profile.custom_fields.user_color}">
        <xf:css src="custom.less" />
        
    <xf:elseif is="{$xf.visitor.Profile.custom_fields.user_image}" />
        <xf:css>
            .p-body{
                background: {$xf.visitor.Profile.custom_fields.user_color} url({$xf.visitor.Profile.custom_fields.user_image}) repeat;
            }
            .p-title{
                color: contrast({$xf.visitor.Profile.custom_fields.user_color});
            }
        </xf:css>
    </xf:if>

Код:
@user_Color: {$xf.visitor.Profile.custom_fields.user_color};

.p-body{
    background: @user_Color;
}
.p-title{
    color: contrast(@user_Color);
}
 
Последнее редактирование:
Новую тему создавайте и полностью описывайте, что нужно.
Да вроде эта тема полностью подходит по смыслу и что нужно описал выше, значение из шаблона которые беру тоже указал выше.
 
Статус
В этой теме нельзя размещать новые ответы.
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу