it-swarm.com.de

Gibt es eine Möglichkeit, die Blocksichtbarkeit programmgesteuert festzulegen, ohne das Filtermodul PHP Filter) zu verwenden?

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

Aber ich möchte das Filtermodul PHP für Sicherheitsmaßnahmen nicht aktivieren. Also gibt es eine Möglichkeit, dies im benutzerdefinierten Modul zu tun? Ich kann kein finden Haken dabei. Und ein enger Haken hook_block_view_alter kann nur den Blockinhalt ändern.

11
gilzero

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;
}
13
Sam152

Das Modul Sichtbarkeit von Regelblöcken ist eine weitere verfügbare Alternative ... für die der Filter PHP to) nicht erforderlich ist aktiviert sein. Hier ist ein Zitat von seiner Projektseite:

Mit dem Modul Blockblocksichtbarkeit können Regeln Komponenten zur Steuerung der Blocksichtbarkeit verwendet werden. Dies bietet Drupal Administratoren und Entwicklern eine 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 steht gemäß " Wenn Sie dies mit Regeln tun können, können Sie damit die Blocksichtbarkeit steuern" oben die Leistung von Regeln zur Implementierung zur Verfügung alle Arten von benutzerdefinierter Logik (vgl. den 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? ".

1
Pierre.Vriens