Diese Frage ist möglicherweise auch relevant, wenn Sie versuchen, "So verhindern Sie, dass Joomla-Module in divs eingeschlossen werden" zu lösen.
Was ist das PROBLEM?
Wenn Sie ein Modul in Joomla einbinden, wird es wie unten gezeigt in ein div-Tag eingebunden.
<div class="custom">
Module content
</div>
Ich möchte nicht, dass das Modul in irgendetwas eingekapselt ist. Da es Probleme mit dem Seitenlayout verursacht. In einigen Situationen konnte ich es mit CSS-Stil beheben, aber das gilt nicht für alle Situationen.
Mein Setup und was ich erfolglos ausprobiert habe
Das Modul, das ich zu gestalten versuchte, wurde über einen Artikel aufgenommen.
{loadmodule module, title, style}
Mein aktueller Code war {loadmodule mod_custom, mymodule, none}
Ich war mir sicher, dass das oben genannte hätte funktionieren sollen. Der Code, der für das obige Styling verantwortlich ist, war in templates/system/html/modules.php
und es zeigte
/*
* none (output raw module content)
*/
function modChrome_none($module, &$params, &$attribs)
{
echo $module->content;
}
Das hat auch nicht funktioniert! WoopDeeDoo! Ich konnte immer noch sehen, wie das Modul mit class=”custom”
Wie kann ich dieses Problem beheben?
Die Lösung bestand darin, eine Modulüberschreibung von \modules\mod_custom\tmpl\default.php
Zu erstellen.
Der fehlerhafte Code in dieser Datei war
<div class="custom<?php echo $moduleclass_sfx ?>" <?php if ($params->get('backgroundimage')) : ?> style="background-image:url(<?php echo $params->get('backgroundimage');?>)"<?php endif;?> >
<?php echo $module->content;?>
</div>
Ich habe den obigen Code genommen, ihn bearbeitet und unter templates/current-site-template/mod_custom/default.php
Überschrieben. Der neue Code lautete
<?php echo $module->content;?>
Das hat das Problem behoben.
Zusatzinfo
Nach meinem Verständnis würde das Überschreiben die divs von allen Modulen entfernen, die auf meiner Site veröffentlicht werden. Zuerst dachte ich, dass dies unerwünscht ist, weil ich in einigen Situationen immer noch das Styling auf bestimmte Module anwenden möchte, aber dann habe ich den HTML-Code erneut überprüft. So sah der HTML-Code aus vor dem Überschreiben des Moduls und es wurde ein kein Chromstil verwendet
<div class="custom" >
Module content
</div>
So sah das HTML aus vor dem Überschreiben des Moduls und es wurde ein Chrome-Stil von html5 verwendet
<div class="moduletable">
<div class="custom" >
Module content
</div>
</div>
Dies bedeutet, dass ich bei Bedarf immer noch ein benutzerdefiniertes Div und eine benutzerdefinierte Klasse auf bestimmte Module anwenden kann während die Modulüberschreibung verwendet wird. Wenn ich den Chromstil als html5 wählen würde, würde ich bekommen
<div class="moduletable">
Module content
</div>
und wenn ich den override mit einem chrome styling von keins benutzen würde ich nur bekommen
Module Content
Wir hatten das gleiche Problem mit diesem Modul. Es könnte etwas mit der neueren Joomla-Version sein, die wir verwenden, aber wir konnten nicht oooooos Antwort auf die Arbeit bekommen. Es gibt eine leicht neue Verzeichnisstruktur, der Sie folgen müssen (wir verwenden Joomla 3.6.2). Sie müssen Ihre Überschreibungen in ein " html " - Verzeichnis in Ihrer Vorlage einfügen.
https://docs.joomla.org/How_to_override_the_output_from_the_Joomla!_core
PATH_TO_JOOMLA/components/com_content/views/article/tmpl/default.php
to
TEMPLATE_NAME/html/com_content/article/default.php
Hier ist ein weiteres Beispiel mit einem Modul
PATH_TO_JOOMLA/modules/mod_login/tmpl/default.php
to
TEMPLATE_NAME/html/mod_login/default.php
Ich musste eine leere default.php-Vorlage für mod_custom erstellen, die nur enthielt
<?php echo $module->content;?>
und legen Sie es in
/templates/my-templates/html/mod_custom/default.php
Erst dann konnte ich alle zusätzlichen Flusen entfernen, die Joomla um meine Module gewickelt hatte. Es sollte eine Option geben, die nur das HTML-Modul anzeigt, und nicht mehr.
m den "moduletable" Wrapper loszuwerden, erstellen Sie einfach einen Modulstil:
Erstellen Sie im Ordner templates/your_template/html eine Datei mit dem Namen "modules.php":
<?php
function modChrome_BoHivex($module, &$params, &$attribs) {
$module_class_sfx = htmlspecialchars($params->get('moduleclass_sfx'));
?>
<div class="custom<?php echo $moduleclass_sfx; ?>" <?php if ($params->get('backgroundimage')) : ?> style="background-image:url(<?php echo $params->get('backgroundimage'); ?>)"<?php endif; ?> >
<?php echo $module->content; ?>
</div>
<?php
}
Sie können weitere Stile hinzufügen, indem Sie einfach neue Funktionen hinzufügen. Sie können die Ausgabe vollständig anpassen und den Wrapper "moduletable" entfernen.
Sie finden Ihre Stile im Backend Ihres Moduls -> Erweitert -> Modulstil.
Besonderer Hinweis: Sie können die Paginierung von com_content auf ähnliche Weise überschreiben, indem Sie eine pagination.php zum Ordner/html hinzufügen.
m den "benutzerdefinierten" Wrapper zu entfernen, fügen Sie eine Überschreibung zu templates/your_template/html/mod_custom/your_override.php hinzu:
<?php
defined('_JEXEC') or die;
echo $module->content;
Es ist möglich, in der Style-Funktion einfach eine Echo-Ausgabe ohne HTML zu machen und die HTML auch in der Override-Funktion auszugeben.