Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 28. Oktober 2011 11:04

brandy
Server-Pate
Registriert: 05. Juni 2011
Beiträge: 799
Webseite

[GELÖST] Inhalt von Unterseite auslesen

Hallo!

Wie der Titel sagt, möchte ich den Content einer Unterseite auslesen und in der übergeordneten Seite ausgeben.
Hab jetzt schon ein wenig über parent, has children, get_page_content usw. gelesen aber weiß nicht genau wie ich solches einbaue.
Kann mir da jemand einer weiterhelfen?

Vielen Dank!

Offline

#2 28. Oktober 2011 12:28

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.017
Webseite

Re: [GELÖST] Inhalt von Unterseite auslesen

Hat CGSimpleSmarty nicht eine derartige Funktion?

Offline

#3 28. Oktober 2011 12:29

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.435

Re: [GELÖST] Inhalt von Unterseite auslesen


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#4 28. Oktober 2011 20:03

brandy
Server-Pate
Registriert: 05. Juni 2011
Beiträge: 799
Webseite

Re: [GELÖST] Inhalt von Unterseite auslesen

Ja gut - aber wie lese ich nicht eine bestimmte Seite aus, sondern nur die Untergeordnete?

Vielen Dank!

Offline

#5 28. Oktober 2011 20:46

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.927
Webseite

Re: [GELÖST] Inhalt von Unterseite auslesen

Schau dir mal die Hilfe von CGSimpleSmarty an.

Damit listest du dir die Unterseiten einer bestimten Seite auf:

{$cgsimple->get_children('','',$children)}
{if count($children)}
   {foreach from=$children item='child'}
      {if $child.show_in_menu}
        Untergeordnete Seite:  id = {$child.id} Alias = {$child.alias}

      {/if}
   {/foreach}
{/if}

Mit folgendem Code kannst du den Inhalt auslesen:

{$cgsimple->get_page_content(home)}

Zusammengesetzt:

{$cgsimple->get_children('','',$children)}
{if count($children)}
   {foreach from=$children item='child'}
      {$cgsimple->get_page_content($child.alias)}
   {/foreach}
{/if}

Das ganze ist ungetestet, müsste aber in etwa so funktionieren


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox

Offline

#6 29. Oktober 2011 22:25

nhaack
Server-Pate
Ort: Bonn
Registriert: 12. Dezember 2010
Beiträge: 171
Webseite

Re: [GELÖST] Inhalt von Unterseite auslesen

