Más tartalomtípus befűzése a blogbejegyzések közé időrendbe

aranyozottpatkoszeg képe

Vannak blogbejegyzéseim és ezek megjelennek a főoldalon lapozóval tisztességesen.
De vannak más típusú tartalmaim is (feeds modulal importálva). Ezeknek a címet szeretném időrendben befűzni a címlap blogbejegyzései közé úgy, hogy továbbra is 10 blogbejegyzés maradjon a címlapon (tehát a lapozó ne vegye figyelembe az extra tartalmak számosságát). (Ha pedig ötnél több befűzendő van, akkor .../more linket a végére)

Tehát olyasmi lenne a címlapom:

  • első blogbejegyzés (dec 10)
  • egyéb tartalmak címei dec 1 és dec 10 közöttről
  • második bejegyzés (dec 1)
  • egyéb tartalmak címei nov 3 és nov 1 közöttről
  • harmadik bejegyzés (nov 3)
  • egyéb tartalmak címei ... és nov 2 közöttről
  • ...
  • tizedik bejegyzés
  • [blogbejegyzés lapozó]

Hogyan lehet ezt elérni?

Egyik megoldási irány lehet (??), hogy minden blog node összefoglaló kap egy speciális nézet mezőt. Ez a nézet listázná a blog node publikálási dátuma előtti más típusú tartalmakat. De hogyan tudom megadni, hogy csak az előző blog node publikálása utániakat listázza?

De az is lehet, hogy tök rossz ez az irány. Mit gondoltok?

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

és aztán a views extra handlers modullal elvileg össze tudod őket fűzni sql uniont használva. egyforma számú mezőnek kell szerepelnie a két queryben hogy ez működjön.
https://www.drupal.org/project/views_extra_handlers

0
0

-
clear: both;

aranyozottpatkoszeg képe

Köszönöm a tippet. Kérlek, segíts még egy kicsit, mert valahogy nem áll össze a fejembe, hogy melyik két külön nézetet hogyan szeretném "összefűzni". A Views Extra Handlers ad lehetőséget, hogy "Query Alter" mezőt adjak hozzá a nézetembe. De sajnos még nem értem a logikát, hogy mit mivel akarok összekötni.

0
0
aboros képe

csak a feladatleírásból kiindulva néhány jól irányzott keresés után találtam rá, pár stackoverflow válaszban és a drupal.org fórumaiban hivatkoztak rá a tiédhez hasonló kéréseknél. itt mutatja valaki megoldásként egy ugyanilyen kérdésre: https://www.drupal.org/node/748844#comment-9428961

- az egyik nézeted az lesz, ami a blogbejegyzéseket listázza, ez most is megvan.
- kell egy másik, ami minden mást listáz, de a blogbejegyzéseket nem.
- a blogbejegyzésesbe rakod a views extra handlers -el a query altert és a union résznél megadod a másik nézetet.

szólj ha nagyon nem megy, kipróbálom én is.

0
0

-
clear: both;

aranyozottpatkoszeg képe

Sikerült működésre bírnom a linked alapján. Ez alapján össze tudom fésülni a blogbejegyzéseimet az egyebekkel.

Ami fontos az utókornak, hogy ahhoz hogy az union működjön két dolgora figyelni kell:
- A belefésült extrás nézetből ki kell venni a lapozót, a limitet és az orderby-t, különben az union sql-je hibás lesz. (A fő blogbejegyzés nézetében lehet állítani a lapozót, limitet, sorrendet.)
- Mindkét nézet "select" részében ugyan annyi oszlop kell legyen (és állítólag azonos adat fajta is). Vagyis, ha a minden egyéb nézetéből kiszedtem az "order by publish date"-t, akkor a mezőknél mindenképp be kell rakni a beküldés dátuma mezőt.

