Views: Cyklisk / sekventiell visning av noder istället för random

Events happening in the community are now at Drupal community events on www.drupal.org.
cato's picture

Jag har en vy som plockar fram en slumpad nod. På grund av diverse anledningar skulle jag hellre vilja att vyn plockade fram första noden vid första visningen, nästa nod vid nästa visning och så vidare tills den nått sista noden och då ska den gå tillbaka till första noden. Vet någon av er kloka om detta går att göra och isåfall hur? Har letat moduler och sökt i Views issue-kö men utan någon framgång.

// Christopher

Comments

Vet inte om det skulle

pontus_nilsson's picture

Vet inte om det skulle fungera i ditt case men kanske kan du göra vyn till en slideshow och med startingSlide sätta vilken som ska visas först. En kaka skulle behöva hålla koll på vilken frame som är i tur.

//Pontus Nilsson, Digitalist

That's the way the cookie crumbles... Or not!

cato's picture

Tack för input Pontus, tyvärr är jag tveksam till om detta skulle fungera i praktiken då noden hämtas in av en (extern) rss-shuttle som suger upp innehåll i rss2-format och varesig skickar eller tar emot cookies. Däremot finns inga krav på att lösningen skall ha någon vidare prestanda eller cachning då innehållet aggregeras till deras sajt och inte visas "live" från oss så en drupal-intern lagring av cykel-position skulle ju fungera om det fanns en sån variant.

Det här är en dålig lösning på ett rätt elementärt problem och beror mest på att en väldigt stor aktör kräver att innehållet skall levereras i form av RSS och samtidigt ligger vi med interna krav på att detta skall visas som share-of-voice på antingen 25, 33, 50 eller 100%.

Då slump är just slump så gör detta att "aktören" kan få samma innehåll sjutton gånger i rad och det då blir missvisande om det t.ex. ligger 3 noder i just den rss-slotten och man egentligen vill visa nod-1, nod-2 och till sist nod-3.

Egen modul

kristofferwiklund's picture

Det känns nästan som det vore smidigast att göra en egen modul. Det den gör är att den tar ut vyn och sedan visar en i taget och håller reda på det antingen via en $_SESSION variabel eller en databas variabel. Men det kräver lite kodning för att det ska funka.

Förvisso

cato's picture

En egen modul av det hela är egentligen vad jag försöker undvika (av rena principskäl egentligen). Finns ingen annan lösning så är det kanske så att det måste bli en sån variant.
Frågan är hur komplicerat det skulle vara att göra en views-plugin av detta istället. Måste forska lite :)
Tack för input Kristoffer! (fint namn du har btw :))

Should be fairly easy to do

carlmcdade's picture

Should be fairly easy to do using the template system

As I understand it you want to:

  • use a view to show a single node, not a list: set an argument for the path using the node id
  • save the users viewing of a node: save the last seen node id in a cookie
  • on the next visit in the view template collect the cookie and the node id
  • get an array of node id in the view template by looking in the $view object
  • +1 the argument (or set to the next node id in the array) and redirect the user to the next node
  • set the cookie again as showing that the node has been viewed

Would that work for you?

Nope

cato's picture

That's not going to work since cookies are a no-no. Also this wouldn't scale well at all. Thanks though.

/Chris

Lösningen

cato's picture

Blev att helt ersätta den lösningen som fanns.

Istället för att tillgängliggöra innehållet som RSS2 så kommer det bli en iframe med innehållet i. Fördelningen över de fyra slottarna görs sedan i cacheservern genom en snutt C-kod som i princip kör en slumpning och sen en rewrite på url:en till /1, /2, /3 och /4. Slutresultatet är att vi får en bra fördelning av de olika slottarna samt att vi slipper belasta backend med onödiga frågor. Tyvärr blir vi tvungna att äta en massa bandbredd då vi går ifrån leverantörens cachning och istället kör live mot vår egen cache men hellre det än ojämn fördelning mellan slottarna.

Det var iallafall skoj att skriva koden :D