Neuigkeiten:

moziloCMS verwendet Cookies. Wenn Sie auf unserer Seite weitersurfen, stimmen Sie der Cookie-Nutzung zu Datenschutzerklärung
moziloCMS Layouts
moziloCMS Plugins

Hauptmenü

Inhaltsseite immer in der Sidebar darstellen

Begonnen von azett, 21. März 2009, 22:22:58

« vorheriges - nächstes »

azett

Ziel:
Irgendwo auf der Website, z.B. unter dem Menü, soll es einen Bereich mit einem immer dargestellten Inhalt geben. Dieser Inhalt soll aber nicht fest ins HTML-Template eingebaut werden, sondern aus einer festgelegten Inhaltsseite kommen:



Damit kann der Admin bei Bedarf auch per moziloAdmin Änderungen vornehmen:



Vorgehensweise:
Zunächst wird das HTML-Template um einen Platzhalter erweitert, er soll SIDEBARCONTENT heißen. Er wird später durch den Inhalt der festgelegten Inhaltsseite ersetzt und könnte z.B. unter Menü und Suche stehen: ...

<div id="rightmenu">
{MAINMENU}
</div>

<h1>Suche</h1>
<div class="search">
{SEARCH}
</div>

<!-- HACK: Inhaltsseite in der Sidebar darstellen -->
<div id="sidebarcontent">
{SIDEBARCONTENT}
</div>
<!-- /HACK -->

...
(Das div mit der ID "sidebarcontent" könnte man jetzt per CSS nach Belieben stylen.)

Jetzt muß die index.php so erweitert werden, daß sie den Platzhalter auch ersetzt. Dafür fügen wir der Funktion readTemplate() die kommentierte Zeile ganz am Ende hinzu: <span class="syntaxdefault"></span><span class="syntaxkeyword">...

</span><span class="syntaxdefault">    $HTML </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> preg_replace</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'/{CMSINFO}/'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> getCmsInfo</span><span class="syntaxkeyword">(),</span><span class="syntaxdefault"> $HTML</span><span class="syntaxkeyword">);
</span><span class="syntaxdefault">      
         </span><span class="syntaxcomment">// Kontaktformular
</span><span class="syntaxdefault">    $HTML </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> preg_replace</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'/{CONTACT}/'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> buildContactForm</span><span class="syntaxkeyword">(),</span><span class="syntaxdefault"> $HTML</span><span class="syntaxkeyword">);
</span><span class="syntaxdefault">    
</span><span class="syntaxcomment">//*** HACK: Inhaltsseite in der Sidebar darstellen ***
</span><span class="syntaxdefault">    $HTML </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> preg_replace</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'/{SIDEBARCONTENT}/'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> getSidebarContent</span><span class="syntaxkeyword">(),</span><span class="syntaxdefault"> $HTML</span><span class="syntaxkeyword">);
</span><span class="syntaxcomment">//*** /HACK ***

</span><span class="syntaxkeyword">}</span><span class="syntaxdefault"> </span>


Der Platzhalter wird also durch das ersetzt, was die Funktion getSideBarContent() liefert - diese müssen wir natürlich auch noch erstellen. Sie wird einfach ganz am Ende der index.php (noch vor dem "?>") eingefügt: <span class="syntaxdefault"></span><span class="syntaxcomment">//*** HACK: Inhaltsseite in der Sidebar darstellen ***
</span><span class="syntaxdefault">    function getSidebarContent</span><span class="syntaxkeyword">()</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{
</span><span class="syntaxdefault">        global $syntax</span><span class="syntaxkeyword">;
</span><span class="syntaxdefault">        global $smileys</span><span class="syntaxkeyword">;
</span><span class="syntaxdefault">        global $CAT_REQUEST</span><span class="syntaxkeyword">;
</span><span class="syntaxdefault">        global $PAGE_REQUEST</span><span class="syntaxkeyword">;
</span><span class="syntaxdefault">        global $ACTION_REQUEST</span><span class="syntaxkeyword">;
</span><span class="syntaxdefault">        
        </span><span class="syntaxcomment">// Ursprüngliche Requests (Kategorie, Seite, Action) merken
</span><span class="syntaxdefault">        $originalcatrequest </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $CAT_REQUEST</span><span class="syntaxkeyword">;
</span><span class="syntaxdefault">        $originalpagerequest </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $PAGE_REQUEST</span><span class="syntaxkeyword">;
</span><span class="syntaxdefault">        $originalactionrequest </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $ACTION_REQUEST</span><span class="syntaxkeyword">;
</span><span class="syntaxdefault">        
        </span><span class="syntaxcomment">// Requests für die Inhaltsseite mit dem Sidebar-Content setzen
</span><span class="syntaxdefault">        $CAT_REQUEST </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"10_Willkommen"</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> </span><span class="syntaxcomment">// Kategorie, in der die anzuzeigende Inhaltsseite liegt
</span><span class="syntaxdefault">        $PAGE_REQUEST </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"99_Sidebar"</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> </span><span class="syntaxcomment">// anzuzeigende Inhaltsseite
</span><span class="syntaxdefault">        $ACTION_REQUEST </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">""</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> </span><span class="syntaxcomment">// einfach leeren

</span><span class="syntaxdefault">        </span><span class="syntaxcomment">// Inhaltsseite auslesen und parsen
</span><span class="syntaxdefault">        $pagecontentarray </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> getContent</span><span class="syntaxkeyword">();
</span><span class="syntaxdefault">        $sidebarcontent </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $syntax</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">convertContent</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$pagecontentarray</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">],</span><span class="syntaxdefault"> $CAT_REQUEST</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> true</span><span class="syntaxkeyword">);
</span><span class="syntaxdefault">        </span><span class="syntaxcomment">//Smileys ersetzen
</span><span class="syntaxdefault">        $sidebarcontent </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $smileys</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">replaceEmoticons</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$sidebarcontent</span><span class="syntaxkeyword">);
</span><span class="syntaxdefault">      
        </span><span class="syntaxcomment">// Für die weitere Abarbeitung der index.php alle Requests wieder auf gemerkte Ursprungswerte zurücksetzen
