[gelöst] Prüfen ob eine Seite "aktiv" ist
[gelöst] Prüfen ob eine Seite "aktiv" ist
Hallo Leute,
habe bereits im Englischen Forum gepostet, aber keine Hilfe gefunden.
Ist es möglich zu prüfen ob eine Seite aktiviert ist oder nicht?
Hintergrund:
Ich habe drei GCB´s, wovon einer, wir nennen diesen mal "Werbung", nur angezeigt werden soll, wenn auch die Seite "Werbung" aktiv ist. Also aktiv nicht im Sinne von aktiver Menüpunkt.
Gibt es vielleicht noch die Möglichkeit meine Menüs nach dem Menütitel "Werbung" zu durchsuchen und darüber ne Bedingung zu formulieren?
Hilfe wär echt super!
Grüße
habe bereits im Englischen Forum gepostet, aber keine Hilfe gefunden.
Ist es möglich zu prüfen ob eine Seite aktiviert ist oder nicht?
Hintergrund:
Ich habe drei GCB´s, wovon einer, wir nennen diesen mal "Werbung", nur angezeigt werden soll, wenn auch die Seite "Werbung" aktiv ist. Also aktiv nicht im Sinne von aktiver Menüpunkt.
Gibt es vielleicht noch die Möglichkeit meine Menüs nach dem Menütitel "Werbung" zu durchsuchen und darüber ne Bedingung zu formulieren?
Hilfe wär echt super!
Grüße
Last edited by konsument on Wed Mar 17, 2010 2:54 pm, edited 1 time in total.
Re: Prüfen ob eine Seite "aktiv" ist
Warum machst du nicht eine Abfrage auf den Seiten-Alias?
Code: Select all
{if $page_alias == 'werbung'}
- lollipop27
- Forum Members
- Posts: 237
- Joined: Wed Sep 12, 2007 4:09 pm
Re: Prüfen ob eine Seite "aktiv" ist
So wie ich das verstehe, willst du nicht wissen, ob das die aktuelle seite ist, sondern ob sie generell aktiv und nicht "disabled" ist.cyberman wrote: Warum machst du nicht eine Abfrage auf den Seiten-Alias?
Code: Select all
{if $page_alias == 'werbung'}
Wieso lässt du nicht die Sitemap via {menu} raus, schreibst sie in eine Variable und überprüfst ob deine Seite in der Sitemap vorhanden ist...
Ist vielleicht nicht das einfachste, aber müsste funktionieren.
Re: Prüfen ob eine Seite "aktiv" ist
Auch das ist kein Problemlollipop27 wrote: So wie ich das verstehe, willst du nicht wissen, ob das die aktuelle seite ist, sondern ob sie generell aktiv und nicht "disabled" ist.
Code: Select all
{if $content_obj->mActive == '1'}
Re: Prüfen ob eine Seite "aktiv" ist
hmm..cyberman wrote: Auch das ist kein Problem
Code: Select all
{if $content_obj->mActive == '1'}
hab jetzt schon stundenlang herumexperimentiert, aber mir will es einfach nicht gelingen an die deaktivierte Seite zu kommen.
Habe es zum einen im Template direkt versucht:
Code: Select all
{capture assign=active}{menu items="inaktive-seite"}{/capture}
{if $active->mActive == '1'}active{else}not active{/if}
Code: Select all
{if $this->mActive == '1'}active{else}not active{/if}
Wie komme ich an die deaktivierte Seite heran?