Viszont nekem nem erre van szükségem. :( Ugyanis nekem fontos, hogy a lapozó az az alap blog bejegyzések nézet lapozója legyen (pl. 10 blogbejegyzés oldalanként, akárhány köztes egyéb extrával). Sőt ideális esetben az lenne, ha két blobgejegyzés között az extra több mint 5, akkor nem jelenik meg több / "more" felirat jelenik meg.

0
0
aranyozottpatkoszeg képe

A Views PHP segíthet a dologban.

  • Ezzel a megoldással tudok olyan nézetet létrehozni, ami listázza az extra dolgaimat, amik öregebbek az argumentben kapott blobbejegyzésnél.
  • A Views Field View modullal be tudom szúrni ezt a nézetet a blogbejegyzések listájába (tovább adva a node:id argumentet.

De még ott a kérdés, hogy hogyan oldom meg, hogy az extra dolgok nézetében az eggyel régebbi blogbejegyzésnél újabbakat listázza csak.

0
0
aranyozottpatkoszeg képe

Az is eszembe jutott, hogy először is csinálok egy nézetet, ami kilistázza két időpont között az extra dolgokat, amiket szeretnék. A két időpontot szövegkörnyezeti szűrőként kapná meg. A Views Contextual Range Filter nagy jóságnak tűnik. De sajnos a "Tartalom: Létrehozás dátuma" formátuma ÉÉÉÉHHNN (és ezt alakítja át a Contextual Range Filter), ezért csak nap szinten működik a nézetem, nem perc szinten. :(

Ha ez meg lenne, akkor jönne, hogy a blobejegyzések nézetembe beleteszek egy üres mezőt, amit kódból formázok szépre (saját modulból vagy igénytelenül a template.php-ból először.) Ebben a kódban megvan az adott blogbejegyzés beküldésének ideje. Valahogy (?) meg kéne szerezni a "következő" blogbejegyzés dátumát. És akkor már simán rendelerem a nézetet (views_embed_view('', '', )).

0
0
szantog képe

Meg lehet csinálni kb kattintgatás nélkül is, kis rules trükkel.
Egyetlen hátránya, hogy retroactive ez nem fogja feltölteni a nodejaidat + nem kezel olyanokat, hogy pl utólag átírják egy blogbejegyzés keletkezési idejét.

Először inizalizálni kell egy változót, ami a továbbiakban az oldal épp aktuális, utolsó blogbejegyzés nidjét tárolja. Szóval megnézed, hogy mi a mostani utolsó blogbejegyzés, és mehet: drush vset current_last_blog_nid {nid}, vagy egy php blokkban variable_set('current_last_blog_nid', '{nid}');

Kell egy rule, ami frissen tartja a változódat:
Event: After saving new {blogpost} content
Action: Set data value: site:current-last-blog-nid = node:nid

Innentől két lehetőség van, amelyik kényelmesebb: Vagy a feed item nodeon tárolod egy entity_reference mezőben a current_last_blog_nid-et, vagy a blogposton egy korlátlan entity_reference mezőben.

Ha mondjuk az elsőt választjuk, akkor kell egy rule
Event: After saving new {feed_item} content
Action: Set data value: node:field_last_blog_nid = site:current-last-blog-nid

Innentől jöhet egy új nézet, ahol kilistázod a feed_itemeket contextual filterrel a field_last_blog_nid-re szűrve, EVA-val meg bepattintod a nézeted mondjuk a blog_post teaserjébe, és kész is.

0
0

----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.

aboros képe

hogy van a blogjbejegyzés listázó nézeted meg van a másik dolgokat listázó, ami szűr tól-ig dátumra és a blogbejegyzésest a hook_views_pre_render -ben megpiszkálod és két sor közé beszúrod a másik nézetet beállítva a két sor dátumait filternek.

1
0

-
clear: both;

aranyozottpatkoszeg képe

Köszönöm.

  • A frontpage nézetben egy extra mezőt is megjelenítek.
  • Aztán jön a hook_views_pre_render. Itt meg tudom az előző és az aktuális node létrehozásának dátumát. Ez lesz a külső argumentum bemenet az extrákat behúzó nézetemnek.
  • Az említett pre_renderben az extra mező értékét megváltoztatom a views_embed_view() értékére.
  • A megfelelő nézet sminkekben teszem ami kedvemre való

Egy hiba van még: a nézetem külső (!) szűrőként/változóként csak dátum tól-ig formátumot visel el (pl. 2015-06-08--2015-07-01), de timestamp formátumot vagy hozzáadott óra-percet nem, pedig jó lenne. (De ez egy külön kérdés, azt hiszem.)

0
0