Rozważ moduł pustynie:
- Strona 1:-
deserts/*
- Strona 2:-
deserts/*/*
- strona3: -
deserts/*/*/*
Dynamiczna treść ...
Mam trzy bloki, a mianowicie a, b i c:
- Blok a powinien być wyświetlany tylko na stronie 1
- Blok b powinien być wyświetlany tylko na stronie 2
- Blok a powinien być wyświetlany tylko na stronie 3
Jak należy to ograniczenie?
desert/*/*/
desert/*/edit
mój blok powinien wyświetlać dla wszystkichdesert/*/*
nie dladesert/*/edit
W takim przypadku to nie działa dla mnie ..*
oznacza symbol wieloznaczny. Więc z prośbą o rozwiązanie, w którym pojawia się blok dladesert/*/*
Oznacza to, że powinien pojawić się nadesert/*/edit
lub, jeśli o to chodzi,desert/*/whatever
.Odpowiedzi:
Użyj modułu kontekstowego . Chociaż ogólnie nie jestem fanem tego modułu, jest to jeden z przypadków, w których jest on przydatny.
Dodaj warunek dla ścieżki. Więc jeśli chcę blok na stronie 1, ale nie na stronie 2 lub 3, zapisałbym ścieżki w ten sposób, po jednej dla każdego bloku:
Przypadek 1 - blok A
Przypadek 2 - blok B
Przypadek 3 - blok C
W tym przypadku ~ oznacza wykluczenie. Następnie dodaj blok do regionu, w którym ma się pojawiać. Możesz także dodać z powrotem w określonych ścieżkach, które w innym przypadku mogłyby zostać wykluczone, i na odwrót.
źródło
Możesz użyć opcji widoczności „Strony, na których ten kod PHP zwraca PRAWDA (tylko dla ekspertów)”. Ale umieszczanie kodu PHP w bazie danych jest, IMHO, złą praktyką. Zamiast tego zastanów się nad użyciem modułu rozszerzonego widoczności bloku lub implementacji
hook_block_list_alter()
takiego jakUwaga: prawdopodobnie istnieje mądrzejszy sposób na wdrożenie reguły widoczności.
źródło
Powinieneś być w stanie uruchomić to za pomocą modułu widoczności bloku reguł . Oto cytat ze strony projektu:
Dzięki temu i zgodnie z powyższym „ jeśli możesz to zrobić za pomocą Reguł, możesz użyć go do kontrolowania widoczności bloku ”, ograniczyłeś swoje pytanie do tego, aby Reguły przechwytywały różne adresy URL odpowiadające Twojej stronie 1, stronie 2 i stronie 3.
źródło