Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
Dzi

Виджеты для разных тем.

Recommended Posts

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

К примеру у меня есть 2 темы, одна светлая, вторая тёмная..

и виджет с кодом дискорда тёмного цвета

Хочется чтобы а белой теме был другой код с белым цветом(код у меня есть, осталось понять как сделать чтобы он переключался)

Помогите.

post-60308-0-54992800-1519230579_thumb.png

Share this post


Link to post
Share on other sites

В настройках внешнего вида, в свойствах темы "Light" кликаете по иконке "Редактировать HTML и CSS", во вкладке CSS выбираете core -> front -> custom -> custom.css и добавляете туда свои селекторы, например:

#discord-widget .widget-body { background-color: #f3f3f3 !important; color: #6a6b80 !important; }

Сохраняете тему и смотрите результат.

Share this post


Link to post
Share on other sites

Короче ваш вариант не помог.

Но я нашёл решение радикально

Взял и просто вставил в код sidebar напрямую код дискорда после виджетов.

 

{{$adsForceSidebar = ( \IPS\Settings::i()->ads_force_sidebar AND \IPS\core\Advertisement::loadByLocation( 'ad_sidebar' ) );}}
{{if (isset( \IPS\Output::i()->sidebar['enabled'] ) and \IPS\Output::i()->sidebar['enabled'] ) && ( ( isset( \IPS\Output::i()->sidebar['contextual'] ) && trim( \IPS\Output::i()->sidebar['contextual'] ) !== '' ) || ( isset( \IPS\Output::i()->sidebar['widgets']['sidebar'] ) && count( \IPS\Output::i()->sidebar['widgets']['sidebar'] ) ) || ( \IPS\Dispatcher::i()->application instanceof \IPS\Application AND \IPS\Dispatcher::i()->application->canManageWidgets() ) || $adsForceSidebar )}}
<div id='ipsLayout_sidebar' class='ipsLayout_sidebar{$position} {{if !( isset( \IPS\Output::i()->sidebar['contextual'] ) && trim( \IPS\Output::i()->sidebar['contextual'] ) !== '' ) && ( !isset( \IPS\Output::i()->sidebar['widgets']['sidebar'] ) || !count( \IPS\Output::i()->sidebar['widgets']['sidebar'] ) ) && \IPS\Dispatcher::i()->application->canManageWidgets() && !$adsForceSidebar}}ipsLayout_sidebarUnused{{endif}}' data-controller='core.front.widgets.sidebar'>

	{{if isset( \IPS\Output::i()->sidebar['contextual'] ) && trim( \IPS\Output::i()->sidebar['contextual'] ) !== ''}}
		<aside id="elContextualTools" class='ipsClearfix' {{if isset( \IPS\Output::i()->sidebar['sticky'] )}}data-ipsSticky{{endif}}>
			{expression="\IPS\Output::i()->sidebar['contextual']" raw="true"}
		</aside>
	{{endif}}
	{{if $adsForceSidebar OR ( \IPS\core\Advertisement::loadByLocation( 'ad_sidebar' ) AND ( ( isset( \IPS\Output::i()->sidebar['contextual'] ) && trim( \IPS\Output::i()->sidebar['contextual'] ) !== '' ) OR ( isset( \IPS\Output::i()->sidebar['widgets']['sidebar'] ) && count( \IPS\Output::i()->sidebar['widgets']['sidebar'] ) ) ) )}}
		<div data-role='sidebarAd'>
			{advertisement="ad_sidebar"}
		</div>
		<br><br>
	{{endif}}
	{template="widgetContainer" group="global" app="core" params="'sidebar', 'vertical'"}<br>
     <iframe src="https://discordapp.com/widget?id=388039995375484948&theme=light" width="328" height="400" allowtransparency="true" frameborder="0"></iframe>
</div>
{{endif}}

Share this post


Link to post
Share on other sites

Только вот теперь виджет отображается на всех страницах - а хотелось бы чтобы только на главной..

Share this post


Link to post
Share on other sites

Добавьте 2 виджета. После в темном стиле скроете светлый, а в светлом - темный

Share this post


Link to post
Share on other sites

Как скрыть их?

Share this post


Link to post
Share on other sites

Через css. Я не вижу у Вас на форуме виджетов

Share this post


Link to post
Share on other sites

Суть в том что мне нужно блок с виджетом скрыть а не только виджет сам.

Share this post


Link to post
Share on other sites

Скрывайте. Смотрите селектор у блока.

В IPS виджет - это блок с названием и содержимым, а не содержимое

Share this post


Link to post
Share on other sites

Я плохо вдупляю.

Давайте я поставлю блок с дискордом обратно и вы покажите мне пример на нём..

А то я пытаюсь кубик в кружок впихнуть и не понимаю..

заранее спасибо..

Share this post


Link to post
Share on other sites

Каждый виджет имеет атрибут data-blockid с уникальным значением.

В данном случае data-blockid="plugin_3_sodTxtWidget_5w8hbhe8u"

 

Чтобы скрыть виджет, нужно добавить в custom.css

li[data-blockid="plugin_3_sodTxtWidget_5w8hbhe8u"] {
   display: none;
}

  • Upvote 1

Share this post


Link to post
Share on other sites

Лол, всё так просто?!

Большое спасибо..

Можете заглянуть пожалуйста ещё в соседнию темку, если не затруднит.. :unsure:

Share this post


Link to post
Share on other sites

Можно еще проще сделать. С одним виджетом

Темная тема

<iframe id="elDiscord_dark" src="https://discordapp.com/widget?id=388039995375484948&theme=dark" width="328" height="400" allowtransparency="true" frameborder="0"></iframe>

Светлая тема

<iframe id="elDiscord_light" src="https://discordapp.com/widget?id=388039995375484948&theme=light" width="328" height="400" allowtransparency="true" frameborder="0"></iframe>

 

И css в зависимости от стиля

#elDiscord_dark {
   display: none;
}

или

#elDiscord_light {
   display: none;
}

 

Либо средствами js вообще вырезать из кода

$('#elDiscord_dark').remove();

$('#elDiscord_light').remove();

 

Кстати у плагина, с помощью которого реализовано, есть php-версия. Можно определять стиль юзера, и выводить 1 фрейм в зависимости от стиля

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...