несколько виджетов, смотрящих в разные форумы на одной странице

Avatar
  • обновлен
  • Отвечен

http://feedback.userecho.com/topic/269559-kastomizatsiya-vidzheta-neskolko-variantov/


2 месяца назад поднималась тема, сегодня я попробовал с ней разобраться. 

Нужно несколько виджетов, смотрящих в разные форумы/категории. Сейчас у вас настраивается только один виджет на страницу и дальше "трава не расти". Можно конечно переинициализировать опции через UI.Popin.setup(....), дальше сбросить его состояние .preloaded, но если виджет уже инициализовался когда-то, то я потанцевал с бубном, да так и не смог его  "запустить" с другой ссылки с другими параметрами. Упустил чего?

Прикрепленные ответы
Avatar
Vladimir Mullagaliyev
  • Ответ
  • Отвечен

Здравствуйте Дмитрий,

Я правильно понимаю, что Вы будете вызывать виджеты собственными кнопками с Вашего сайта?

Если да, то вот еще один "танец" от нас, который не требует доработок виджета с нашей стороны :)

Если Вы "опытный танцор", то думаю далее будет все понятно :)


<script language="javascript">
function openWidget(forum_id){
   _ues['forum'] = forum_id;
   UE.Dialog.preloaded = false;
   UE.Dialog.socket = null;
   UE.Widget.init(_ues);
   UE.Popin.show();
}
</script>
<a href="#" onclick="openWidget('25716')">open 25716</a>
<br><a href="#" onclick="openWidget('25714')">open 25714</a>

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


Возможно мы добавим метод для реинициализации виджета.

Avatar
Vladimir Mullagaliyev
  • Ответ
  • Отвечен

Здравствуйте Дмитрий,

Я правильно понимаю, что Вы будете вызывать виджеты собственными кнопками с Вашего сайта?

Если да, то вот еще один "танец" от нас, который не требует доработок виджета с нашей стороны :)

Если Вы "опытный танцор", то думаю далее будет все понятно :)


<script language="javascript">
function openWidget(forum_id){
   _ues['forum'] = forum_id;
   UE.Dialog.preloaded = false;
   UE.Dialog.socket = null;
   UE.Widget.init(_ues);
   UE.Popin.show();
}
</script>
<a href="#" onclick="openWidget('25716')">open 25716</a>
<br><a href="#" onclick="openWidget('25714')">open 25714</a>

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


Возможно мы добавим метод для реинициализации виджета.

Avatar
Dmitry Krasnikov

Да, до 

UE.Dialog.preloaded = false;
я добрался, а дальше не полез. Спасибо.

Avatar
Dmitry Krasnikov
Аларм. Этот метод не работает после закрытия окна.
http://xn----8sbiscjiejibfe3bp6h.xn--p1ai/%D0%BA%D0%BE%D0%BD%D1%82%D0%B0%D0%BA%D1%82%D1%8B/
Жму ссылку инициализирующую openWidget - Первый раз срабатывает. когда виджет закрываем и снова жмем ссылку - виджет спрятан пока не начнем крутить. окно скроллом

Подскажите, что нужно вставить в инициализацию чтобы окошко виджета рисовалось на первом плане

Avatar
Vladimir Mullagaliyev
Цитата от Dmitry Krasnikov
Аларм. Этот метод не работает после закрытия окна.
http://xn----8sbiscjiejibfe3bp6h.xn--p1ai/%D0%BA%D0%BE%D0%BD%D1%82%D0%B0%D0%BA%D1%82%D1%8B/
Жму ссылку инициализирующую openWidget - Первый раз срабатывает. когда виджет закрываем и снова жмем ссылку - виджет спрятан пока не начнем крутить. окно скроллом

Подскажите, что нужно вставить в инициализацию чтобы окошко виджета рисовалось на первом плане

Здравствуйте Дмитрий,
В FF работает нормально. Похоже, что баг проявляется именно в Chrome. Почему-то хром не перерисовывает объект. После любого клика (на экране или в консоли разработчика) он перерисовывае и показывает его.
Как вариант, попробуйте в конце сделать виртуальный клик в объект окна. Что-то типа такого,если у вас есть JQuery $("#ue-dlg-content").click();
Возможно это поможет.