Столкнулся с такой проблемой во Views.
Создал новый тип материала. Добавляю к нему поля:
- Поле 1
- Поле 1.1
- Поле 2
Создаю Представление. Задача вывести таблицей все поля, но "Поле 1" и "Поле 1.1" должны быть в одной колонке и разделяться символом "/". В представлении в настройках формата выставляю второму поле выводиться в первой колонке. Проблем не возникает, результат радует.
Заголовок | Поле 1 | Поле 2
-------------------------------
test | A/B | C
Также в настройках формата выставляю всем полям галочки "Скрыть пустую колонку", для того что бы не было пустых колонок, если они не заполнены.
Для проверки стираю в ноде значение поля "Поле 2", колонка исчезает, все работает отлично.
Заголовок | Поле 1
--------------------
test | A/B
Стираю в ноде значение поля "Поле 1.1", исчезает значение поля "Поле 1.1", все работает отлично.
Заголовок | Поле 1 | Поле 2
-------------------------------
test | A | C
Стираю в ноде значение полей "Поле 1" и "Поле 1.1", колонка, точнее метка исчезает, но само поле нет и получается, что происходит сдвиг заголовков в шапки
Заголовок | Поле 2
-------------------------------
test | | C
Кто сталкивался, помогите советом.
Комментарии
Блин, а я зашел видео посмотреть, думал и правда покажите как они пляшут
Так а чо не пляшут?
Пляшут, пляшут еще как.
Вообще в CSS можно ширину колонки задать.
Вам это надо?
Нет, там происходит нарушение hmtl разметки. Т.е. th убирается, а td нет.
<thead>
<tr>
<th>Заголовок</th>
<th>Поле 2</th>
</tr>
</thead>
<tbody>
<tr>
<td>Заголовок</td>
<td></td>
<td>Поле 3</td>
</tr>
</tbody>
</table>
Решил проблему, правда на скорую руку.
В шаблоне вьюшки views-view-table добавил код на проверку наличия данного заголовка (th) и если его нет, значит вьювс убрал заголовок колонки, и забыл убрать td.
Код шаблона:
<?php if (!empty($title) || !empty($caption)) : ?>
<caption><?php print $caption . $title; ?></caption>
<?php endif; ?>
<?php if (!empty($header)) : ?>
<thead>
<tr>
<?php foreach ($header as $field => $label): ?>
<th <?php if ($header_classes[$field]) { print 'class="'. $header_classes[$field] . '" '; } ?>>
<?php print $label; ?>
</th>
<?php endforeach; ?>
</tr>
</thead>
<?php endif; ?>
<tbody>
<?php foreach ($rows as $row_count => $row): ?>
<tr <?php if ($row_classes[$row_count]) { print 'class="' . implode(' ', $row_classes[$row_count]) .'"'; } ?>>
<?php foreach ($row as $field => $content): ?>
<?php // Fix
if(isset($header[$field])): ?>
<td <?php if ($field_classes[$field][$row_count]) { print 'class="'. $field_classes[$field][$row_count] . '" '; } ?><?php print drupal_attributes($field_attributes[$field][$row_count]); ?>>
<?php print $content; ?>
</td>
<?php endif; ?>
<?php endforeach; ?>
</tr>
<?php endforeach; ?>
</tbody>
</table>