Gibt es eine Möglichkeit, die Blocksichtbarkeit programmgesteuert einzustellen, ohne das PHP-Filtermodul zu verwenden?

11

Durch Aktivieren des PHP-Filter-Kernmoduls kann ich PHP-Code verwenden, um die Sichtbarkeit eines Blocks auf der Blockkonfigurationsseite festzulegen.

Ich möchte das PHP-Filtermodul jedoch nicht für Sicherheitsmaßnahmen aktivieren. Gibt es eine Möglichkeit, dies in einem benutzerdefinierten Modul zu tun ? Ich kann dabei keinen Haken finden. Und ein enger Haken hook_block_view_alterkann nur den Blockinhalt ändern.

Gilzero
quelle

Antworten:

13

Ja. Wenn Sie den Blockinhalt auf false setzen, wird er in der Anzeige ausgeblendet und der Bereich ausgeblendet, wenn keine anderen Blöcke vorhanden sind. Ich würde mir vorstellen, dass Sie ein Setup ähnlich dem folgenden benötigen würden:

$block['content'] = _my_module_custom_block();

...

function _my_module_custom_block(){
    if( HIDE_CONDITION )
        return false;
}
Sam152
quelle
2
würde es nicht immer noch einen Block mit leerem Inhalt zeigen?
Gilzero
1
funktioniert super. Danke.
Gilzero
@ Gilzero, nein, würde es nicht.
WM
1

Das Regelblock-Sichtbarkeitsmodul ist eine weitere verfügbare Alternative, für die der PHP-Filter nicht aktiviert sein muss . Hier ist ein Zitat von seiner Projektseite:

Mit dem Modul Blockblocksichtbarkeit können Regelkomponenten zur Steuerung der Blocksichtbarkeit verwendet werden. Dies bietet Drupal-Administratoren und -Entwicklern extreme Flexibilität bei der Steuerung, wann Blöcke auf ihren Websites angezeigt werden sollen, zusätzlich zu den von Drupal bereitgestellten Standardsichtbarkeitsoptionen.

Die allgemeine Idee ist, dass Sie, wenn Sie dies mit Regeln tun können, damit die Blocksichtbarkeit steuern können, sodass die Möglichkeiten unbegrenzt sind.

Müssen Sie einen Block nur für Benutzer anzeigen, die vor mehr als einem Monat registriert wurden?

Vielleicht haben Sie einen Block, der wochentags nur zwischen 8 und 17 Uhr angezeigt werden muss?

Was ist mit dem Ein- oder Ausblenden eines Blocks basierend auf den aktuellen Wetterbedingungen?

All dies kann mithilfe der Sichtbarkeit des Regelblocks erfolgen.

Darüber hinaus haben Sie gemäß dem obigen Abschnitt " Wenn Sie dies mit Regeln tun können, können Sie damit die Blocksichtbarkeit steuern " die Möglichkeit, Regeln zur Implementierung aller Arten von benutzerdefinierter Logik zur Verfügung zu stellen (siehe Teil "Programmatisch / benutzerdefiniertes Modul") Ihrer Frage).

Eine Illustration zur Verwendung dieses Moduls finden Sie in meiner Antwort auf " So verhindern Sie, dass ein Ansichtsblock für Administratoren wie Benutzer / 1 angezeigt wird ".

Pierre.Vriens
quelle