Main site frontend views - probléma

iszabi képe

Sziasztok!

A következő problémára keresek megoldást:

1.egy site főoldalán mindig 15 cikk jelenik meg, 12 tartalom típusból posztolva egyedi mezők tartalmaival (pl.: short article, short description, stylized image thumb, stb.), /nem teaser tartalom jelenik meg/
Jelenleg egy view-val jelenítem meg az adott kategóriákból posztolt tartalmakat időrendi sorrendben (filtered contet type, promoted to fronted, date desc,... ).

2. a probléma: van egy olyan kérés, hogy egy fix kategóriá típusból 3 cikk mindig összegrouppolva jelenjen meg a főoldalon, pl. ha a videó kategóriából feltöltenek 3 cikket, akkor azok egymás alatt jelenjen meg, ne pedig az időközben feltöltött cikkek között keveredve.

Létre lett hozva a views: a main-page-frontend-views -ba format show fields elemei úgy vannak sorrendbe rakva hogy az adott tartalom típus mezői kapcsolódnak a megjelenés sorrendjében (content type name, short article, posted date, image thumb, nid-del read more)

Egy skicc itt érhető el, bejelölve az a rész, amire a megoldást keresem:
http://share.pho.to/3rdE

Ötleteket előre is köszönöm.

Taxonomy upgrade extras: 
Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
Fórum: 
CsatolmányMéret
Kép ikon frontend_views.jpg155.94 KB
aruna képe

belül kell csoportosítani a videókat?

"egy fix kategóriá típusból 3 cikk mindig összegrouppolva jelenjen meg a főoldalon, pl. ha a videó kategóriából feltöltenek 3 cikket, akkor azok egymás alatt jelenjen meg, ne pedig az időközben feltöltött cikkek között keveredve."

Pl. ha az elmúlt 2 évben töltöttek fel összesen 3 cikket a videó kategóriában, ebből a legrégebbit 2 éve és a legfrissebbit a mai napon, akkor a csoportosításban a 2 évvel korábbi videó kategóriában lévő cikk is látszik?

0
0
iszabi képe

A videó tartalomtípusból naponta 3x3 db cikk fog megjelenni biztosan, mivel funny pictures and funny videos content a legolvasottabb a site-on.

A szerkesztők ügyelnek arra, hogy mielőtt kimenne publish-ba az adott típusból tartalom, meglegyen a 3 db új cikk.

Mivel rengeteg időzített cikk van előre létrehozva, ezért is fontos, hogy a video kategóriából megjelenő legfrissebb 3 tartalom együtt jelenjen meg a főoldalon.

A főoldalon mindig 3 óránként jelenik friss cikk, tehát a site olvasói tudni fogják, hogy az adott kategóriában mikor jelenik meg új tartalom. Mivel több videós tartalom lesz posztolva, így a főoldali cikkek között a 3 db LEGFRISSEBB videós cikk megjelnítése (video thumb image, short article & short description) akkora méretben jelenik meg együtt, mint egy más cikk bevezetője egymagában.

0
0

Szabolcs Illes
Netkey HU SK

aruna képe

arra juttottam, hogy ha időzített módon jelenik meg a 3 videó, vagy a szerkesztő egyszerre küldi ki őket, akkor a 3 videó közé soha nem fog "bekeveredni" más tartalomtípusból, így leválogatni sem kell őket.

Emiatt elég időrendben rendezned a legfrissebb tartalmakat, és a 3 videó mindig együtt marad.

Ha kirakod egy mezőben a kategóriát (video), akkor valami ilyen lesz views a kimenete a napi 15 hírrel:

<div class="views-azonosito">
   <div class="views-row">...</div>
   <div class="views-row">...</div>
   <div class="views-row">...video...</div>
   <div class="views-row">...video...</div>
   <div class="views-row">...video...</div>
   <div class="views-row">...</div>
   <div class="views-row">...</div>
   <div class="views-row">...video...</div>
   <div class="views-row">...video...</div>
   <div class="views-row">...video...</div>
   <div class="views-row">...</div>
   <div class="views-row">...</div>
   <div class="views-row">...video...</div>
   <div class="views-row">...video...</div>
   <div class="views-row">...video...</div>
