Ik ben bezig met het maken van een javascript applicatie waarbij ik content van alle pagina's binnen CMSMS zou willen weergegeven op één pagina. Bijvoorbeeld als ik een CMS heb met de pagina's "home", "over ons" en "contact" dan zou ik alle content van deze pagina's op willen halen om deze op één pagina weer te geven.
Weet iemand of daar een oplossing voor bestaat, het gaat enkel om de teksten niet om de layout, dus Iframes komen niet in aanmerking.
Voorbaat dank!,
Peter
[Opgelost] Laden van content tag's van alle pagina's
Moderator: velden
[Opgelost] Laden van content tag's van alle pagina's
Last edited by realrock on Thu Apr 22, 2010 9:57 am, edited 1 time in total.
Re: Laden van content tag's van alle pagina's
Ik denk dat dit goed mogelijk is met een menu template waarin je CGSimpleSmarty aanroept
In de menu template heb je de $node->alias nodig
Bij CGSimpleSmarty kun je aan de hand van die alias met get_page_content de inhoud ophalen.
Tot slot roep je in een pagina of paginasjabloon dat menu met die specifieke menutemplate aan. 8)
In de menu template heb je de $node->alias nodig
Bij CGSimpleSmarty kun je aan de hand van die alias met get_page_content de inhoud ophalen.
Tot slot roep je in een pagina of paginasjabloon dat menu met die specifieke menutemplate aan. 8)
Re: Laden van content tag's van alle pagina's
Voorgaande suggestie vergt wel heel veel queries op de database
Ik vond het wel leuk om wat te stoeien met een UDT om hetzelfde met slechts één query te bereiken. Dat bleek nog wel een heel gedoe, maar volgens mij ben ik eruit gekomen.
Maak een UDT genaamd allcontent
Deze UDT roept alle content op van de pagina's die èn actief zijn èn NIET in het menu worden getoond.
Via één bulkbewerkingsactie kun (moet) je alle pagina's dus eerst uit het menu halen. Dit is nodig omdat je anders in een oneindige loop belandt.
Maak vervolgens een nieuwe pagina aan die wel in het menu getoond wordt. Zet in het content veld:
De eval is nodig om module- en tag-aanroepen te laten werken.
Volgens mij heb je dan wat je wilt (al zit er geen garantie op)
Ik vond het wel leuk om wat te stoeien met een UDT om hetzelfde met slechts één query te bereiken. Dat bleek nog wel een heel gedoe, maar volgens mij ben ik eruit gekomen.
Maak een UDT genaamd allcontent
Code: Select all
global $gCms;
$db =& $gCms->GetDB();
$query = "SELECT
c.content_id,
c.content_name,
c.menu_text,
c.content_alias,
cp.content
FROM
".cms_db_prefix()."content c,
".cms_db_prefix()."content_props cp
WHERE
c.content_id=cp.content_id
AND cp.prop_name='content_en'
AND c.active=1
AND c.show_in_menu=0
ORDER BY
c.hierarchy ASC
";
$str = '';
$result = $db->Execute($query);
if ( $result && $result->RecordCount() > 0 )
{
while ( $row=$result->FetchRow() )
{
$str .= '<div id="page' . $row['content_id'] . '">';
$str .= '<h1>' . $row['content_name'] . '</h1>';
$str .= '<div>' . $row['content'] . '</div>';
$str .= '</div>';
}
}
$smarty->assign('showallcontent',$str);
Via één bulkbewerkingsactie kun (moet) je alle pagina's dus eerst uit het menu halen. Dit is nodig omdat je anders in een oneindige loop belandt.
Maak vervolgens een nieuwe pagina aan die wel in het menu getoond wordt. Zet in het content veld:
Code: Select all
{allcontent}
{eval var=$showallcontent}
Volgens mij heb je dan wat je wilt (al zit er geen garantie op)

Last edited by Jos on Fri Apr 16, 2010 10:27 pm, edited 1 time in total.
Re: Laden van content tag's van alle pagina's
Super bedankt voor het uitpluizen van de juiste code, ik heb het getest en het werkt perfect. Alleen nou moet ik eigenlijk nog iets met de active menu items.. 
Ik begrijp dat het lastig is om alle active items te tonen. Is het misschien mogelijk om in de query te specificeren welke wel active menu items getoond moeten worden?

Ik begrijp dat het lastig is om alle active items te tonen. Is het misschien mogelijk om in de query te specificeren welke wel active menu items getoond moeten worden?
Re: Laden van content tag's van alle pagina's
Ja, alles is mogelijk. Ik weet alleen niet hoe flexibel je het wilt hebben.
Het deel in de query waar je mee kan spelen is
Al het andere is nodig om het juiste resultaat te krijgen.
Je zou in plaats van (of aanvullend op) bovenstaande kunnen gebruiken:
De getallen zijn dan de content_id's, die zie je in de url als je de betreffende pagina bewerkt.
Of
Waar je de aliasnamen plaatst van de pagina's die je wil tonen.
Het deel in de query waar je mee kan spelen is
Code: Select all
AND c.active=1
AND c.show_in_menu=0
Je zou in plaats van (of aanvullend op) bovenstaande kunnen gebruiken:
Code: Select all
AND c.content_id IN(2,5,8,29)
Of
Code: Select all
AND c.content_alias IN('intro','producten','diensten','contact')
Last edited by Jos on Thu Apr 22, 2010 10:21 am, edited 1 time in total.
Re: Laden van content tag's van alle pagina's
Het was even puzzelen want ik kreeg het niet helemaal voor elkaar met die content_id's. Met de aliassen werkte het wel door het gebruik van de onderstaande code.
Bedankt voor je hulp Jos!, ik zal binnenkort een tutorial maken met de applicatie waar ik mee bezig ben.
Code: Select all
AND c.content_alias
Re: [Opgelost] Laden van content tag's van alle pagina's
Leuk! Ik zie dat ik inderdaad met kopieren/plakken iets vergeten ben aan te passen... ik zal het nog even bewerken..
Om het iets dynamischer te maken, zou je qua selectie in plaats van het opgeven van de aliasnamen, ook iets kunnen doen met de extra1 velden. Ik heb het zo even niet bij de hand, maar ik meen me te herinneren dat die in dezelfde tabel/record zijn opgeslagen als content alias, menutext etc.
Om het iets dynamischer te maken, zou je qua selectie in plaats van het opgeven van de aliasnamen, ook iets kunnen doen met de extra1 velden. Ik heb het zo even niet bij de hand, maar ik meen me te herinneren dat die in dezelfde tabel/record zijn opgeslagen als content alias, menutext etc.
Last edited by Jos on Thu Apr 22, 2010 10:24 am, edited 1 time in total.
Re: [Opgelost] Laden van content tag's van alle pagina's
Is het hier ook mogelijk dat de id niet de pagina alias wordt,
maar automatisch wordt aan gemaakt als:
div1
div2
div3
div4
maar automatisch wordt aan gemaakt als:
div1
div2
div3
div4