Надо было сделать exposed фильтры во views скрывающимися. Видел в сборке Drupal Commons такое. Простой перенос tpl и css практически ничего не дал - там Drupal 6? то одно не работало, то другое.
Решения под Д7 не нашёл в одном месте (или плохо искал?). Собрал по крупицам:
Перетащить views/theme/views-exposed-form.tpl.php в тему и изменить к виду:
<?php
/**
* file views-exposed-form.tpl.php
*
* This template handles the layout of the views exposed filter form.
*
* Variables available:
* - $widgets: An array of exposed form widgets. Each widget contains:
* - $widget->label: The visible label to print. May be optional.
* - $widget->operator: The operator for the widget. May be optional.
* - $widget->widget: The widget itself.
* - $sort_by: The select box to sort the view using an exposed form.
* - $sort_order: The select box with the ASC, DESC options to define order. May be optional.
* - $items_per_page: The select box with the available items per page. May be optional.
* - $offset: A textfield to define the offset of the view. May be optional.
* - $reset_button: A button to reset the exposed filter applied. May be optional.
* - $button: The submit button for the form.
*
* ingroup views_templates
*/
?>
<?php
// Add collapsible fieldset js if it is not already included
drupal_add_js('misc/drupal.js');
drupal_add_js('misc/form.js');
drupal_add_js('misc/collapse.js');
?>
<?php if (!empty($q)): ?>
<?php
// This ensures that, if clean URLs are off, the 'q' is added first so that
// it shows up first in the URL.
print $q;
?>
<?php endif; ?>
<fieldset class="views-exposed-form collapsible collapsed">
<legend><span class="fieldset-legend"><?php print(t("Filter")); ?></span></legend>
<div class="views-exposed-widgets fieldset-wrapper clearfix">
<?php foreach ($widgets as $id => $widget): ?>
<div id="<?php print $widget->id; ?>-wrapper" class="views-exposed-widget views-widget-<?php print $id; ?>">
<?php if (!empty($widget->label)): ?>
<label for="<?php print $widget->id; ?>">
<?php print $widget->label; ?>
</label>
<?php endif; ?>
<?php if (!empty($widget->operator)): ?>
<div class="views-operator">
<?php print $widget->operator; ?>
</div>
<?php endif; ?>
<div class="views-widget">
<?php print $widget->widget; ?>
</div>
</div>
<?php endforeach; ?>
<?php if (!empty($sort_by)): ?>
<div class="views-exposed-widget views-widget-sort-by">
<?php print $sort_by; ?>
</div>
<div class="views-exposed-widget views-widget-sort-order">
<?php print $sort_order; ?>
</div>
<?php endif; ?>
<?php if (!empty($items_per_page)): ?>
<div class="views-exposed-widget views-widget-per-page">
<?php print $items_per_page; ?>
</div>
<?php endif; ?>
<?php if (!empty($offset)): ?>
<div class="views-exposed-widget views-widget-offset">
<?php print $offset; ?>
</div>
<?php endif; ?>
<div class="views-exposed-widget views-submit-button">
<?php print $button; ?>
</div>
<?php if (!empty($reset_button)): ?>
<div class="views-exposed-widget views-reset-button">
<?php print $reset_button; ?>
</div>
<?php endif; ?>
</div>
</fieldset>
?>
Т.е. в tpl добавляется подключение js, fieldset, legend span, fieldset-wrapper в div.
Добавить CSS:
clear: both;
content: ".";
display: block;
height: 0;
visibility: hidden;
}
html.js fieldset.views-exposed-form {
margin: 18px 0;
}
html.js fieldset.collapsible {
position: relative;
}
html.js fieldset.collapsible .fieldset-wrapper {
overflow: visible;
}
fieldset.views-exposed-form {
border: 1px solid #CCCCCC;
clear: both;
overflow: visible;
padding: 0;
}
CSS пока не чистил, возможно он избыточен, перетаскивал через firebug.
Использовано:
Частично Drupal Commons тема commons_roots
разбор кода misc/collapse.js
http://drupal.org/node/321779 - отличия от D6 в span.fieldset-legend и span.fieldset-wrapper
http://api.drupal.org/api/drupal/includes!form.inc/function/theme_fields... - подключение form.js
Комментарии
А есть демонстрационная страница ?
Нет. Пока локально крутится.
А вообще идея "подсмотрена" здесь: http://commons.acquia.com/users
а я бы просто перехватил в хуке form_alter форму exposed фильтров
и подцепил туда филдсет без всяких шаблонов ит подобного гемороя
делается в 2 секунды и вешать можно на что угодно:
http://rkreal.ru/kvartiry-v-bolgarii
Хук на форму, добавление префикса и суфикса к элементам.
Всего 4 строчки кода и все работает и незачем такой огород городить.
Уважаемые, очень умные господа!
Где Вы увидели тут геморрой и огород?
Опишите свои решения подробно, и в отдельных ветках, пожалуйста.
гугл: drupal 7 form fieldset
http://stackoverflow.com/questions/4861441/why-cant-i-move-a-field-into-...
http://api.drupal.org/api/drupal/developer!topics!forms_api_reference.ht...
Спасибо.
Мне решение темизацией нужно было. Почему все предлагают хуки?
потому что мы это более правильное и гибкое решение чем вставляь html филдсета
можно прикрутить collapsible например легко при чем, но минус в то мчто нужно уметь программить хотя бы немного
вот ссылка на доки
http://api.drupal.org/api/drupal/developer!topics!forms_api_reference.ht...