Több views ajax pager egy oldalon

eMeLA képe

Létrehoztam 2 views page-t. Mindkettőnél be van kapcsolva a Ajax és a Pager használata. A Pager beállítás alatt a Pager element értéke különböző (1 és 2).

Mindkét oldalon külön külön rendesen működik az ajax-os pager.

Ha a két views-t egy oldalra beillesztem views_embed_view()-al, vagyis két pager van az oldalon, akkor csak az első működik oldal újra betöltés nélkül, a második már nem. A második views pager-ére kattintva az egész oldalt újratöltődik.

Kérdésem: valakinek sikerült úgy két views-t egy oldalra tenni, hogy mindkét ajax-os pager működik ? Ha igen hogyan ?

Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
eMeLA képe

Érdekes dolog rátalálni egy problémára, amibe az ember saját maga már belefutott egyszer.... (a gond az, hogy már akkor sem sikerült megoldanom...)

Újra az a problémám, hogy lehet 2 db ajax-os pagert egy lapra feltenni. A dolog annyival bővült, hogy fülek is vannak az lapokon.

A hiba ott van, hogy mindig csak az első pager-nél működik a lapozás.

Ha a második pager-t használom, akkor betölti az új fülek tartalmát, de a takart füleket nem "tünteti el", helyette az első pager-hez tartozó füleknél teszi ezt.

Addig sikerült eljutnom, hogy a lapozás után a nem látható füleket javascript "tünteti" el úgy, hogy a fül class-hoz hozzáad egy ui-tabs-hide class-t.

0
0

...mit tudok: http://web.termuves.hu

eMeLA képe

Sikerült előállítanom egy működőképes 2 pager-es lapot.

Az első Pager ID: 0
A második Pager ID: 1

ha a címsorban ez van: ?q=node&page=1,0
(az első pager a második lapon áll, a második pedig az első lapon)

Akkor működik a második pager, ha az elsőnek van értéke !?
Vagyis az első pager nem állhat az első oldalon, nem lehet 0 az értéke, különben nem működik a második.

0
0

...mit tudok: http://web.termuves.hu

eMeLA képe

Hosszas kísérletezés után sikerült megtalálni a probléma okát.

Az egyes lapozókat beszámozza a rendszer:
tabs-tabset
tabs-tabset-1
tabs-tabset-2
...

A probléma az ajax lekérdezésnél történik, mert a visszaadott kódban "elfelejti" a rendszer, hogy mi az "azonosító", vagyis ha a második pager-t használjuk akkor a tabs-tabset-1 helyett a visszaadott kódban mindenhol tabs-tabset szerepel.

0
0

...mit tudok: http://web.termuves.hu

eMeLA képe

A bug a TABS modul tabs.module fájljában van:

function tabs_pre_render_tabset($element) {
....
$name = $element['#tabset_name'] = form_clean_id(isset($element['#tabset_name']) && $element['#tabset_name'] ? $element['#tabset_name'] : (isset($element['#parents']) && count($element['#parents']) ? $element['#parents'][0] : 'tabset'));

A kód legvégén lévő 'tabset' a gond, ugyanis ezt az értéket adja vissza ajax-os lekérdezés esetén.

Így javítható (a kód nem szép de működik):

function tabs_pre_render_tabset($element) {
....
if ($_GET['view_dom_id']) $tabset = 'tabset-'.$_GET['view_dom_id'];  else $tabset = 'tabset';
 
$name = $element['#tabset_name'] = form_clean_id(isset($element['#tabset_name']) && $element['#tabset_name'] ? $element['#tabset_name'] : (isset($element['#parents']) && count($element['#parents']) ? $element['#parents'][0] : $tabset));
 

Bizonyára lehetne szebb kódot is írni, de én nem vagyok programozó... ;)

0
0

...mit tudok: http://web.termuves.hu