</div>

Tehát a videó tartalomtípusok egymás mellett lesznek, és tartalmazzák a video tag-et, a többi tartalomban viszont nem lesz video tag.
Ha egy ciklussal átpörgeted a sorokat, akkor a video tag-es sorok köré tudsz rakni egy wrapper div-et.
Ha ez sikerül, akkor kb. ilyen lesz a views kimenete:

<div class="views-azonosito">
  <div class="views-row">...</div>
  <div class="views-row">...</div>
  <div class="video-wrapper">
    <div class="views-row">...video...</div>
    <div class="views-row">...video...</div>
    <div class="views-row">...video...</div>
  </div>
  <div class="views-row">...</div>
  <div class="views-row">...</div>
  <div class="video-wrapper">
    <div class="views-row">...video...</div>
    <div class="views-row">...video...</div>
    <div class="views-row">...video...</div>
  </div>
  <div class="views-row">...</div>
  <div class="views-row">...</div>
  <div class="video-wrapper">
    <div class="views-row">...video...</div>
    <div class="views-row">...video...</div>
    <div class="views-row">...video...</div>
  </div>
</div>

Ha ez megvan, akkor css-el szerintem már meg lehet oldalni azt a formázást amit szeretnél, mert a video-wrapper class alatt egyedileg tudod formázni és float-olni az elemeket.

--------------------------------

A legnehezebb rész tulajdonképpen az, hogy hogy rakd a wrapper div-et a video tag-es sorok köré.

http://api.drupal.org/api/views/theme!views-view-unformatted.tpl.php/7

Ha nem formázott listát használsz a views-ban, akkor ebben ^^^ a template-nek a módosításával berakhatod a plusz div-eket. (views source-ra kattints rá)

<?php
$previous_tag = '';
$current_tag = '';
foreach ($rows as $id => $row) {
  // Check if actual row has video tag?
  if (preg_match('/\/tag\/video/', $row) ) {
    $current_tag = 'video';
  } else {
    $current_tag = '';
  }
  // If row has video tag but previous not -> add open wrapper div
  if ($current_tag == 'video' && $previous_tag != 'video') {
    print '<div class="video-wrapper">';
  }  
  // Print row content. Copied from views template.
  ?><div <?php if ($classes_array[$id]) { print 'class="' . $classes_array[$id] .'"';  } ?>>
    <?php print $row; ?>
  </div><?php
  // If row's current tag not video but previous row's was video -> add close wrapper div
  if ($current_tag != 'video' && $previous_tag == 'video') {
    print '</div>';
  }
  // Set $previous_tag for next iteration.
  $previous_tag = $current_tag;
}
// If in last iteration row's tag was video, then wrapper div must be closed.
if ($current_tag == 'video') {
  print '</div>';
}
?>

Nem próbáltam a kódot, biztos kell rajta javítani, hogy menjen. De a logika látszik, remélem érthető.
Elegánsabb views-os megoldás persze jobb lenne, ha van.

0
0
iszabi képe

az adott tartalom típusból három tartalom, így biztosan annyi is jelenik meg egyszerre a főoldalon.

Köszönöm a választ.

Display Suite-tal tudok az adott mezőhöz class-t rendelni, de amit írtál views tempalte kimenetbe is bele lehet rakni a div id-t (úgyis le lesz generálva a views, mivel majd bele kell applikálni reklámokat is...)

A screenshot-on látható, hogy image thumb és a hozzá tartozó short description egymás mellett jelenik meg, és a három elemnek egy dátuma van. Itt is a css-ben lesz a bűvészkedés, hogy egy közös date tartalom jelenjen meg, mert a views ennyi mezővel csak arra a három mezőre nem képes field groupp-olni.

Szóval ez a megoldás lesz erre végleges, mivel a content management mögötti szerkesztők figylenek arra, hogy 3 db tartalom legyen előre időzítve abból a kategóriában, és ezt még ellenőrzi is egy content admin.

Még ezeket a modulokat átnézem: Views Field, Field group és a Field group views.

0
0

Szabolcs Illes
Netkey HU SK