Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

Modules binnen een cms integreren in pagina

Pagina: 1
Acties:

  • Sjoerd
  • Registratie: December 2003
  • Niet online
Even de situatie ik heb een cms geschreven om pagina's te editten, users,...
nu ben ik begonnen aan de fotogallerij, dit is in mijn ogen een module.
Vandaar de volgende structuur in de database:

modules:
id (1)
title (photo gallery v1)
description (een simpele foto gallerij met verschillende albums)
active (1)
controllerTitle (photogallery)

Nu is het probleem waar ik tegenaan loop het volgende:
ik wil op elke pagina kunnen zeggen buiten de standaard tekst die aangepast moet kunnen worden moet hierop ook de fotogallerij te zien zijn.

dus een extra tabel aangemaakt in de db:
pagesmodules:
id
pageID
moduleID

Hierdoor kan ik wanneer een pagina wordt opgeroepen kijken welke modules actief zijn voor die pagina, die wil ik vervolgens 1 voor 1 inladen.
Ik heb echter geen idee hoe ik dit dynamisch kan doen?
De gedachte was een beetje als volgt:

$arrayModules = array(); //bevat alle data die de view nodig heeft (de pagina)

voor de fotogallerij zou ik dit moeten doen
$photoGallery = new photoGallery();
$photoGallery -> setAlbum(1);
$photoGallery -> getData(); (waarna ik een array met images en dergelijke krijg voor dat album)
$arrayModules[] = $photoGallery;

Voor een poll zou ik bv moeten doen
$poll = new poll();
$poll -> setID(53); // slechts een voorbeeld natuurlijk
$poll -> getData();
$arrayModules[] = $poll;

vervolgens meegeven aan de pagina
registry::get('template') -> assign('modules', $arrayModules);

Vervolgens zou ik in mijn template alles kunnen overlopen en outputten.

Maar hoe verwerk je dit nu mooi? Moet ik in de for loop waar ik kijk welke modules ik voor de pagina heb een hoop cases gaan doen met dan vervolgens elke keer dit soort code ertussen adhv de module?

Of is er toch een simpelere manier?
Ik hoop dat het verhaal een beetje duidelijk is want ik zie door de bomen het bos niet meer.

Modelbouw - Alles over modelbouw, van RC tot diorama


  • Face_-_LeSS
  • Registratie: September 2004
  • Niet online
Dat is afhankelijk van je CMS model....
Wanneer je template locaties (regio's) aandraagt aan het CMS en wanneer het mogelijk is om per module aan te geven in welke locatie deze weergegeven word dan is het een kwestie van een locatie toevoegen in de template en de fotogalerij-module zo configureren dat deze weergegeven wordt in die locatie.

  • Sjoerd
  • Registratie: December 2003
  • Niet online
Face_-_LeSS schreef op dinsdag 23 september 2008 @ 11:48:
Dat is afhankelijk van je CMS model....
Wanneer je template locaties (regio's) aandraagt aan het CMS en wanneer het mogelijk is om per module aan te geven in welke locatie deze weergegeven word dan is het een kwestie van een locatie toevoegen in de template en de fotogalerij-module zo configureren dat deze weergegeven wordt in die locatie.
Hm regio's dat is op zich wel een goede om toe te voegen aan het model.

maar hoe handel je het af binnen de controller 'pagina' met een hele hoop if's / cases per module waarin je de module 'activeert' settings meegeeft zoals het album, of welke poll?

Modelbouw - Alles over modelbouw, van RC tot diorama


  • Face_-_LeSS
  • Registratie: September 2004
  • Niet online
Je zal inderdaad door alle actieve modules moeten lopen en deze initialiseren op een of andere manier. Maar ik denk dat het iets globaals is en niet controller afhankelijk.

  • Sjoerd
  • Registratie: December 2003
  • Niet online
Face_-_LeSS schreef op dinsdag 23 september 2008 @ 12:21:
Je zal inderdaad door alle actieve modules moeten lopen en deze initialiseren op een of andere manier. Maar ik denk dat het iets globaals is en niet controller afhankelijk.
het probleem met het globaal te doen is dat je zo allemaal moet doen dan, aangezien je niet weet welke modules je wel en niet nodig gaat hebben, dit vreet misschien te veel resources op?

Modelbouw - Alles over modelbouw, van RC tot diorama


  • Face_-_LeSS
  • Registratie: September 2004
  • Niet online
Waarvoor gebruik je het veld "Active" in je modules tabel? Ik neem aan om te bepalen of de module geladen moet worden of niet...

Wat je nog kan doen voordat je een module laad is kijken of de ingestelde regio waarin de module moet verschijnen überhaupt wel bestaat in de template.

//edit
Ik zie dat je modules koppelt aan een pagina op Id maar misschien kan je beter een module koppelen aan een route-path want dan kan je de relevante modules globaal initialiseren. Dat doen de grotere cms'en ook volgens mij (kijk maar eens naar Drupal/Joomla).

[ Voor 33% gewijzigd door Face_-_LeSS op 23-09-2008 14:28 ]

Pagina: 1