[gelöst]Blockansicht - Alle Seiten von X/* außer einer nicht
am 29.09.2012 - 18:34 Uhr in
Hallo!
Ich würde gerne einen Block so anzeigen:
Nur die aufgelisteten Seiten: tennis/* AUSSER tennis/sponsoren
Das geht so nicht in den Standard-Einstellungen. Wie kann ich das aber lösen?
Ich möchte nicht unbedingt ein Modul verwenden. (ev. mit Context?)
Kann ich es mit PHP lösen? --> Wenn ja wie lautet der Code dazu?
Danke und liebe Grüße
- Anmelden oder Registrieren um Kommentare zu schreiben

Benenne den Alias um in
am 29.09.2012 - 18:43 Uhr
Benenne den Alias um in zB.
tennissponsorenWeiss natürlich nicht ob das in Deinem konkreten Fall Sinn macht, war nur so ne Idee...
Danke für den Tipp, aber das
am 29.09.2012 - 18:47 Uhr
Danke für den Tipp, aber das möchte ich so nicht. Da es auch meine Breadcrumb beeinflusst.
ok, gerne.nächste
am 29.09.2012 - 18:52 Uhr
ok, gerne.
nächste theoretische Idee:
Hake
Alle Seiten außer den angegebenenan, und schreibe in das Feldtennis/sponsoren+ zB.
hund/*
katze/*
maus/*
...
also alle Aliaspfade welche ausgeschlossen sein sollen, in der Hoffnung es sind nicht zu viele.
Ist "tennis" ein eigener
am 29.09.2012 - 18:54 Uhr
Ist "tennis" ein eigener Inhaltstyp?
Falls ja!
<?phpif (arg(0) == 'node') {
$node = node_load(arg(1));
if ($node->type == 'tennis' && $node->nid != 'NID-von-Sponsoren') {
return true;
}
}
?>
In "NID-von-Sponsoren" muss die NID des Nodes "Sponsoren" eingefügt werden.
Gruß Matthias
Bernsch schrieb Ich möchte
am 29.09.2012 - 19:26 Uhr
Ich möchte nicht unbedingt ein Modul verwenden. (ev. mit Context?)
Danke und liebe Grüße
Nimm Context, das spart dir das Programmieren. Die Bedienung ist recht simpel.
PHP Code
am 30.09.2012 - 09:22 Uhr
@lonit:
Ja, genau sowas in der Art müsste ja gehen. Tennis ist ein term.
Und der kommt in der URL vor --> www.meineseite.com/tennis/*
Hier soll der Block angezeigt werden AUSSER bei dieser Seite --> www.meineseite.com/tennis/sponsoren
Das müsste ja abfragbar sein und TRUE zurückliefern, AUSSER wenn die eine Seite DANN false.
Sichtbarkeit
am 30.09.2012 - 10:27 Uhr
Hallo.
So könnte das funktionieren:
<?php// Get current path (alias if existing).
$path = request_path();
$items = explode('/', $path);
if (count($items) >= 1 && $items[0] == 'tennis') {
if (isset($items[1] && $items[1] != 'sponsoren') {
return FALSE;
}
return TRUE;
}
return FALSE;
?>
Kurze Erklärung:
* Über [api:request_path:7] wird zuerst der Pfad der aktuellen Seite geholt. Dies kann "node/xxx" oder auch ein vergebener Alias sein.
* Der Pfad wird in seien Bestandteile zerlegt und danach dann geprüft, ob der erste Teil dem Text "tennis" entspricht.
* Wenn dem so ist, wird
TRUEzurückgegeben, ausser der 2. Teil des Pfades ist "sponsoren".hth,
Stefan
Codesnippet
am 01.10.2012 - 20:31 Uhr
Danke Stefan, das schaut schon logisch aus... aber leider funzt es so nicht :-(.
Vielleicht habe ich es zu wenig erklärt. Hier nochmal im Detail:
Der Block sollte folgende Sichtbarkeit haben:
NICHT SICHTBAR auf allen meinen Seiten:
Dies sind z.B.
UND NICHT SICHTBAR auf der Seite
SICHTBAR aber auf
kleiner Fehler
am 30.09.2012 - 15:05 Uhr
Ah, sorry.
Die Zeile
if (isset($items[1] && $items[1] != 'sponsoren') {muss lautenif (isset($items[1] && $items[1] == 'sponsoren') {.Also "==" statt "!=".
Damit sollte es dann wie gewünscht funktionieren.
So funktioniert es jetzt
am 01.10.2012 - 20:25 Uhr
Hallo Stefan,
du hast noch eine schließende Klammer vergessen bei dieser Zeile: ;-)
if (isset($items[1]) && $items[1] == 'sponsoren') {
Mit diesem Code funzt es jetzt:
<?php// Get current path (alias if existing).
$path = request_path();
$items = explode('/', $path);
if (count($items) >= 1 && $items[0] == 'tennis') {
if (isset($items[1]) && $items[1] == 'sponsoren') {
return FALSE;
}
return TRUE;
}
return FALSE;
?>
DANKE!
lg, bernsch