Content Dump könnte dafür herhalten. Habe gestern eine für 1.10 kompatible Version hochgeladen. In der Hilfe, bzw im Wiki steht was man damit so alles machen kann (http://wiki.cmsmadesimple.org/index.php … ntent_dump). Ich weiß aber offen gestanden nicht, ob cgsimplesmarty das nicht auch schon alles kann.

Offline

#7 29. Oktober 2011 23:19

nicmare
Server-Pate
Registriert: 15. Dezember 2010
Beiträge: 1.314
Webseite

Re: [GELÖST] Inhalt von Unterseite auslesen

content_dump kann einiges mehr wink

Offline

#8 02. November 2011 11:11

brandy
Server-Pate
Registriert: 05. Juni 2011
Beiträge: 799
Webseite

Re: [GELÖST] Inhalt von Unterseite auslesen

Hab jetzt probiert (auch mit Hilfe von Content_Dump) den Smarty Code in eine normale Seite einzubauen. Das funktioniert mal nicht - bekomme immer einen Smarty Error ausgegeben.

Offline

#9 02. November 2011 11:32

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.927
Webseite

Re: [GELÖST] Inhalt von Unterseite auslesen

brandy schrieb:

Hab jetzt probiert (auch mit Hilfe von Content_Dump) den Smarty Code in eine normale Seite einzubauen. Das funktioniert mal nicht - bekomme immer einen Smarty Error ausgegeben.

Wie sieht deine Fehlermeldung und dein Code aus?


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox

Offline

#10 03. November 2011 10:02

brandy
Server-Pate
Registriert: 05. Juni 2011
Beiträge: 799
Webseite

Re: [GELÖST] Inhalt von Unterseite auslesen

Also hier die Fehlermeldung von dem Code vom nockenfell:

string(159) "Smarty error: [in content:content_en line 1]: syntax error: unrecognized tag:
$cgsimple->get_children('','',$children) (Smarty_Compiler.class.php, line 446)" string(117) "Smarty error: [in
content:content_en line 1]: syntax error: unrecognized tag '' (Smarty_Compiler.class.php, line 590)" string(160) "Smarty
error: [in content:content_en line 1]: syntax error: unrecognized tag: $cgsimple->get_page_content($child.alias)
(Smarty_Compiler.class.php, line 446)" string(117) "Smarty error: [in content:content_en line 1]: syntax error:
unrecognized tag '' (Smarty_Compiler.class.php, line 590)" 

Ok mit {content_dump do_smarty="compile"}  komm ich auf keinen grünen Zweig...

Beitrag geändert von brandy (03. November 2011 10:07)

Offline

#11 03. November 2011 11:17

nhaack
Server-Pate
Ort: Bonn
Registriert: 12. Dezember 2010
Beiträge: 171
Webseite

Re: [GELÖST] Inhalt von Unterseite auslesen

Wie sieht der Smarty Code zum Aufruf von Content-Dump aus und wir das Smarty mit dem du die Daten gestaltest und welche Fehler bekommst du angezeigt?

Mit {content_dump do_smarty="compile"} alleine passiert ja auch nicht viel ... wink

Offline

#12 03. November 2011 13:21

nicmare
Server-Pate
Registriert: 15. Dezember 2010
Beiträge: 1.314
Webseite

Re: [GELÖST] Inhalt von Unterseite auslesen

ich fand den einstieg in content_dump recht kompliziert da etwas ungewohnt. und das wiki ist zwar umfangreich aber ist nicht sehr verständlich für unerfahrene user.
aber grundsätzlich kommst du so zum ziel {content_dump start_id=15}. bei der start_id kannst du die content_id von jeder seite benutzen. in dem Fall wir dann der Inhalt von dieser Seite und dessen untergeordneten Seiten geholt.
um da ranzukommen musst du dann {$dump} benutzen. Das ist ein Array. Am schnellsten erzielst du ergebnisse indem du zB den Inhalt so abrufst:
{content_dump start_id=15}
{$dump[0]->content->data}.
Das sollte dir dann den normalen Inhalt von der Seite ausgeben.
Oder
{content_dump start_id=15}
{$dump[0]->content->title} für den Titel.
Nils, bitte korrigiere mich wenn ich mich geirrt habe ^^

Beitrag geändert von nicmare (03. November 2011 13:22)

Offline

#13 03. November 2011 13:25

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.927
Webseite

Re: [GELÖST] Inhalt von Unterseite auslesen

brandy schrieb:

Also hier die Fehlermeldung von dem Code vom nockenfell:

Hast du den Code direkt in TinyMCE eingefügt? Dieses wandelt ein paar Zeichen falsch um... Der von mir geschickte Code funktioniert so zwar noch nicht, ergibt aber auch keine Fehlermeldung wenn er korrekt eingefügt ist. Falls ich heute Abend nochmals Zeit habe, schaue ich es mir nochmals an und teste es selber.


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox

Offline

#14 17. November 2011 23:19

brandy
Server-Pate
Registriert: 05. Juni 2011
Beiträge: 799
Webseite

Re: [GELÖST] Inhalt von Unterseite auslesen

@nockenfell: Vielen Dank, aber nur in den TinyMCE eingefügt bewirkt das bei mir gar nichts... Vielleicht bist du schon zum Testen gekommen?

Vielen Dank!

Offline

#15 17. November 2011 21:32

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.927
Webseite

Re: [GELÖST] Inhalt von Unterseite auslesen

Mit CGSimplySmarty scheint es unter 1.10.1 nicht zu funktionieren. Zumindest liefert mir auch {$cgsimple->has_children('',$has_children)} nichts zurück.


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox

Offline

#16 21. Dezember 2011 10:26

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.927
Webseite

Re: [GELÖST] Inhalt von Unterseite auslesen

nockenfell schrieb:

Mit CGSimplySmarty scheint es unter 1.10.1 nicht zu funktionieren. Zumindest liefert mir auch {$cgsimple->has_children('',$has_children)} nichts zurück.

Der Code in der Hilfe war falsch geschrieben. Hier die korrekte Schreibweise. Damit funktioniert das auslesen der Children:

{$cgsimple->get_children('','','children')}
{if count($children)}
   {foreach from=$children item='child'}
      {$cgsimple->get_page_content($child.alias)}
   {/foreach}
{/if}

[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox

Offline

#17 27. Dezember 2011 13:52

brandy
Server-Pate
Registriert: 05. Juni 2011
Beiträge: 799
Webseite

Re: [GELÖST] Inhalt von Unterseite auslesen

Vielen Dank!

Kann man den Code so erweitern, dass er ausschließlich das 1. Child ausliest - so wie der Code jetzt arbeitet, liest er mir nur einen bestimmten Alias aus...

Offline

#18 27. Dezember 2011 17:21

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.927
Webseite

Re: [GELÖST] Inhalt von Unterseite auslesen

Mit dem von mir geposteten Snipplet wird jeweils der Hauptinhalt {content} aller Children der aktuellen Seite ausgelesen. (nicht von einem bestimmten Alias)

Wenn du nur die erste Unterseite haben willst, kannst du die foreach-Schleife entsprechend anpassen, damit du weisst, welches der erste Durchgang war:

{$cgsimple->get_children('','','children')}
{if count($children)}
   {foreach from=$children item='child' name='child'}
      {if $smarty.foreach.child.first}
         {$cgsimple->get_page_content($child.alias)}
      {/if}
   {/foreach}
{/if}

Damit liest er dir nur den Inhalt der ersten Unterseite aus.


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox

Offline

#19 28. Dezember 2011 13:45

nicmare
Server-Pate
Registriert: 15. Dezember 2010
Beiträge: 1.314
Webseite

Re: [GELÖST] Inhalt von Unterseite auslesen

weiß jetzt nicht wie das array aussieht aber ne foreach schleife brauch man dafür nicht. das müsste doch auch einfacher gehen indem man direkt den ersten eintrag selektiert oder?

{$cgsimple->get_children('','','children')}
{if count($children)}
         {$cgsimple->get_page_content($children[0].alias)}
{/if}

Offline

#20 28. Dezember 2011 14:49

brandy
Server-Pate
Registriert: 05. Juni 2011
Beiträge: 799
Webseite

Re: [GELÖST] Inhalt von Unterseite auslesen

Und wie füg ich den Smarty-Code auf den Seiten ein - bekomm immer nur den von mir eingegebenen Text ausgegeben!

Offline

#21 28. Dezember 2011 15:56

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.927
Webseite

Re: [GELÖST] Inhalt von Unterseite auslesen

brandy schrieb:

Und wie füg ich den Smarty-Code auf den Seiten ein - bekomm immer nur den von mir eingegebenen Text ausgegeben!

Wie fügst du dies genau ein? Bei mir habe ich es direkt im Template getestet. Da funktioniert es prima.


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox

Offline

#22 29. Dezember 2011 15:45

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.017
Webseite

Re: [GELÖST] Inhalt von Unterseite auslesen

brandy schrieb:

Und wie füg ich den Smarty-Code auf den Seiten ein - bekomm immer nur den von mir eingegebenen Text ausgegeben!

Falls es Probleme gibt, den Code in der Quelltext-Ansicht oder mit deaktiviertem WYSIWYG-Editor eingeben und speichern.

Offline

#23 29. Dezember 2011 20:14

brandy
Server-Pate
Registriert: 05. Juni 2011
Beiträge: 799
Webseite

Re: [GELÖST] Inhalt von Unterseite auslesen

Ja im Template wirds schon funktionieren - ich muss es aber ja in einer Seite einbauen. Der Parent soll den Inhalt vom 1. child holen, damit immer das aktuellste Projekt zu sehen ist - aktuell muss es per Hand eingefügt werden.
Wie kann ich den Smarty-Code in den Seiten einfügen?

Offline

#24 29. Dezember 2011 22:36

nicmare
Server-Pate
Registriert: 15. Dezember 2010
Beiträge: 1.314
Webseite

Re: [GELÖST] Inhalt von Unterseite auslesen

mit einem globalen content block ohne wysiwyg

Offline

#25 30. Dezember 2011 23:19

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.927
Webseite

Re: [GELÖST] Inhalt von Unterseite auslesen

Oder mit einem UDT (Erweiterungen->Benutzerdefinierter Tag):

Name des UDT: getFirstChildContent

    $gCms = cmsms();
    $smarty = $gCms->GetSmarty();
    
    if (isset($params['alias']))
        $alias = $params['alias'];
    else
        $alias = $smarty->get_template_vars('page_alias');
    
    if(!$alias) return false;
    
    $hm = cmsms()->GetHierarchyManager();
    $parent = $hm->getNodeByAlias($alias);
    if( !$parent ) { return false; }

    $child_nodes = $parent->getChildren(false,$showall);
    if( !is_array($child_nodes) || count($child_nodes) == 0 ) return false;
  
    $results = array();
    foreach( $child_nodes as $node ) {
        $content = $node->getContent();
        if( !is_object($content) ) continue;

        $row = array('alias'=>$content->Alias(),'id'=>$content->Id(),
         'title'=>$content->Name(),'menutext'=>$content->MenuText(),
         'show_in_menu'=>$content->ShowInMenu(),'type'=>$content->Type());
        $children[] = $row;
    }
    if( !count($children) ) return false;
    
    $alias = $children[0]['alias'];
    
    $contentops = $gCms->GetContentOperations();
        
    if(!isset($params['block']) or $params['block']  == '' ) $block = 'content_en';
    
    $content = $contentops->LoadContentFromAlias($alias);
    if( is_object($content) ) {
        $result = $content->GetPropertyValue($block);
    }

    if (isset($params['assign']) and $params['assign'] != '')
        $smarty->assign(trim($params['assign']),$result);
    else
        echo $result;

Nun musst du nur noch {getFirstChildContent} in deine Seite einfügen, und schon wird der Inhalt der ersten Unterseite angezeigt.


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox

Offline