[Gelöst] Panels: Sichtbarkeit eines Content Panes nur bei "node-Autor=admin" (PHP-Code zur statischen Prüfung?)
am 01.06.2011 - 12:37 Uhr in
Ich arbeite für mehrere Content-Types mit Panels, bzw. speziell der "Beitragsvorlage", um bei der Anzeige verschiedene Content Panes unter dem "node beeing viewed" anordnen zu können. Alles prima soweit... ;-)
Jetzt möchte ich nur auf den Beiträgen, die den Autor "admin" oder "Editor" haben (also eine statische Prüfung auf diese Usernamen!) einen "custom content pane" mit einem einzigen statischen Satz anzeigen. Ich dachte, ich könnte das über die Sichtbarkeitseinstellungen für diesen Inhalt machen... komme da aber nicht weiter, weil die verfügbaren Prüfungen das nicht hergeben. Kann man das über eine "PHP-Code" Sichtbarkeitsregel machen? Und wenn ja, verrät mir jemand den Code-Schnipsel? ;-)
Ein anderer Gedanke war das über Views mit Argumenten zu lösen - aber das ist doch mit Kanonen auf Spatzen geschossen, oder? Schliesslich soll immer nur der gleiche Satz angezeigt werden und immer nur auf die gleichen Autoren geprüft werden. Also nix mit Argumenten und Kontext oder so...
(Konkrete Anwendung:
Ich habe einen Veranstaltungskalender, in dem Nutzer Termine veröffentlichen können - wenn ich jetzt als Nutzer "admin" oder "Editor" selbst Termine anlege, soll bei der Anzeige dieser Termine immer noch ein Satz wie "...ist das Ihre Veranstaltung?... bitte melden...." angezeigt werden.)
- Anmelden oder Registrieren um Kommentare zu schreiben
Simple Lösung über das Template
am 03.06.2011 - 11:10 Uhr
Jetzt ist mir doch noch selbst ein extrem einfacher und naheliegender Weg eingefallen... und zwar über das Content-Template des nodes... Abhängig von der Rolle des Autors (=Editor) wird ein "farbiger Balken" mit einem Text eingeblendet.
Folgenden Schnipsel habe ich am Ende des node-Templates eingebaut:
<div style="text-align:center;background-color:#f3e5e5">
<?php
if (in_array('Editor', $author->roles))
{
?>
Ist das Ihr Veranstaltungstermin? Ergänzen und aktualisieren Sie Ihren Eintrag! <a href="/Inhalt_uebernehmen" title="Inhalt übernehmen">So einfach geht´s</a>
<?php
}
?>
</div>
Und am Anfang des Templates natürlich noch :
<?php
$author = user_load(array('uid' => $node->uid));
?>
Das funktioniert also alles ohne Views, Panels und so...