Cody CMS
Fork me on GitHub

Aangepaste content toevoegen

Het is mogelijk om aangepaste inhoud toe te voegen aan cody, door render functies toe te passen in een controller. In dit voorbeeld maken we een top 5 van meest gelikte classic cars op een willekeurig sociaal netwerk (fictief).

Voorbeeld 1: top 5 lijst van auto’s

Stap 1: een render functie schrijven in uw controller

Een render functie is niets meer dan een functie dat data omzet in een html string en deze teruggeeft.

-- 1

Let op: De render functie kan geen MySQL query’s uitvoeren, dus zorg ervoor dat de query’s uitgevoerd worden in de doRequest() functie en sla daarna de data op in een context variabele.

Stap 2: de view aanpassen

 

Laten we eerst eens kijken naar het originele index.ejs bestand.

 -- 2

Zoals u ziet: de normale inhoud is gerendered door de functie render({not_kind:’C’}). U kan ook enkel de inhoud van de intro renderen door intro:’Y’ te gebruiken.

-- 3

Of u kan kiezen om de intro niet te renderen door de parameter ‘N’ te gebruiken.

-- 4

De render functie ondersteunt de volgende parameters:

  • name
  • not_name
  • not_kind
  • kind
  • intro

 

Laten we eerst eens kijken naar deze parameters vooraleer we verder gaan.

Name & not_name

Hier geeft u de naam in van het gewenste inhoudstype en het zal gerendered worden (name) of alles zal gerendered worden behalve het inhoudstype van uw keuze (not_name).

 

Om dit te illustreren ziet u hieronder een pagina met een tekstblok en een string. Eerst zullen we enkel de tekstblok renderen.

-- 5

Door het gebruik van not_name zullen we enkel een string renderen (een element).

-- 6

Kind & not_kind

Met kind kan u het inhoudstype definiëren dat gerendered moet  worden. Er zijn enkele inhoudstypes:

  • T: Tekst
  • S: String
  • M: Form
  • I: Image
  • F: File

Als u een inhoudstype gebruikt dat niet in deze lijst voorkomt zal de request naar de controller gestuurd worden. De Controller zal dan de render functie uitvoeren.

 

Om dit te illustreren laten we de normale inhoud in een div element renderen en de speciale content in een andere div.

-- 7

Stap 3:  een nieuw sjabloon creëren

 

Om deze inhoud weer te geven zal u een nieuw sjabloon moeten creëren. U kan kiezen om dit in het sjablonen menu te doen of rechtstreeks in de database.

-- 8

Vervolgens voegen we een nieuwe pagina (met de naam start) toe met dit sjabloon.

-- 9

Vervolgens bekijken we de pagina.

-- 10

Oei ! We krijgen de volledige view te zien, en niet de index view met onze custom content. Wat nu?

We moeten eerst nog de controller aanpassen om deze requests te kunnen behandelen. We doen dit in de volgende stap

Stap 4: de controller aanpassen om deze aanvragen te behandelen

 

Onze controller ziet er nog zo uit.

-- 11

De controller zal iedere keer carview.ejs teruggeven, dat is niet wat wij willen. Daarom passen we de doRequest functie aan om deze requests te verwerken.

-- 12

Eerst kijken we als de pagina aangepaste inhoud nodig heeft.

Zo wel dan kunnen we de data uit de inhoud gebruiken om onze request verder te behandelen.

Zo niet dan kunnen we doorgaan met een gewone request.

Vervolgens voegen we onze aangepaste inhoud toe aan de pagina.

Stap 5: de aangepaste inhoud toevoegen aan de pagina.

Voor deze stap is er een klein beetje MySQL code nodig, dus hou je vast hier gaan we.

Eerst en vooral hebben we een template holder nodig voor de nieuwe pagina’s met het nieuwe sjabloon (in dit geval is het id 112).

Insert into content values(0,112,'*',99,'N','C',0,'carlist','5');

Vervolgens voegen we de aangepaste inhoud toe aan onze pagina (in dit geval heeft deze pagina het id 168).

Insert into content values(0,168,’nl’, 99,'N','C',0,'Aantal auto’s’,5);

Insert into content values(0,168,’en’, 99,'N','C',0,’Nr of cars’ ,5);

Stap 6: genieten van de nieuwe pagina

 

Zoals u ziet, onze aangepaste inhoud staat rechts, en onze normale inhoud links.

-- 13

Als we kijken in het dashboard naar deze pagina zien we dat de gebruiker zijn aangepaste inhoud zelf kan aanpassen.

-- 14

Nu weet u hoe u aangepaste inhoud moet toevoegen aan Cody.