2009-07-24 5 views
1

Ich muss die HTML-Struktur eines Joomla-Moduls ändern. Ich möchte mein benutzerdefiniertes Modul erstellen, in dem ich den Titel unterhalb seines Inhalts anzeigen muss. Dies ist die vorliegende HTML das Standardformat ist (gerundet):Ändern Sie die HTML-Struktur eines benutzerdefinierten Joomla-Moduls

<div class="module_clipon"> 
<div> 
    <div> 
    <div> 
     <h3>Right Module</h3> 
     <p>This is the content</p>     
    </div> 
    </div> 
</div> 
</div> 

ich die oben HTML sein müssen wie:

<div class="module_clipon"> 
    <p>This is the content</p> 
    <h3>This is the title</h3> 
</div> 

Grundsätzlich ist der Titel unterhalb des Moduls Inhalt zu bringen. Wie würde man den HTML-Code eines Moduls in Joomla manipulieren? Ich glaube, es ist möglich mit dem modChrome. Wenn jemand eine einfach zu implementierende Lösung hat, bitte helfen Sie.

Antwort

1

Sie werden in der Tat dies durch benutzerdefinierte Modul Chrom behandeln wollen. Erstellen Sie im Ordner Ihrer Vorlage einen Ordner html, falls noch keiner vorhanden ist. Erstellen Sie in diesem Ordner die Datei modules.php. Dann füllen Sie es mit diesem Code:

<?php 

defined('_JEXEC') or die; 

function modChrome_titleonbottom($module, &$params, &$attribs) 
{ 
    echo '<p>' . $module->content . '</p>'; 
    echo '<h3>' . $module->title . '</h3>'; 
} 

Schließlich gehen Sie zurück zu Ihrer Vorlage dieses Chrom zu Ihrer Modulposition anwenden:

<div class="module_clipon"> 
    <jdoc:include type="modules" name="left" style="titleonbottom"/> 
</div> 

verwenden, was Modulposition Namen, den Sie brauchen in den name Parametern. Beachten Sie, dass der Parameter style mit dem Funktionsnamen modChrome_ übereinstimmt.

Für weitere Informationen: http://docs.joomla.org/What_is_module_chrome%3F http://docs.joomla.org/Applying_custom_module_chrome

+0

Dank jlleblanc, Ihre Antwort ist hilfreich. Aber ich muss andere Module in der gleichen Modulposition mit dem Standard gerundeten Plan (4 divs Verpackung) über und unter ihm haben.Irgendeine Vermutung, wie man das passieren lässt? – Cruising2hell

2

@ Cruising2hell, wenn Sie alternative Modul-Layouts auf der gleichen Position haben wollen haben Sie versucht Modul Suffix params verwenden ?. Wie so ..

<?php 

defined('_JEXEC') or die; 

function modChrome_titleonbottom($module, &$params, &$attribs) 
{ 
    switch($params->get('moduleclass_sfx')) : 
    //My type of module 
    case 'titleonbottom': 
     echo '<p>'. $module->content . '</p>'; 
     echo '<h3>' . $module->title . '</h3>'; 
    break; 
    default: 
    //Normal 
     echo '<h3>' . $module->title . '</h3>'; 
     echo '<p>'. $module->content . '</p>'; 
    break; 
    endswitch; 

} 
+0

Vielen Dank ... das löst, was ich brauche .. Obwohl ich eine andere Frage habe, ist es möglich, eine ähnliche Lösung für Artikel-Komponente zu haben. Wenn ich verschiedene HTML-Layouts für Artikel haben kann, um eine "Portfolio" -Seite in Joomla zu implementieren, um die Projekte anzuzeigen, während ich regelmäßig Artikel auf einer Seite habe. Ich bin mir nicht sicher, bitte schlagen Sie vor, was die beste Lösung ist, um eine Projektseite zu haben, die Projekte auf einfache Weise anzeigt. Es muss Thumbnail, Projektdetails und einige Kundeninformationen enthalten. – Cruising2hell

+0

Wenn Sie mit einem Menü auf die Projektseiten verlinken, gibt es auch eine sfx für Seiten, mit der Sie ungefähr spielen können, wechseln Sie einfach $ this-> params-> get ('pageclass_sfx'); aber stellen Sie sicher, dass Sie das Suffix in Ihrem Menü setzen. Nicht die besten Lösungen! aber lassen Sie es wissen, wenn ich etwas besseres finde! – stone

0

kann ich es nicht ein Problem nennen.

zu Ihrer Haupt-CSS-Datei gehen und diesen Code einfügen:

.module_clipon h3 { 
    position: absolute; 
    margin-top: 100px; 
    } 

/* put a right height value where your h3 module header reach the bottom of the module content */ 
0

ich es ein Problem nicht nennen kann.

zu Ihrem Haupt-CSS-Datei gehen und diesen Code einfügen:

.module_clipon h3 { 
     position: absolute; 
     margin-top: 100px; 
} 

/* Wert richtige Höhe gebracht, wo Ihr h3 Modul-Header der Unterseite des Moduls Inhalt */

:-) erreichen

0

Es ist möglich, die Rückgabe des $ modul-> Inhalts zu modifizieren? Denn wenn das Modul eine Art von Menü ist, machen das ist:

<ul class="nav menu"><li>...</li></ul>

und wenn zum Beispiel muss ich innerhalb von <ul> und löschen die eine class = „list-inline“ setzen NAV- und Menü-Stile des UL-Tags.

Verwandte Themen