Views Block Argument übergeben
Eingetragen von joerg-1958 (106)
am 30.09.2009 - 12:51 Uhr in
am 30.09.2009 - 12:51 Uhr in
Hallo zusammen,
ich habe eine View als Block definiert und möchte ein Argument übergeben.
Das Argument soll der letzte Teil der URL der Seite sein, auf den der Bock angezeicht wird.
In der View unter Argument - PHP validate code habe ich folgendes eingetragen:
$view->is_cachable=0;
$path = drupal_get_path_alias($_GET['q']);
$path = explode('/', $path);
if ($path[0] == 'hardware' && $path[1] != '') {
return $path[1];
}
Leider wird das Argument nicht gesetzt.
Hat da irgenjemand eine Lösung?
Danke Jörg
- Anmelden oder Registrieren um Kommentare zu schreiben
Wie sieht die URL der Seite
am 30.09.2009 - 13:29 Uhr
Wie sieht die URL der Seite aus, auf der dieser Block gezeigt wird? Du bist Dir darüber im Klaren, daß Dein Code den 2. Teil aus der URL dieser Seite bringt (also falls die Seite als URL hat hardware/monitore, wird "monitore" übergeben)?
Was passiert, wenn Du das Argument, das Du erwartest, in der Vorschau bei dem Block eingibst?
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Hi! Ich hatte ein ähnliches
am 30.09.2009 - 13:38 Uhr
Hi!
Ich hatte ein ähnliches Problem, ein Block sollte eine View darstellen und dazu ein Argument aus der URL verwenden.
Es gibt verschiedene Möglichkeiten der View das Argument zu übergeben.
1. Innerhalb der View über Standard Argumnente (habe ich leider keine Erfahrung)
2. Das Argument im Block abgreifen und dann an die View übergeben (via views_embed_view).
Beispiel zu 2. (den Code einfach in einen Block einfügen)
<?php
$args = $node->field_company_lable[0][value];
print theme('view', 'company', 3, false, 'block', array($args));?>
<h3 class="title" >
<?php print_r ($node->field_ort[0][value]); ?></h3>
<?php print views_embed_view('company', 'block_1', $args);
?>
Vielleicht nicht die Beste Lösung, aber sie funktioniert!
Grüße,
Ralph
meine URL schaut wie folgt
am 30.09.2009 - 13:41 Uhr
meine URL schaut wie folgt aus:
my_domain/hardware/PDA und ich möchte PDA als Argument verwenden.
Wenn ich in der Vorschau als Argument PDA eingebe, wird die View auch richtig angezeigt
Grüße
Jörg
www.drupalme.de
$argument = arg(1)
am 30.09.2009 - 13:46 Uhr
my_domain/hardware/PDA
<?php
if (arg(0) == 'hardware' && arg(1) != '') {
$argument = arg(1);
}
?>
------------------------
Quiptime Group
Da geht noch was.
Dann sollte das auch so
am 30.09.2009 - 13:49 Uhr
Dann sollte das auch so funktionieren. Hast Du mal alle Caches gelöscht?
@quiptime
Das ertse Argument einer Page ist aber node und nicht hardware. Es muß hier schon der URL-Alias abgefragt werden.
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
so funktionierts! Danke,
am 30.09.2009 - 14:03 Uhr
so funktionierts!
Danke, habe ich zumindest mal eine Lösung.
Ich probiere aber noch den Vorschlag von Werner aus.
www.drupalme.de
Patternmatching in PHP ersparen
am 30.09.2009 - 14:09 Uhr
@quiptime
Das ertse Argument einer Page ist aber node und nicht hardware. Es muß hier schon der URL-Alias abgefragt werden.
Du sollst ja auch nicht stupid das uebernehmen was ich gepostet habe. Ich wollte nur auf die Sache mit der Funktion arg() hinweisen. Damit kann man sich unter Umstaenden viel Patternmatching in PHP ersparen.
------------------------
Quiptime Group
Da geht noch was.
Wuerdest Du uns bitte Deine Loesung verraten?
am 30.09.2009 - 14:11 Uhr
so funktionierts!
Ja und wie genau funktioniert es nun? Wuerdest Du uns bitte Deine Loesung verraten?
------------------------
Quiptime Group
Da geht noch was.
Block View Argument mittel PHP validate code:
am 30.09.2009 - 14:18 Uhr
Hallo Werner,
Die Lösung war der Vorschlag von Ralph.
Leider mit dem Code
if (arg(0) == 'hardware' && arg(1) != '') {
$argument = arg(1);
}
kommt in der View Vorschau die Meldung 'Es wurde keine Abfrage ausgeführt'
Caches sind alle geleert:
Wegen url-alias hatte ich ja
$path = drupal_get_path_alias($_GET['q']);
$path = explode('/', $path);
if ($path[0] == 'hardware' && $path[1] != '') {
return $path[1];
}
geschrieben.
Das ging aber auch nicht :-(
www.drupalme.de