Gelöst:Leere Views Spalte ausblenden
Eingetragen von Lirius (88)
am 15.06.2011 - 21:20 Uhr in
am 15.06.2011 - 21:20 Uhr in
Hi,
weiß jemand wie man eine leere Spalte bei Views ausblenden kann?? Also als Darstellungsart ist die Tabelle ausgewählt :D
Oder ist sowas gar nicht möglich??
Liebe Grüße
- Anmelden oder Registrieren um Kommentare zu schreiben
Also ich meine wo man
am 15.06.2011 - 21:41 Uhr
Also ich meine wo man Einstelen kann das die Ganze spalte nicht angezeigt wird. Also auch die Spaltenüberschrift.
Wenn Du bei Views mit Feldern
am 15.06.2011 - 22:25 Uhr
Wenn Du bei Views mit Feldern arbeitest, mußt Du im View dieses Feld löschen, dann wird es auch nicht mehr angezeigt (von der Anzeige ausschließen hilft auch).
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
:D Ok ich hab mich vllt
am 15.06.2011 - 23:08 Uhr
:D Ok ich hab mich vllt flasch vormuliert. Ja ich arbeite mit Feldern und weiterhin arbeite ich auch mit einem Argument.
Also bei einem Argument (zb 1) ist die Spalte leer. Aber bei einem anderem (zb 2) ist die Spalte nicht leer. Also soll die ganze Spalte nicht angezeigt werden, wenn es keine Werte gibt.
Das ist nur mit eigener
am 15.06.2011 - 23:31 Uhr
Das ist nur mit eigener Programmlogik hinzubekommen, die Du in der template.php-Datei deines Themes in einer passenden preprocess_views-Funktion unterbringen kannst. Dort hast Du Zugriff auf das Ergebnis des Views und kannst die Spalte streichen.
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Lirius schrieb Also bei einem
am 16.06.2011 - 05:25 Uhr
Also bei einem Argument (zb 1) ist die Spalte leer. Aber bei einem anderem (zb 2) ist die Spalte nicht leer. Also soll die ganze Spalte nicht angezeigt werden, wenn es keine Werte gibt.
Schau mal hier: Hiding labels for emtpy fields
Do it with Drupal.
Das sieht ja echt gut aus :D
am 16.06.2011 - 11:37 Uhr
Das sieht ja echt gut aus :D Bloß versteh ich das Script net so. Mann muss ja nur die 2 Sachen anpassen und dann sollte das doch funktionieren oder??
Ja, den oberen Teil des
am 16.06.2011 - 16:37 Uhr
Ja, den oberen Teil des Script kopierst du in die Datei template.php, die sich in deinem Templateverzeichnis befindet. Hierbei beachten, dass du in der Zeile
function THEME-NAME_preprocess_views_view_table__VIEW-NAME(&$vars) {
statt THEME-NAME den Namen deines Themes und statt VIEW-NAME den Namen des entsprechenden Views einträgst.
Für den unteren Teil des Scripts erstellst du in deinem Templateverzeichnis eine Datei mit dem Namen views-view-table--VIEW-NAME.tpl.php, hier wieder VIEW-NAME ändern in den Namen deines Views. In diese Datei kopierst du dann das Script.
Do it with Drupal.
Hmm. Dann bin ich ja
am 16.06.2011 - 16:44 Uhr
Hmm. Dann bin ich ja eigentlich nicht zu doof dafür. Irgendwie hat es aber nicht den erhofften Erfolg gebracht. Versuche alles noch mal von vorn:D
Setzt du D7 oder D6 ein?
am 16.06.2011 - 16:56 Uhr
Setzt du D7 oder D6 ein? Hast du nach den Änderungen den Cache gelöscht? Wie lautet der Name des Views, den du einträgst?
Do it with Drupal.
Dank für
am 16.06.2011 - 17:02 Uhr
Dank für deine Hilfe :D Also ich setze D6 ein der momentane name des Design ist noch garland. Der name des views ist uc_artikel. Hab mir schon gedacht, dass es an dem Unterstich liegt. Meinst du das es daran liegen könnte?? Den Cache lösche ich jetzt noch mal.
Lirius schrieb Hab mir schon
am 16.06.2011 - 17:08 Uhr
Hab mir schon gedacht, dass es an dem Unterstich liegt. .
Ja, es müsste stattdessen
uc-artikel
heißen, also views-view-table--uc-artikel.tpl.php, versuche es mal damit.Do it with Drupal.
Also hab gerade noch mal
am 16.06.2011 - 17:06 Uhr
Also hab gerade noch mal geguckt. Es kommt jetzt auch noch immer eine weiße seite wenn ich iwas abspeichern soll. Anscheinend soll das mit der template.php zusammenhängen.
Also bei der Datei habe ich
am 16.06.2011 - 17:11 Uhr
Also bei der Datei habe ich uc-artikel und bei der template.php habe ich uc_artikel, weil man da ja keine Bindestrichemachen kann.
Edit: Weiterhin stimmt jetzt anscheinend utf8 nicht. Startseite › Verwalten › Strukturierung
Die eine Datei heißt: views-view-table--uc-productsvordach.tpl
Und hier mal die andere Datei
das ist die template.php Das unten ?> nicht ist war davor schon so. Das versteh ich echt net :D
<?php
/**
* Removes column headers for columns that do not have content.
*/
function garland_preprocess_views_view_table__uc_productsvordach(&$vars) {
$rows = $vars['rows'];
$column_has_content = array();
foreach ($rows as $count => $row) {
foreach ($row as $field => $content) {
if (!empty($content)) {
$column_has_content[$field] = TRUE;
}
}
}
$vars['column_has_content'] = $column_has_content;
}
// $Id: template.php,v 1.16.2.3 2010/05/11 09:41:22 goba Exp $
/**
* Sets the body-tag class attribute.
*
* Adds 'sidebar-left', 'sidebar-right' or 'sidebars' classes as needed.
*/
function phptemplate_body_class($left, $right) {
if ($left != '' && $right != '') {
$class = 'sidebars';
}
else {
if ($left != '') {
$class = 'sidebar-left';
}
if ($right != '') {
$class = 'sidebar-right';
}
}
if (isset($class)) {
print ' class="'. $class .'"';
}
}
/**
* Return a themed breadcrumb trail.
*
* @param $breadcrumb
* An array containing the breadcrumb links.
* @return a string containing the breadcrumb output.
*/
function phptemplate_breadcrumb($breadcrumb) {
if (!empty($breadcrumb)) {
return '<div class="breadcrumb">'. implode(' › ', $breadcrumb) .'</div>';
}
}
/**
* Override or insert PHPTemplate variables into the templates.
*/
function phptemplate_preprocess_page(&$vars) {
$vars['tabs2'] = menu_secondary_local_tasks();
// Hook into color.module
if (module_exists('color')) {
_color_page_alter($vars);
}
}
/**
* Add a "Comments" heading above comments except on forum pages.
*/
function garland_preprocess_comment_wrapper(&$vars) {
if ($vars['content'] && $vars['node']->type != 'forum') {
$vars['content'] = '<h2 class="comments">'. t('Comments') .'</h2>'. $vars['content'];
}
}
/**
* Returns the rendered local tasks. The default implementation renders
* them as tabs. Overridden to split the secondary tasks.
*
* @ingroup themeable
*/
function phptemplate_menu_local_tasks() {
return menu_primary_local_tasks();
}
/**
* Returns the themed submitted-by string for the comment.
*/
function phptemplate_comment_submitted($comment) {
return t('!datetime — !username',
array(
'!username' => theme('username', $comment),
'!datetime' => format_date($comment->timestamp)
));
}
/**
* Returns the themed submitted-by string for the node.
*/
function phptemplate_node_submitted($node) {
return t('!datetime — !username',
array(
'!username' => theme('username', $node),
'!datetime' => format_date($node->created),
));
}
/**
* Generates IE CSS links for LTR and RTL languages.
*/
function phptemplate_get_ie_styles() {
global $language;
$iecss = '<link type="text/css" rel="stylesheet" media="all" href="'. base_path() . path_to_theme() .'/fix-ie.css"
/>';
if ($language->direction == LANGUAGE_RTL) {
$iecss .= '<style type="text/css" media="all">@import "'. base_path() . path_to_theme() .'/fix-ie-
rtl.css";</style>';
}
return $iecss;
}
Okay, Alternative aus dem
am 16.06.2011 - 17:48 Uhr
Okay, Alternative: lösche den neu hinzugefügten Code in der template.php und die Datei views-view-table--uc-artikel.tpl.php. Erstelle eine Datei views-view-table.tpl.php und füge dort dann untenstehenden Code ein.
<?php
/**
* Product Table View customized so that any columns with no data are omitted from display.
*/
foreach ($rows as $count => $row):
foreach ($row as $field => $content):
if ($content) $column_has_content[ $field ] = true;
endforeach;
endforeach;
?>
<table class="<?php print $class; ?>">
<?php if (!empty($title)) : ?>
<caption><?php print $title; ?></caption>
<?php endif; ?>
<thead>
<tr>
<?php foreach ( $header as $field => $label ): ?>
<?php if ( $column_has_content[ $field ] ): ?>
<th class="views-field views-field-<?php print $fields[$field]; ?>">
<?php print $label; ?>
</th>
<?php endif;?>
<?php endforeach; ?>
</tr>
</thead>
<tbody>
<?php foreach ($rows as $count => $row): ?>
<tr class="<?php print implode(' ', $row_classes[$count]); ?>">
<?php foreach ($row as $field => $content): ?>
<?php if ( $column_has_content[ $field ] ): ?>
<td class="views-field views-field-<?php print $fields[$field]; ?>">
<?php print $content; ?>
</td>
<?php endif; ?>
<?php endforeach; ?>
</tr>
<?php endforeach; ?>
</tbody>
</table>
Do it with Drupal.
Danke so hat es jetzt
am 16.06.2011 - 17:46 Uhr
Danke so hat es jetzt geklappt. Jetzt hab ich endlich eine Lösung bei der die Performance auch stimmt. :D