Modul nur ausgeben, wenn Inhalt gerendert wird

  • Hallo Forumsgemeinde,


    ein eigentlich simples Anliegen, das aber offenbar nicht ganz einfach zu lösen ist:

    Das Standard-Latest-News-Modul soll auf einer Position nur ausgegeben werden, wenn auch ein Inhalt zu rendern ist. Grund: Das Modul soll, wenn denn eben Inhalt vorhanden ist, möglichst auffallen (mit Hintergrund und Padding), aber wenn kein Beitrag vorhanden ist, soll natürlich nix ausgegeben werden. Klingt simpel. Aber wenn ich mit Background und Padding arbeite, gibts eben immer was aus: Nämlich eben einen farbigen Balken.

    Ich hab mir mal das da zusammengeschnippselt; funktioniert aber nicht:



    Das Modul heisst - man staune - newsticker. Und wenn nix gerendert wird, soll nix ausgegeben werden. Zur Kontrolle hab ich eben das da drin:



    Code
    <div style="background:#fff000;padding:10px">There is no content';



    Danke, wenn sich jemand diesem Anliegen annimmt - und sorry für mein PHPanausentum.


    marscom

  • Das Modul heisst - man staune - newsticker.

    Das musst genauer klar machen. Ein Modul hat einen title und einen name. title ist das, was man im Titelfeld eingibt, name ergibt sich aus dem Erweiterungsnamen. Aus mod_custom wird der name custom.

    Allgemein geht das so

    Da empfiehlt sich dann vielleicht gleich eine Phantasie-Position nur für dieses Modul einzugeben. Weil der Titel oft unzuverlässig ist, wenn man ihn mal ändert.

    Oder mehrere Module an der Phantasie-Position?

  • Und, wenn dich der Wurm "

    Code
    \Joomla\CMS\Helper\ModuleHelper::...

    " nervt, schreibst in der Datei, wo der Code drinnen ist nach dem

    Code
    defined('_JEXEC') or die;

    ein

    Code
    use Joomla\CMS\Helper\ModuleHelper;

    und kannst im eigenen Code abkürzen auf

    Code
    ModuleHelper::...

    ohne Wurm.

  • Hi Later,


    herzlichen Dank für Deine Vorschläge! Hab das mal ausprobiert, aber leider ohne Resultat. Das Problem ist, dass ich hier:

    Code
    if ($output === '') und so weiter ....

    Beim und so weiter eben anstehe. Ich möchte ja, dass das div rund um das Modul nur dann ausgegeben wird, wenn wirklich was im Modul drin ist.

    Ich versuchs mal auf Deiner Basis weiter. Kurz vor dem Nervenzusammenbruch melde ich mich wieder.

    8)

  • Hi marscom,


    wenn ich möchte, dass ein Modul ohne Inhalt nicht angezeigt wird stecke ich es in

    PHP
    <?php if($this->countModules('my-position')) : ?>
    <div class="my-div">
    <jdoc:include type="modules" name="my-position" style="none" />
    </div> 
    <?php endif; ?>

    Das klappt eigentlich immer.

  • Beim und so weiter eben anstehe.

    Na ja. Den Teil hattest du ja schon in deinem eigenen Code ;) Zeilen 5 bis 12. Kannst natürlich auch mit empty($output) arbeiten. Vom Effekt das Selbe.

    wenn ich möchte, dass ein Modul ohne Inhalt nicht angezeigt wird stecke ich es in

    Das Modul ist ja nicht leer, wenn es nur keine Beiträge ausgibt. Das Grundgerüst des Modulstils wird trotzdem generiert, also das äußere Gerüst. Damit ist das count() leider auch WAHR.


    Der "Advanced Module Manager" von RegularLabs hat einen Knopf drinnen "Ausblenden falls leer", der das glaub ich berücksichtigt. Da bin ich aber nicht sicher, ob das hier eine Lösung wäre, weil ja der Wunsch war, eine Alternative auszugeben.


    In Joomla 4 wird es wohl eine weitere Methode geben mit der man über das count() oder ähnlich prüfen kann, ob "inhaltlich" leer. Habe ich aber aus den Augen verloren wie und ob das integriert wurde.

  • Hi jetlag1975,


    schon; aber: Wenn ich das Modul selber mit Background und Padding ausgeben will, gibts eben einen unschönen gepaddeten Balken, auch wenn das Modul selber nicht ausgegeben wird.

    Die Geschichte ist die: Ich habe zunehmend Kunden, die möchten einen Superaktuell-Newsbeitrag platzieren, der superaktuell flashig daherkommen soll. Und das sind Leute, von denen ich nicht verlangen kann, dass sie ein Modul veröffentlichen oder verstecken. Die können grad nur einen Beitrag via Frontend erfassen - oder eben verstecken. Und für solche Fälle brauchts eben das angestrebte Vorgehen

    8)


    Hi Later,


    genau. Ich möchte aber zunehmend auf Fremderweiterungen verzichten, wenn möglich. Den AVMM hatte ich früher ab und an installiert. Hat mir aber viel zu viele Funktionen - und vor allem zerschiesst es die simple Standard-Handhabung der Module. Das ist dann für die normalen Admins etwas zuviel. Ich hab auch schon das MiniFrontpage-Modul eingesetzt, das ich seit Jahren total liebe. Aber... im Hinblick auf J4 möchte ich eben so wenig wie möglich fremdes Zeugs drin. Ich bleib mal dran an Deinem Lösungsansatz. Der Nervenzusammenbruch ist noch nicht eingetreten.

    Einmal editiert, zuletzt von Indigo66 () aus folgendem Grund: Ein Beitrag von marscom mit diesem Beitrag zusammengefügt.

  • Komme also nicht weiter. Da ich das Modul ja nur auf bestimmten Seiten propagieren will, hab ich am Anfang den entsprechenden Standard-Sermont reingehängt. Was mich langsam aber sicher dünkt: Da wird nicht unterschieden, ob Inhalt drin ist oder nicht, sondern einfach ob das Modul propagiert wird. Ich hab das Skript mal so zurechtgestutzt:


    Jetzt gibts mir schön brav die Version "was drin" aus, ob der Beitragstext veröffentlicht ist oder nicht.


    Any hints?