A második felfedett szűrő ne lebegjen balra

Balogh Zoltán képe

A probléma konkrétan a Case Tracker modullal kapcsolatban jött elő számomra, mégis inkább általános Views kérdés, tehát a Case Tracker az ügy szempontjából csak illusztráció.

A /casetracker nézetben 4 felfedett szűrő van, Projekt, Típus, Fontosság, Állapot. Ebből az első szélessége változó, attól függően, hogy milyen projektek vannak benne. Ezek tartalomcímekből jönnnek, és minél hosszabbak, a sor végéről annál több szűrő "új sorba" vándorol az Alkalmaz gombbal egyetemben. Na, ez így ronda, és ezt tervszerűen szeretném szabályozni.

Azt szeretném elérni, hogy a másodiktól kezdve kerüljenek "új sorba" a szűrők, vagyis a Projekt egyedül maradjon, így nyugodtan lehet olyan széles, amilyen csak akar. Ehhez ugye a második, a Típus szűrő div-jében a views-exposed-widget float:left tulajdonságát kellene megszüntetnem. Arra viszont sehogy nem jövök rá, hogy ezt egyedileg, csak erre az egy felfedett szűrőre hogyan lehetne ráerőltetni. Semmilyen kiválasztó nem különíti el az egyes szűrőket, így a float:left felülbírálásával az minden szűrőről ugrik.

A sminkelési infók alatt sem találtam semmi használható .tpl.php-t, mert bár a mezőkkel azt csinálok, amit akarok, de ahogy láttam a szűrőkbe ezen az úton sem tudok belenyúlni. Átmeneti megoldásként, ha elég szélesre veszem a projekt kombóját (ami egyedileg címezhető), akkor "áttolja" a típus szűrőt az új sorba, de ez igen erősen gányolás szagú. Hogyan lehet ezt szebben megvalósítani, ha lehet?

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

views-exposed-form.tpl.php fájlt átmásolod a Views theme könyvtárából a sminkkönyvtárba és frissíted a sminkregisztert. Az első kiíratott elemre ráteszel egy clearblock stílusosztályt.

<?php
$clearfix = ' clearblock';
foreach($widgets as $id => $widget) : ?>
  <div class="views-exposed-widget<?php print $clearfix; ?>">
  <?php unset($clearfix); ?>
  ... 
  </div>
<?php endforeach; ?>
0
0
Balogh Zoltán képe

Köszönom, majdnem jó. Az első widget div-je hiába kapja meg a "clear-block" (kötőjel!) tulajdonságot, nincs semmi hatása. Átírtam úgy, hogy a második kapja meg, de akkor sincs, ugyanúgy lebegnek balra. Ígyhát kénytelen voltam beszúrni egy új div-et, de persze csak akkor, ha a kérdéses nézet jelenik meg, mivel ennek hiányában a webhely összes nézetének felfedett szűrőit elrontanám. Ez lett a jól működő változat:

<?php foreach($widgets as $id => $widget): ?>
  <?php if ($widget->id == 'edit-case-type-id') print "<div class='clear-block'></div>"; ?>
  <div class="views-exposed-widget">
  ...
  </div>
<?php endforeach; ?>

Köszi a kezdő lökést.

0
0
Illyés Edit képe

Akkor viszont a másodikként kiírt widgetre lehet tenni egy .clear osztályt, és arra tenni egy {clear:left;} stílust.

<?php
$counter = 0;
foreach($widgets as $id => $widget) {
  if ($counter == 1) {
    $clearfix = ' clear';
  }
?>
  <div class="views-exposed-widget<?php print $clearfix; ?>">
  ...
  </div>
  <?php $counter++; ?>
<?php } ?>
0
0
Balogh Zoltán képe

<div class="views-exposed-widget"<?php if ($widget->id == 'edit-case-type-id') print " style='clear:left'"; ?>>

Ahol természetesen edit-case-type-id annak a szűrőnek az azonosítója, amelyiket új sorba kell rakni. Kösz a segítséget.

0
0