Page 1 of 1

[Opgelost] Laden van content tag's van alle pagina's

Posted: Mon Apr 12, 2010 9:37 am
by realrock
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

Re: Laden van content tag's van alle pagina's

Posted: Fri Apr 16, 2010 9:12 pm
by Jos
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)

Re: Laden van content tag's van alle pagina's

Posted: Fri Apr 16, 2010 10:23 pm
by Jos
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

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);
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:

Code: Select all

{allcontent}
{eval var=$showallcontent}
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)   8)

Re: Laden van content tag's van alle pagina's

Posted: Mon Apr 19, 2010 10:12 am
by realrock
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?

Re: Laden van content tag's van alle pagina's

Posted: Mon Apr 19, 2010 11:26 am
by Jos
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

Code: Select all

	AND c.active=1
	AND c.show_in_menu=0
Al het andere is nodig om het juiste resultaat te krijgen.

Je zou in plaats van (of aanvullend op) bovenstaande kunnen gebruiken:

Code: Select all

	AND c.content_id IN(2,5,8,29)
De getallen zijn dan de content_id's, die zie je in de url als je de betreffende pagina bewerkt.

Of

Code: Select all

	AND c.content_alias IN('intro','producten','diensten','contact')
Waar je de aliasnamen plaatst van de pagina's die je wil tonen.

Re: Laden van content tag's van alle pagina's

Posted: Thu Apr 22, 2010 9:57 am
by realrock
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.

Code: Select all

AND c.content_alias
Bedankt voor je hulp Jos!, ik zal binnenkort een tutorial maken met de applicatie waar ik mee bezig ben.

Re: [Opgelost] Laden van content tag's van alle pagina's

Posted: Thu Apr 22, 2010 10:20 am
by Jos
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.

Re: [Opgelost] Laden van content tag's van alle pagina's

Posted: Fri May 28, 2010 7:46 am
by jeroenb
Is het hier ook mogelijk dat de id niet de pagina alias wordt,
maar automatisch wordt aan gemaakt als:
    div1
    div2
    div3
    div4