Re: Prüfen ob eine Seite "aktiv" ist
{$content_obj} beinhaltet soweit ich weiß nur die Infos der aktuellen Seite. D.h. man kann damit nicht prüfen, ob irgendeine andere Seite die gerade nicht geladen ist aktiv ist oder nicht.
Inaktive Seiten werden ohnehin nicht geladen, daher macht {if $content_obj->mActive == '1'} keinen Sinn, da sobald ich auf das {$content_obj} innerhalb eines Templates zugreifen kann, mActive unmöglich einen anderen Wert haben kann als 1.
Das ergibt ebenfalls keinen Sinn, da Du die komplette Ausgabe des MenuManagers in der Variablen {$active} speicherst. Der MenüManager liefert aber keine Objekte, sondern den HTML Output eines MenuTemplates. Eigentlich müsste es eine fette Fehlermeldung geben, da {$active} kein Object mit der Eigenschaft mActive ist sondern nichts weiter enthält alskonsument wrote:Code: Select all
{capture assign=active}{menu items="inaktive-seite"}{/capture} {if $active->mActive == '1'}active{else}not active{/if}
Code: Select all
<ul>
<li>
<a href="inaktive-seite">menutext</a>
</li>
</ul>
also reinen Text.
Probier mal
Code: Select all
{capture assign=active}{menu items="inaktive-seite"}{/capture}
{$active}
Code: Select all
{capture assign=active}{menu items="inaktive-seite"}{/capture}
{get_template_vars}
Mir scheint Du verwechselst hier gerade Smarty mit PHP. Mit {$this} kann Smarty hier nichts anfangen, da eine solche Variable im MenuTemplate nicht existiert. Wenn dann höchstens mitkonsument wrote:
[...]
und im menu.tpl
Code: Select all
{if $this->mActive == '1'}active{else}not active{/if}
Code: Select all
{foreach from=$nodelist item=$node}
{if $node->mActive}
...
{/if}
{/foreach}
Aber wie Du schon treffend bemerkt hast, liefert der MenuManager an seine Templates eh nur Elemente, die auch wirklich aktiv sind. D.h. mit {$node->active} wirst Du auch keinen Erfolg haben da genau wie beim {$content_obj} dieser Node im Template nur dann existiert, wenn er auch wirklich aktiv ist.
Oder anders: {$node->active} kann ebenfalls unmöglich einen anderen Wert haben als 1.
Mit Hilfe des MenuManagers oder Template Variablen wirst Du mit der Suche nach inaktiven Seiten keinen Erfolg haben, da Template Variablen immer nur dann existieren, wenn eine Seite gerendert wird. Und gerendert werden, wie bereits erläutert, nur aktive Seiten. Es gibt keine Möglichkeit dem MenuManager zu sagen, dass er bitte auch inaktive Seiten anzeigen soll. Denn sonst wäre das Deaktivieren von Seiten ja sinnlos. Denn ein Link zu einer inaktiven Seiten führt stets ins Nirvana. Wozu sich also als MenuManger die Mühe machen und Seiten, die man eh nicht verlinken kann aus der Datenbank auszulesen? Und nichts anderes ist ja die Aufgabe des MenuManagers: Eine Linkliste zu erstellen.
Du wirst um einen UDT oder ein Plugin nicht herumkommen.konsument wrote:
Wie komme ich an die deaktivierte Seite heran? ???
Diesem Script übergibst Du einfach das Seiten-Alias oder die Seiten ID der zu prüfende Seite.
Dann werden die Eigenschaften dieser Seite aus der Datenbank ausgelesen.
Ist die Seite aktiv, liefert das Script den Wert true zurück. Anderenfalls false.
Soviel zu Theorie.
Du könntest aber auch etwas Einfacheres (um nicht zu sagen: weniger Elegantes) probieren. Das Menü aufzurufen und mittels {capture} einer Variablen zuzuweisen ist schonmal kein verkehrter Ansatz. Nur können wir mit der gelieferten Variable nichts anfangen. Allerdings liefert der MenuManager ja das {$nodelist} Objekt mit allen aktiven Seiten (wenn das Menü zusätzlich noch mit dem Parameter showall=true aufgerufen wird, dann liefert der MenuManager auch alle Seiten, die nicht im Menü sichtbar sind - das nur so am Rande). Dieses Objekt ist nach dem Menüaufruf auch im normalen Seitentemplate vorhanden. Jetzt muss man nur noch dieses Objekt durchlaufen und prüfen, ob eine ganz bestimme Seite enthalten ist. Wenn ja, dann zeige den GCB an, wenn nein ... na dann halt nicht.
Wenn Seiten-Alias und Name des GCBs übereinstimmen, dann dürfte das kein Problem sein.
Bsp:
Code: Select all
{capture assign=dummy}{menu show_all="1"}{/capture} {* die Variable dummy brauchen wir nicht weiter, aber jetzt gibt es ein neues $nodelist objekt *}
{if $count > 0}
{foreach from=$nodelist item=node}
{if $node->alias=="werbung"}
{global_content name='werbung'}
{/if}
{/foreach}
{/if}
Um dennoch einen Ausstieg aus der {foreach} Schleife zu ermöglichen, brauchst Du allerdings doch ein kleines Plugin:
http://www.smarty.net/forums/viewtopic. ... ight=break
PS: Ich hab das alles selber noch nicht probiert. Aber es ist jetz ca. 5 Uhr Morgens und ich hatte noch keinen Schlaf, daher überlasse ich das Dir

