Spalten in Views ein-/ausblenden
am 07.10.2009 - 09:48 Uhr in
Moin,
ich gebe verschiedene CCK-Felder über eine View in Tabellenform aus. Nun möchte ich gerne ein Formular über der View anbieten um einige Spalten ein- bzw. auszublenden, da die View sehr viele Spalten umfasst. Stelle mir das Formular so vor, das für jede Spalte eine Checkbox vorhanden ist.
Habe schon einiges ausprobiert, allerdings weiß ich nicht, wie die View vor der Darstellung in der Spaltenanzahl beschränkt werden kann. Eine Recherche im Inet brachte mich bisher auch nicht weiter.
Wäre sehr dankbar wenn mir ein erfahrerener Drupalnutzer auf die Sprünge helfen kann. Ich selbst benutze Drupal seit ein paar Wochen, habe allerdings einige Erfahrungen in SQL und PHP.
Mit freundlichen Grüßen
Michael Wiesing
- Anmelden oder Registrieren um Kommentare zu schreiben
Über JavaScript oder ein Modul.
am 11.10.2009 - 16:06 Uhr
Du hast mindestens zwei Möglichkeiten:
--
Möglichkeit ohne Javascript
am 11.10.2009 - 15:46 Uhr
Vielen Dank für die schnelle Antwort!
Mir wäre allerdings eine Lösung ohne Javascript lieber, da ich kaum Erfahrungen mit Javascript habe. Des Weiteren benutze ich das Views Excel Export Modul um die View als Exceldatei anzubieten, dieser wäre ja dann von dem Javascript ausgenommen. Ist es möglich ein Modul zu schreiben, in dem man die View per PHP anpassen kann?
Michael Wiesing schrieb Ist
am 11.10.2009 - 16:21 Uhr
Ist es möglich ein Modul zu schreiben, in dem man die View per PHP anpassen kann?
Ich habe meinen obigen Beitrag etwas überarbeitet um deutlicher zu machen, daß es dort um zwei unterschiedliche Vorschläge geht :-)
Views kannst du mit
views_get_view
laden.views_embed_view
zeigt dir, wie man einen view ausgeben kann. Außerdem ist bestimmt das Views 2 API Manual interessant.--
Tabelle ist vermutlich eine eierlegende Wollmilchsau ?
am 11.10.2009 - 16:16 Uhr
Deine View-Ansicht mit der Tabelle ist vermutlich so etwas wie eine eierlegende Wollmilchsau. Du hast moeglichst viel in die Tabelle gepresst.
Alternativ kannst Du die View-Ansicht auch trennen und die beiden View-Ansichten mit jeweils einer kleineren Tabelle gegenseitig verlinken.
------------------------
Quiptime Group
Da geht noch was.
Wie kann man denn mit views
am 11.10.2009 - 17:32 Uhr
Wie kann man denn mit views die Suchergebnisse unten darstellen? Ist es außerdem möglich, dass wenn man in der Auswahlliste etwas auswählt, dass dann eine Ergebnisliste erscheint, sodass diese letztendlich durch draufklicken zu den Inhalten führt die unten aufgelistet sind?
So sieht das bei mir jetzt aus: http://www.einkaufsmonitor.net/?q=e-nummernverzeichnis
Ich stelle es mir ungefähr so vor
am 12.10.2009 - 10:55 Uhr
Ich stelle es mir ungefähr so vor:
<?php
/**
* Callback bekannt machen.
*/
function example_menu()
{
return array(
'e-nummernverzeichnis' => array(
'title' => 'E-Nummernverzeichnis',
'page callback' => 'example_page',
'access arguments' => array('access content'),
'type' => MENU_NORMAL_ITEM,
),
);
}
/**
* Callback
*/
function example_page($spalten = 0) {
if ($spalten == 0) {
// Wenn keine Spalten angegeben wurden, alle Spalten anzeigen.
$spalten = 2047;
}
// Formulareingabe verarbeiten und Formular anzeigen.
$output = drupal_get_form('example_form', $spalten);
// View Konfigurieren und anzeigen
$view = views_get_view('nummernverzeichnis_view');
// TODO: Anhand der API-Dokumentation od durch Ausgabe von $view herausfinden,
// wie Felder im View auf unsichtbar gesetzt werden können.
// TODO: Alle Felder in $view auf unsichtbar stellen
foreach (example_arg2options($spalten) as $spalte) {
// TODO: Spalte $spalte auf sichtbar schalten
}
$args = func_get_args();
array_shift($args); // $spalten entfernen
$output .= $view->preview('default', $args);
return $output;
}
/**
* Formular
*/
function example_form($form_state, $spalten) {
$form['spalten'] = array(
'#type' => 'checkboxes',
'#title' => t('Columns'),
'#description' => t('Select the columns that you want to display.'). ' ' .
t('If you don`t choose specific columns, all columns will be displayed.'),
'#options' => array( // Bit-Flags für die einzelnen Spalten
1 => 'Spalte 1',
2 => 'Spalte 2',
4 => 'Spalte 3',
8 => 'Spalte 4',
16 => 'Spalte 5',
32 => 'Spalte 6',
64 => 'Spalte 7',
128 => 'Spalte 8',
256 => 'Spalte 9',
512 => 'Spalte 10',
1024 => 'Spalte 11',
),
'#default_values' => example_arg2options($spalten);
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Save'),
);
return $form;
}
/**
* Formular verarbeiten
*/
function example_form_submit($form, $form_state) {
// Array aus Bit-Flags in Integer umwandeln.
$result = array_sum(array_keys(array_filter($form_state['values']['spalten']))));
// Weiterleiten
$form_state['redirect'] = "e-nummernverzeichnis/$result";
}
/**
* Wandelt Bit-Flags in Array um.
*/
function example_arg2options($spalten) {
$optionen = array();
$spalte = 1;
while ($spalten != 0) {
$tmp = intval($spalten / 2);
if ($tmp - $spalten != 0) {
$optionen[$spalte] = $spalte
}
$spalte *= 2;
$spalten = $tmp;
}
return $optionen;
}
?>
--
Danke! Nur weiß ich jetzt
am 12.10.2009 - 19:24 Uhr
Danke für deine Antwort! Nur weiß ich jetzt nicht, was ich damit genau anfangen soll :-)
Über FTP einbinden (wo genau?) oder über Drupal importieren, wobei ich Letzteres schon vergeblich versucht habe?
Vaio schrieb Nur weiß ich
am 12.10.2009 - 20:58 Uhr
Nur weiß ich jetzt nicht, was ich damit genau anfangen soll :-)
Mache dich mit dem Thema Modulentwicklung in Drupal vertraut, dann weißt du es. Die notwendingen Informationen findest du im Module developer's guide. Auch wenn es auf den ersten Blick etwas viel erscheinen mag: wenn man sowieso schon PHP kann, dann zahlt es sich auf lange Sicht aus. Konnkret musst du dir (neben der Infrastrukur von Modulen) die Forms API und das Drupal Menu System anschauen.
Über FTP einbinden (wo genau?) oder über Drupal importieren, wobei ich Letzteres schon vergeblich versucht habe?
Dazu war's nicht gedacht. Eher ein Technology Preview.
--
Achso, und einfacher geht es
am 13.10.2009 - 15:46 Uhr
Achso, und einfacher geht es nicht? Dachte mit views ist das möglich. Zumindest hatte ich mal genau diese oder eine ähnliche Einstellung, jedoch wieder vergessen wie das war. Also irgendwie muss das doch mit views gehen ohne mit code zu arbeiten.
Vaio schrieb Dachte mit
am 13.10.2009 - 17:11 Uhr
Dachte mit views ist das möglich. Zumindest hatte ich mal genau diese oder eine ähnliche Einstellung, jedoch wieder vergessen wie das war.
Kann es sein, das es die Konfigurationseinstellung ist von der ich im zweiten Punkt meines ersten Beitrages geredet habe? Die findest du in den Konfigurationseinstellungen der einzelnen Felder. Heißt glaube ich "Exclude this field from display". Das Problem ist ja, das du dem Benutzer ermöglichen möchtest, einzustellen ob er ein Feld sehen möchte oder nicht.
--
Views Konfiguration
am 18.10.2009 - 22:19 Uhr
Sorry das ich mich so spät melde, hatte aber keine Zeit weiter daran zu arbeiten.
Ja, es müsste eigentlich nur an der Konfiguration liegen, nur finde ich die richtige Einstellung nicht.
Ich kann zwar ein Vokabular anzeigen, möchte aber nur dessen Unterbegriffe anzeigen. Das geht aber leider nicht, egal wie ich es bisher eingestellt habe.