- Startsida
- Kunskapsbank
- Nyheters bäst före-datum
Nyheters bäst före-datum
Skript och funktioner
Nyheter är ofta en färskvara. I Sitevision går det att avpublicera en artikel när den inte längre är aktuell - men det kanske du inte alltid vill. Här bjuder vi på en lösning där besökaren meddelas när en nyhets bäst före-datum har passerat.
Meddelandet visas automatiskt, till exempel ett halvår efter publiceringsdagen, eller så väljer redaktören själv ett bäst före-datum. Så här kan det se ut när någon besöker en inaktuell nyhet:
Installera på din webbplats
Om du har jobbat med metadata och enklare mallbygge tidigare kan du snabbt installera funktionen på din webbplats:
- Sätt upp ett datum-metadata
Länk till annan webbplats. och ange bestBeforeDate som identifierare
Länk till annan webbplats..
- Lägg till metadatafältet på mallen
Länk till annan webbplats..
- Gå till din nyhets-mall och skapa en anpassad vy
Länk till annan webbplats. där du vill att meddelandet ska visas. Ge den anpassade vyn ett namn, välj Typ JavaScript och klistra in skriptet som du hittar här nedanför.
- När den anpassade vyn är skapad fyller du den med ett lämpligt meddelande: "Nyhetens bäst före-datum har passerat". Sätt gärna lite färg och form på meddelandet så det syns ordentligt.
- Publicera mallen och du är klar!
Nu är det bara att skriva nyheter som vanligt och välja bäst före-datum med hjälp av det metadata du satte upp i steg ett.
Som standard blir nyheten inaktuell efter 180 dagar om inget datum sätts. I skriptet kan du ändra numberOfDaysFresh: 180 till numberOfDaysFresh: 90 eller det antal dagar som passar dig.
Är du nyfiken på hur funktionen används av andra? Ta en titt på Halmstads kommun Länk till annan webbplats..
JavaScript-anpassad vy
var settings = {
numberOfDaysFresh: 180,
metadataNames: {
bestBeforeDate: 'bestBeforeDate',
compareDate: 'publishDate'
}
};
var bestBeforeDate = (function () {
var bestBeforeDate;
var Calendar = java.util.Calendar;
var today = Calendar.getInstance();
var propertyUtil = require('PropertyUtil');
var currentArticle = require('PortletContextUtil').getCurrentPage();
var fallbackDate = propertyUtil.getCalendar(currentArticle, settings.metadataNames.compareDate);
if (fallbackDate) {
fallbackDate.add(Calendar.DATE, settings.numberOfDaysFresh);
}
bestBeforeDate = propertyUtil.getCalendar(currentArticle, settings.metadataNames.bestBeforeDate, fallbackDate);
return { hasPassed: bestBeforeDate && bestBeforeDate < today };
}());
if (bestBeforeDate.hasPassed) {
result = 'true';
}