Last edited by NaN on Wed Mar 17, 2010 4:20 am, edited 1 time in total.
Re: Prüfen ob eine Seite "aktiv" ist
So richtig hab ich eh nicht verstanden, was du mit einer inaktiven Seite willstNaN wrote: {$content_obj} beinhaltet soweit ich weiß nur die Infos der aktuellen Seite. D.h. man kann damit nicht prüfen, ob irgendeine andere Seite die gerade nicht geladen ist aktiv ist oder nicht.
Inaktive Seiten werden ohnehin nicht geladen, daher macht {if $content_obj->mActive == '1'} keinen Sinn, da sobald ich auf das {$content_obj} innerhalb eines Templates zugreifen kann, mActive unmöglich einen anderen Wert haben kann als 1.

http://dev.cmsmadesimple.org/projects/contentdump
http://wiki.cmsmadesimple.org/index.php ... ntent_dump
Re: Prüfen ob eine Seite "aktiv" ist
also ich glaube er meint NICHT den status von der Seite bzw den Button. Sonst ergibt das keinen sinn.
Er möchte doch lediglich einen GCB (Werbung) dann ausgeben, wenn auf der jeweiligen Seite tatsächlich Werbung gewünscht ist. UNd das möglichst automatisiert. Was hat das mit nem deaktivieren Menüpunkt zu tun?
Es sollte also reichen, im Template eine Bedingung einzubauen die prüft, ob (bsp im pageattribut1) nen Wert "Werbung" vorliegt. Wenn ja, dann soll der GCB geladen werden.
oder?
Er möchte doch lediglich einen GCB (Werbung) dann ausgeben, wenn auf der jeweiligen Seite tatsächlich Werbung gewünscht ist. UNd das möglichst automatisiert. Was hat das mit nem deaktivieren Menüpunkt zu tun?
Es sollte also reichen, im Template eine Bedingung einzubauen die prüft, ob (bsp im pageattribut1) nen Wert "Werbung" vorliegt. Wenn ja, dann soll der GCB geladen werden.
oder?
Re: Prüfen ob eine Seite "aktiv" ist
Klapp ganz ausgezeichnet! Bin echt sprachlos! Vielen Dank für eure Mühen. Das ist mehr Support als ich wirklich ertragen kannNaN wrote:Code: Select all
{capture assign=dummy}{menu show_all="1"}{/capture} {* die Variable dummy brauchen wir nicht weiter, aber jetzt gibt es ein neues $nodelist objekt *} {if $count > 0} {foreach from=$nodelist item=node} {if $node->alias=="werbung"} {global_content name='werbung'} {/if} {/foreach} {/if}

Dann erkläre ich es nochmal schnellcyberman wrote: So richtig hab ich eh nicht verstanden, was du mit einer inaktiven Seite willst..

Ich habe eine Seite die heißt "Stundenplan" (das mit der "Werbung" war nur ein Beispiel).
Die Site selbst, hat ca. 1500 Seiten, wovon 10 jeweils 150 Editoren zugewiesen sind. Jeder Editor verwaltet quasi eine 10 Seiten starke "Site" in der Site. Nun ist es so, dass jeder die Seite "Stundenplan" hat, wobei der Eine oder Andere diesen aber nicht benötigt. Da der Stundenplan im Layout allerdings noch über ein GCB für alle im Template angeteasert wird, habe ich nach dieser Lösung gesucht.
Hach, ich bin begeistert! Ich liebe euch

Re: [gelöst] Prüfen ob eine Seite "aktiv" ist
jetzt möchte ich aber noch nen link zu der schulhomepage sehen 

Re: [gelöst] Prüfen ob eine Seite "aktiv" ist
Der ist lieider noch streng geheimnicmare wrote: jetzt möchte ich aber noch nen link zu der schulhomepage sehen![]()

