in einen knoten eingebettete views als tab anzeigen
![](http://www.drupalcenter.de/files/noavatar_mini.gif)
am 20.09.2008 - 17:22 Uhr in
Hallo, ich habe schon wieder eine Frage (und finde die Antwort im Froum nicht):
Ich habe in einen Knoten drei Views eingebettet (Kontext-sensitiv, es wird ein Argument übergeben). Das klappt auch gut, allerdings möchte ich, dass die Views als Tabs dargestellt werden (und nicht einfach untereinader weg).....
Tch habe es schon über die in den Views selbst vorhandere Möglichkeit probiert (menu->provide menu as tab) aber es geht nicht. Vermutlich liegt es daran, dass es kein "Chefview" gibt, ich habe zwar versucht, das erste der drei dazu zu machen aber irgendwie denke ich, dass das nicht geht. Kann ich den Knoten (in den die drein egebettet sind) zum "Chef" machen? Gibt es eine andere Möglichkeit?
vielen Dank für jede Hilfe!
mmz
- Anmelden oder Registrieren um Kommentare zu schreiben
theme
am 20.09.2008 - 17:29 Uhr
Moin!
In http://groups.drupal.org/node/8386#comment-47935 wird eine ziemlich einfache Möglichkeit gezeigt. Du könntest dann die URLs der Views vielleicht ein wenig abändern ("node/$arg/view1", "node/$arg/view2", etc.) dann sieht das noch harmonischer aus.
hth,
Stefan
theme #2
am 20.09.2008 - 17:30 Uhr
Und gerade noch gefunden: http://www.drupalcenter.de/node/3252
Stefan
vielen dank!
am 20.09.2008 - 19:06 Uhr
Keine Ahnung, was ich bei der Suche falsch gemacht habe -> danke, danke, danke! Ich werd es mal mit dem Code aus dem 2. Link probieren, von dem hab ich den Eindruck, dass ich ihn verstehe.
Eine Frage hab ich noch *hüstel* wo muss ich den Code denn eingeben? das kapier ich irgendwie noch nicht (ich habe auch keine Ahnung, wo der Views-code "meiner" Views steht, ich "finde" den nirgends?)
Nochmals danke!
mmz
views tab
am 20.09.2008 - 21:22 Uhr
Eine Frage hab ich noch *hüstel* wo muss ich den Code denn eingeben? das kapier ich irgendwie noch nicht (ich habe auch keine Ahnung, wo der Views-code "meiner" Views steht, ich "finde" den nirgends?)
Du kannst Dir ein spezielles Template für den Node-Typen erstellen (node-typ.tpl.php) und das dann dort mit eingeben.
Und den Views-Code bekommst Du mit
<?php
$view_eins_build = views_build_view('embed', views_get_view('1. view'), array(), false, false);
?>
"1. view" ist dann halt der interne Name des Views.
hth,
Stefan
PS: Es gibt auch das Modul Views Tabs, das ist jedoch beta.
hmmmm
am 21.09.2008 - 09:26 Uhr
vielen Dank,
ich habe eine node-seite.tpl.php angelegt und unterhalb von Content den Code eingegeben:
<?php
// $args[0] = arg(1); beim Argument Handling code im entsprechenden View eingeben
$view1 = views_get_view('eins_view');
$view2 = views_get_view('zwei_view');
$view3 = views_get_view('drei_view');
$view1_build =views_build_view('embed', $view1, array(), false, false);
$view2_build =views_build_view('embed', $view2, array(), false, false);
$view3_build =views_build_view('embed', $view3, array(), false, false);
# print $view1_build;
# print $view2_build;
# print $view3_build;
$form = array();
$form['lernziel'] = array(
'#type' => 'tabset',
);
$form['lernziel']['tab1'] = array(
'#type' => 'tabpage',
'#title' => t('Inhalt1'),
'#content' => $view1_build,
);
$form['lernziel']['tab2'] = array(
'#type' => 'tabpage',
'#title' => t('Inhalt2'),
'#content' => $view2_build,
);
$form['lernziel']['tab3'] = array(
'#type' => 'tabpage',
'#title' => t('Inhalt3'),
'#content' => $view3_build,
);
print tabs_render($form);
?>
Der obere Teil (mit der nun auskommentierten Kontrollausgabe) funktioniert gut, aber die Tabsausgabe nicht (es wird dann einfach gar nichts angezeigt, keine Tabs, kein Inhalt. Auch mit views Tabs wird nichts ausgegeben. Ich habe das Javascript-tool-modul runtergeladen und tabs aktiviert...
tut mir leid, wenn ich immer noch Fragen habe :-( ...stehe nur unter ziemlichem Zeitdruck
Danke!
mmz
Tabs
am 21.09.2008 - 09:59 Uhr
Moin!
Ich habe gerade mal nachgeschaut, woher
tabs_render($form)
überhaupt kommt: http://drupal.org/project/tabs. Das scheint es jedoch nur für d6 zugeben.Hast Du mal die Hinweise unter dem 1. Link versucht?
Das wäre dann in Deinem Fall etwa das hier (in der page.tpl.php!):
<?php
if ($node->type == 'seite') {
$tabs .= '<li><a href="pfadZurView1/'. $node->nid .'">View1</a></li>';
$tabs .= '<li><a href="pfadZurView2/'. $node->nid .'">View2</a></li>';
$tabs .= '<li><a href="pfadZurView3/'. $node->nid .'">View3</a></li>';
}
if ($tabs) :
?>
<ul class="tabs primary"><?php print $tabs; ?></ul>
<?php endif; ?>
hth,
Stefan
Tabs
am 21.09.2008 - 10:27 Uhr
Habs gerade mal ausprobiert: das funktioniert bei mir.
Ich habe einen View erstellt mit dem Pfad "node/$arg/test" und dann den Code (leicht an mein Theme angepasst) in die [page.tpl.php] eingefügt.
Und schon habe ich einen neuen Tab wenn ich die Seite anschaue.
<?php
if ($node->type == 'race') {
if ($tabs) {
$tabs_extend = TRUE;
$tabs = str_replace('</ul>', '', $tabs);
}
$tabs .= '<li><a href="'. url('node/'. $node->nid .'/test') .'"><span class="tab">Test</span></a></li>';
}
if ($tabs) :
?>
<?php print $tabs . ($tabs_extend ? '</ul>' : ''); ?>
<?php endif; ?>
Stefan
wieder tabs
am 21.09.2008 - 11:40 Uhr
...sachte taste ich mich daran - dank Deiner Hilfe.
Also habe mir firebug die schon existierenden tabs mal näher angeschaut, ok, jetzt kapiere ich, welche Klassen ich den verpassen muss.
Was ich einfach nicht blicke ist, wo ich den Knotentyp definiere?
(if ($node->type=='xx'){...}
Das ist ja ein "Dreh- und Angelpunkt".....ok, da die Views contextsensitiv in den Knoten eingebettet sind bekommen sie den Pfad "node/$arg/was auch immer 1-3" --stimmt das?
Danke für Deine Geduld!
mmz
Tabs
am 21.09.2008 - 12:59 Uhr
Was ich einfach nicht blicke ist, wo ich den Knotentyp definiere?
(if ($node->type=='xx'){...}
Das ist ja ein "Dreh- und Angelpunkt".....Die nodes, denen Du den zusätzlichen Tab verpassen willst, sind doch von einem bestimmten Typ, oder nicht (und sei es auch ganz simpel "story" oder "page")?
Den Typ fragst Du dann dort ab. Es sei denn, Du möchtest den Tab bei allen node-Typen anzeigen. Dann kannst Du Dir die Abfrage nach dem Typen sparen.
ok, da die Views contextsensitiv in den Knoten eingebettet sind bekommen sie den Pfad "node/$arg/was auch immer 1-3" --stimmt das?
So Du denn die Node-Id mit übergibst und den Pfad wie von mir beschrieben aufbaust: ja.
Stefan
Danke!!
am 21.09.2008 - 13:33 Uhr
Meine Güte Stefan, du bist ein Held! Es geht! danke, danke, danke!!