Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.
Seiten: 1
#1 28. Mai 2013 17:14
- dentdent
- probiert CMS/ms aus
- Registriert: 25. Februar 2013
- Beiträge: 21
[GELÖST] News-Variablen erst im Head bekannt, im Body nicht
Hallo liebes Forum,
ihr habt mir schon oft aus der Patsche geholfen und so zähle ich wiedermal auf Eure Hilfe, denn:
Im CMS 1.11.6 mit dem mitgelieferten News-Modul 2.12.12 kann man unter Optionen eine Standard-Seite zur Anzeige der News-Details angeben.
Nun benötige ich jedoch im Body-Bereich meines Templates den Namen der News, die ich anzeige (sowie ein oder zwei Details aus den Extra-Feldern).
Jetzt scheitere ich an folgendem:
1) Welche News ich anzeige kenne ich nicht VOR dem Head-Bereich (das Object $entry scheint dort nicht bekannt zu sein).
2) Weise ich im Head-Bereich meiner Variabe einen Wert zu (sogar mit scope="global") kenne ich diese im Body nicht.
3) Dieses Verhalten scheint unabhängig zu sein von der config.php-Einstellung:
$config['process_whole_template']=true;
4) Die Idee, die Variable im Detailsbereich der News global festzulegen, scheitert leider daran, dass diese im Template auch nicht bekannt ist:
{$name_aus_news=$entry->title scope="global" nocache}
Einmal im Code:
{process_pagedata}
{$name_global=$entry->title scope="global" nocache} {* <-- ist immer leer *}
<html>
<head>
<title>
{$entry->title} {* <-- das kennt er *}
</title>
{$name_head=$entry->title scope="global" nocache}
<meta name="description" content="{$name_head}" /> {* <-- das kennt er auch *}
</head>
<body>
{$name_global} {* <-- ist leer *}
{$name_head} {* <-- ist auch leer *}
{$name_aus_news} {* <-- auch das ist leer *}
</body>
</html>
Und meine Frage: Wie kann ich meine Werte aus der News vom Head in Body rüberretten?
Ich danke Euch für Eure Ideen und Mühen.
Mit freundlichen Grüßen
Arthur Dent
Offline
#2 28. Mai 2013 19:12
- czarnowski
- kennt CMS/ms
- Registriert: 18. Oktober 2012
- Beiträge: 457
Re: [GELÖST] News-Variablen erst im Head bekannt, im Body nicht
Wenn man sich die index.php anschaut
[== PHP ==]
//debug_display('display content '.$contentobj->Alias().' '.$page);
debug_buffer('process template top');
$top = $smarty->fetch('tpl_top:'.$contentobj->TemplateId());
debug_buffer('process template body');
$body = $smarty->fetch('tpl_body:'.$contentobj->TemplateId());
debug_buffer('process template head');
$head = $smarty->fetch('tpl_head:'.$contentobj->TemplateId());
Dann ist eines klar - nur nachfolgend verarbeitete Templates können die vom Vorgänger bei Smarty gesetzten Variable kennen.
So wie es ist wäre es meiner Meinung der größte Unsinn.
Also die Reihenfolge umdrehen.
Offline
#3 28. Mai 2013 19:36
- nockenfell
- Moderator
- Ort: Gontenschwil, Schweiz
- Registriert: 09. November 2010
- Beiträge: 2.934
- Webseite
Re: [GELÖST] News-Variablen erst im Head bekannt, im Body nicht
Rufe im Template den Inhalt wie folgt auf:
{process_pagedata}
{content assign='content'}
<html>
<head>
<title>{if isset($pagetitle)}{$pagetitle}{else}{title}{/if}</title>
....
</head>
<body>
{$content}
</body>
</html>
im Newstemplate fügst du folgendes ein:
{assign var="pagetitle" value=$entry->title}
[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog / Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox
Online
#4 30. Mai 2013 02:17
- dentdent
- probiert CMS/ms aus
- Registriert: 25. Februar 2013
- Beiträge: 21
Re: [GELÖST] News-Variablen erst im Head bekannt, im Body nicht
Guten Morgen,
sorry, es hat ein bissl gedauert, Eure Vorschläge einmal auszuprobieren.
Also zum Vorschlag von czarnowski:
Ich habe die Zeilen umgedreht, d.h.:
//debug_display('display content '.$contentobj->Alias().' '.$page);
debug_buffer('process template top');
$top = $smarty->fetch('tpl_top:'.$contentobj->TemplateId());
debug_buffer('process template head');
$head = $smarty->fetch('tpl_head:'.$contentobj->TemplateId());
debug_buffer('process template body');
$body = $smarty->fetch('tpl_body:'.$contentobj->TemplateId());
Das Ergebnis ist eindeutig, dass meine News im Head auch noch nicht bekannt ist. Ich schlußfolgere daraus, dass erst im Body die News mit für das Head bekannt gemacht wird.
=> Die Reihenfolge macht Sinn, sofern Du bestimmte Werte im Head aufgrund des Contents anpassen möchtest (was Du auch in Deinem Post bestätigst).
Dagegen ist die Idee von nockenfell auf den ersten Blick vielversprechender. Ich konnte noch nicht alles anpassen, da ich leider nicht nur eine News im Content anzeige, sondern auch im Template drumherum. Bislang bekomme ich von den News im Template meine Informationen zugeliefert (z.B. die Kategory meiner News ist nicht meine News im Content, sondern die Kategory der letzten(!) News im Template).
Doch scheint mir der Weg derzeit vielversprechend zu sein.
Ergo: Sobald ich eine funktionstüchtige Verison und diese mit meinen vers. News-Kategorien durchgespielt habe und es so funktioniert, teile ich es Euch mit.
Vielen Dank für Eure prompte Hilfe.
Ihr seid wirklich spitze.
Mit freundlichen Grüßen
Arthur Dent
Offline
#5 01. Juni 2013 00:43
- dentdent
- probiert CMS/ms aus
- Registriert: 25. Februar 2013
- Beiträge: 21
Re: [GELÖST] News-Variablen erst im Head bekannt, im Body nicht
So, endlich geschafft.
Der Ansatz von nockenfell - für den ich mich recht herzlich bedanken will - hat gut funktioniert.
Was habe ich getan:
Seiten-Template in dem die News angezeigt wird:
{process_pagedata}
{* content im Vorfeld kompilieren, wegen News und in Variable $content speichern... *}
{content assign='content'}
Weiter unten im <body> ist
durch
zu ersetzen.
Ein GCB (von mir "set_newsdata" getauft) hilft, die benötigten Felder bequem und einfach für alle News zu verwalten:
{$NewsCategory=$entry->category scope="global" nocache}
{$NewsTitle=$entry->title scope="global" nocache}
{$NewsURL=$entry->news_url scope="global" nocache}
{$NewsSummary=$entry->summary scope="global" nocache}
(In diesem Fall nur die Kategory, der Titel, die URL und Zusammenfassungdetails der News.)
Dann braucht in jeder News bei Inhalt nur der GCB aufgerufen zu werden:
{global_content name='set_newsdata'}
{* Hier der Inhalt von der News *}
Damit nur immer eine News detailliert angezeigt werden kann, gibt es keine konkurrierenden Elemente und es können die im GCB festgelegten Vaiablen im Body- und Head-Tag ausgelesen werden.
Der Vorteil daran ist, dass auch die Meta-Description nun auf den Inhalt der News abgestimmt werden kann, dies macht eine Betrachtung vor allem unter SEO-Gesichtspunkten attraktiv.
Ich dachte zwar, ich wäre im Groben mit dem Projekt fertig, doch haben sich auf diese Weise wieder viele nette Optionen (und zu kurze Tage und Nächte) aufgetan.
Daher gilt meinen Dank allen regen Teilnehmern und ich bin mir sicher, dass ich bald schon wieder über eine - aus meinen Augen - Ungereimtheit stolpern werde, die sich letztendlich als Füllhorn neuer Möglichkeiten auftun könnte.
Lieben Dank,
Arthur Dent
Mit freundlichen Grüßen
Arthur Dent
Offline
Seiten: 1