Zwei PHP-Schnipsel verknüpfen [aufgegeben]
am 16.03.2011 - 19:53 Uhr in
Ich habe zwei PHP-Schnipsel, die ich benutze, um Blöcke auf bestimmten Seiten ein- oder auszublenden:
Hiermit blende ich einen Block in den aufgeführten Inhaltstypen aus:
<?php
if ( arg(0) == 'node' && is_numeric(arg(1)) ) {
$node = node_load(arg(1));
}
if ($node->type != 'group' && $node->type != 'events' && $node->type != 'report' && $node->type !='groupsoverview') {
return TRUE;
}
?>Hiermit blende ich einen anderen Block auf Seiten mit einem bestimmten Taxonomiebegriff ein:
<?php
$term_id_to_trigger_show_block = 19;
if ((arg(0) == 'node') && is_numeric(arg(1))) {
$node = node_load(arg(1));
$terms = taxonomy_node_get_terms($node);
foreach($terms as $term) {
if ($term->tid == $term_id_to_trigger_show_block) {
return TRUE;
}
}
}
?>Ich verstehe leider zu wenig von PHP um folgendes zu erreichen:
Wie kann ich den ersten Block zusätzlich auch auf den Seiten mit dem Taxonomiebegriff aus(!)blenden?
D.h. wie kann ich die zweite Abfrage mit der ersten so zusammenfügen, dass TRUE ausgegeben wird, wenn es nicht ein aufgeführter Inhaltstyp und auch nicht eine Seite mit dem Taxonomiebegriff ist.
Bin für jede Hilfe dankbar.
- Anmelden oder Registrieren um Kommentare zu schreiben

z.B. Mit einer Hilfsvariablen
am 16.03.2011 - 21:21 Uhr
$term_id_to_trigger_show_block = 19;
$ausblenden = 0;
if ((arg(0) == 'node') && is_numeric(arg(1))) {
$node = node_load(arg(1));
$terms = taxonomy_node_get_terms($node);
foreach($terms as $term) {
if ($term->tid == $term_id_to_trigger_show_block) {
$ausblenden = 1;
}
}
if ($node->type != 'group' && $node->type != 'events' && $node->type != 'report' && $node->type !='groupsoverview' && $ausblenden ==0) {
return TRUE;
}
foreach($terms as $term) {
if ($term->tid == $term_id_to_trigger_show_block) {
return TRUE;
}
}
}
Falsch es braucht gar kein foreach
am 16.03.2011 - 21:26 Uhr
Die foreach Schlaufe hat mich grad verwirrt, viel einfacher geht es mit der funktion in_array
$term_id_to_trigger_show_block = 19;
$node = node_load(arg(1));
$terms = taxonomy_node_get_terms($node);
if ($node->type != 'group' && $node->type != 'events' && $node->type != 'report' && $node->type !='groupsoverview' && !in_array($term_id_to_trigger_show_block, $terms)) {
return TRUE;
}
Hallo, wenn ich das erste
am 16.03.2011 - 21:57 Uhr
Hallo,
wenn ich das erste Posting richtig verstanden habe, müsste man doch OR verwenden?
OR !in_array($term_id_to_trigger_show_block, $terms)Es kann doch sein, dass $term_id_to_trigger_show_block in einem der nicht ausgeschlossenen Node-Typen vorkommt.
Oder irre ich mich da?
Gruß Matthias
Edit:
Ich habe mich doch geirrt, so wie es tiger geschrieben hat, ist es korrekt. Ich hoffe ich habe keine Verwirrung gestiftet.
Weiss nicht genau, wie deine
am 16.03.2011 - 21:57 Uhr
Weiss nicht genau, wie deine Taxonomien und Inhaltstypen zusammenspielen.
Probier es doch aus. Wenn du or verwendest musst du einfach die andern Bedingenen mit Klammern zusammenfassen.
Weiss nicht genau, wie deine
am 16.03.2011 - 21:57 Uhr
Weiss nicht genau, wie deine Taxonomien und Inhaltstypen zusammenspielen.
Probier es doch aus. Wenn du or verwendest musst du einfach die andern Bedindungen mit Klammern zusammenfassen.
Hallo tiger, ich habs oben
am 16.03.2011 - 21:59 Uhr
Hallo tiger,
ich habs oben noch nacheditiert. Deine Schreibweise ist korrekt.
Ich war da etwas zu vorschnell - sorry.
Schöne Grüße
Matthias
Hallo tiger, habe Deinen Code
am 17.03.2011 - 12:03 Uhr
Hallo tiger,
habe Deinen Code eingegeben. Funktioniert leider nicht. Der Block wird bei den Inhaltstypen ausgeblendet, bleibt aber bei den Seiten mit dem Taxonomiebegriff stehen :-(
Liebe Grüße
peterp
Bei welchem node-type kann
am 17.03.2011 - 12:17 Uhr
Bei welchem node-type kann der Taxonomiebegriff vorkommen?
Welche node-type sollen dann den Block anzeigen, das sind wahrscheinlich weniger als bei denen er ausgeblendet werden soll?
Der Begriff kann auch in
am 17.03.2011 - 12:39 Uhr
Der Begriff kann auch in anderen Inhaltstypen als den aufgeführten vorkommen, z.B. in page.
Der Block soll angezeigt werden bei allen anderen Inhaltstypen außer den aufgeführten; er soll darüber hinaus nicht angezeigt werden bei allen anderen Inhaltstypen, die mit dem Taxonomiebegriff verbunden sind.
Gruß peterp
Noch irgendjemand eine
am 18.03.2011 - 09:43 Uhr
Noch irgendjemand eine Idee?
Ich wäre für jede Hilfe wirklich dankbar.
Gruß peterp