</span><span class="syntaxdefault">        $CAT_REQUEST </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $originalcatrequest</span><span class="syntaxkeyword">;
</span><span class="syntaxdefault">        $PAGE_REQUEST </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $originalpagerequest</span><span class="syntaxkeyword">;
</span><span class="syntaxdefault">        $ACTION_REQUEST </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $originalactionrequest</span><span class="syntaxkeyword">;

</span><span class="syntaxdefault">        </span><span class="syntaxcomment">// Den Inhalt der Sidebar-Inhaltsseite zurückgeben
</span><span class="syntaxdefault">        return $sidebarcontent</span><span class="syntaxkeyword">;
</span><span class="syntaxdefault">    </span><span class="syntaxkeyword">}
</span><span class="syntaxcomment">//*** /HACK ***     </span><span class="syntaxdefault"></span>

Fertig! Jetzt muß nur noch im moziloAdmin die Inhaltsseite angelegt werden, in unserem Fall "Sidebar" auf Position 99 der Kategorie "Willkommen".

Getestet unter:
moziloCMS 1.11.x

markus76

#1
Ich hätte dazu eine Vereinfachung mit nettem Nebeneffekt ;)


    
//*** HACK: Inhaltsseite in der Sidebar darstellen ***
        function getSidebarContent() {
        global $PAGE_REQUEST;
                
        
// Requests für die Inhaltsseite mit dem Sidebar-Content setzen
        $PAGE_REQUEST = "99_Sidebar"; // anzuzeigende Inhaltsseite

        // Inhaltsseite auslesen und parsen
        $pagecontentarray = getContent();
        $sidebarcontent = $pagecontentarray[0];

        // Den Inhalt der Sidebar-Inhaltsseite zurückgeben
        return $sidebarcontent;
        }
       //*** /HACK ***  
 

Wenn man diesen Code ans Ende der Index.php stellt, dann ist er kürzer.

Als netter Nebeneffekt, kann nun auch in jeder Kategorie eine Sidebar erstellt werden  ;)

Nachtrag: Dieser Hack benutzt keine CMS-Syntax. Um die Funktionalität einzubauen müsste der Hack folgendermassen aussehen:


        
//*** HACK: Inhaltsseite in der Sidebar darstellen ***
        
function getSidebarContent() {
        global 
$syntax;
        global 
$smileys;
        global 
$PAGE_REQUEST;
                
        
// Requests für die Inhaltsseite mit dem Sidebar-Content setzen
        
$PAGE_REQUEST "99_Sidebar"// anzuzeigende Inhaltsseite

        // Inhaltsseite auslesen und parsen
        
$pagecontentarray getContent();
        
$sidebarcontent $syntax->convertContent($pagecontentarray[0], $PAGE_REQUESTtrue);
        
//Smileys ersetzen
        
$sidebarcontent $smileys->replaceEmoticons($sidebarcontent);
        
// Den Inhalt der Sidebar-Inhaltsseite zurückgeben
        
return $sidebarcontent;
        }
       
//*** /HACK ***
 
Für Supportanfragen bitte grundsätzlich einen Link beifügen, dass erspart sehr viel "orakeln" und führt schneller zum Ziel \";)\"

bexed

#2
Mh,

die index.php sieht in der Version 1.12.beta4 ganz anders aus?

hausl78

#3
Hallo!

Richtig, das hier bezieht sich noch auf die alte 1.11.

Für 1.12 gibt es für solche Zwecke Plugins - siehe hier:

hier: http://www.mozilo.de/pluginarchiv/detai ... mage_id=10
und hier:
http://www.mozilo.de/pluginarchiv/detai ... mage_id=11
und hier:
http://www.mozilo.de/pluginarchiv/detai ... mage_id=46

LG
Jürgen

djr

#4
Syntax funktioniert auch in der template.html!
Inhaltsseite immer in der Sidebar darstellen:
<div id="sidebar">
[include|Kategorie:Inhaltsseite]
</div>
Achtung:
  • Inhaltsseite wird immer angezeigt, egal ob als "normal", "versteckt" oder "Entwurf" (=Bug?) gespeichert!
  • wir die Kategorie oder Inhaltsseite umbenannt, muss die template.html angepasst werden ("incule" in der Inhaltsseite fixt sich automatische, nicht so in der template.html)
Vorteil gegenüber dem SidebarPage-Plugin:
  • kann mehrfach eingesetzt werden
getestet: 1.12.beta4 ("Amalia")