Выбор материала по алфавиту - почти решено, если есть другие решения буду рад.

Главные вкладки

Аватар пользователя Alamir Alamir 15 декабря 2010 в 22:13

Привет всем еще раз.
Я уже постил сюда свой сайт, сайт готов, дорабатывается.

Созрел такой вопрос - Как сделать возможность сортировку материала "Фильмы" по алфавиту, над фильмами стоят буквы алфавита и тыкая на "А" человек получает только фильмы на "А".

1. Пока придумал только сделать в таксономии Словарь "Алфавит" - Термины "Все буквы алфавита" - по моему топорное решение?:), и вывод через вьювс.
2. Делать Названия фильмов терминами - и уже их фильтровать на вывод через вьювс, получается делать для каждой буквы свое представление... - то же топорновато имхо.

Может есть уже готовые решения?

Сайт - www.zombieclub.ru

Сори, нашел решение методом активации во Views - Glosary Smile Пойду его править под себя:)

Комментарии

Аватар пользователя IrinaStasuk IrinaStasuk 15 декабря 2010 в 22:37

Я сделала по-другому, хотя и не претендую на лучшее решение. Хочется чего-то проще.

Сделала поле - алфавит, где можно выбрать букву. Сделала вьюс и экпозит-фильтр по этому полю. Потом сверху линейку, где вручную указала ту страницу, которая создается при выборе буквы в фильтре. Много читала про модули, помогающие сделать это. Но пришла к такому решению

Аватар пользователя Alamir Alamir 16 декабря 2010 в 6:55

Напишу свое решение и выложу код вьюхи, ибо почему то моя отказывалась нормально выводиться, хотя была 1 в 1 как с сайта drupal.org ( видимо не 1 в 1 ).

Вьюха аля стандартный Glossary, только выводиться как блок! Очень удобно и практично, выводим блок где нам надо.

Вот код

$view = new view;
$view->name = 'glossary_zk';
$view->description = 'A list of all content, by letter.';
$view->tag = 'default';
$view->view_php = '';
$view->base_table = 'node';
$view->is_cacheable = FALSE;
$view->api_version = 2;
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
$handler = $view->new_display('default', 'Defaults', 'default');
$handler->override_option('fields', array(
  'title' => array(
    'label' => 'Title',
    'link_to_node' => 1,
    'exclude' => 0,
    'id' => 'title',
    'table' => 'node',
    'field' => 'title',
    'relationship' => 'none',
  ),
  'name' => array(
    'label' => 'Author',
    'link_to_user' => 1,
    'exclude' => 0,
    'id' => 'name',
    'table' => 'users',
    'field' => 'name',
    'relationship' => 'none',
  ),
  'changed' => array(
    'label' => 'Last update',
    'date_format' => 'large',
    'custom_date_format' => '',
    'exclude' => 0,
    'id' => 'changed',
    'table' => 'node',
    'field' => 'changed',
    'relationship' => 'none',
  ),
));
$handler->override_option('arguments', array(
  'title' => array(
    'default_action' => 'default',
    'style_plugin' => 'default_summary',
    'style_options' => array(),
    'wildcard' => 'all',
    'wildcard_substitution' => 'All',
    'title' => '',
    'default_argument_type' => 'fixed',
    'default_argument' => '',
    'validate_type' => 'none',
    'validate_fail' => 'not found',
    'glossary' => 1,
    'limit' => '1',
    'case' => 'upper',
    'path_case' => 'lower',
    'transform_dash' => 0,
    'id' => 'title',
    'table' => 'node',
    'field' => 'title',
    'relationship' => 'none',
    'default_argument_user' => 0,
    'default_argument_fixed' => 'a',
    'default_argument_php' => '',
    'validate_argument_vocabulary' => array(),
    'validate_argument_type' => 'tid',
    'validate_argument_php' => '',
  ),
));
$handler->override_option('access', array(
  'type' => 'none',
  'role' => array(),
  'perm' => '',
));
$handler->override_option('cache', array(
  'type' => 'none',
));
$handler->override_option('use_ajax', TRUE);
$handler->override_option('items_per_page', 36);
$handler->override_option('use_pager', '1');
$handler->override_option('style_plugin', 'table');
$handler->override_option('style_options', array(
  'grouping' => '',
  'override' => 1,
  'sticky' => 0,
  'order' => 'asc',
  'columns' => array(
    'title' => 'title',
    'name' => 'name',
    'changed' => 'changed',
  ),
  'info' => array(
    'title' => array(
      'sortable' => 1,
      'separator' => '',
    ),
    'name' => array(
      'sortable' => 1,
      'separator' => '',
    ),
    'changed' => array(
      'sortable' => 1,
      'separator' => '',
    ),
  ),
  'default' => 'title',
));
$handler->override_option('exposed_block', TRUE);
$handler = $view->new_display('attachment', 'Attachment', 'attachment');
$handler->override_option('arguments', array(
  'title' => array(
    'default_action' => 'summary asc',
    'style_plugin' => 'unformatted_summary',
    'style_options' => array(
      'count' => 1,
      'override' => 0,
      'items_per_page' => '25',
      'inline' => 1,
      'separator' => ' | ',
    ),
    'wildcard' => 'all',
    'wildcard_substitution' => 'All',
    'title' => '',
    'default_argument_type' => 'fixed',
    'default_argument' => '',
    'validate_type' => 'none',
    'validate_fail' => 'not found',
    'glossary' => 1,
    'limit' => '1',
    'case' => 'upper',
    'path_case' => 'lower',
    'transform_dash' => 0,
    'id' => 'title',
    'table' => 'node',
    'field' => 'title',
    'relationship' => 'none',
    'default_argument_user' => 0,
    'default_argument_fixed' => 'a',
    'validate_argument_vocabulary' => array(),
    'validate_argument_php' => '',
  ),
));
$handler->override_option('attachment_position', 'before');
$handler->override_option('inherit_arguments', 0);
$handler->override_option('inherit_exposed_filters', FALSE);
$handler->override_option('inherit_pager', FALSE);
$handler->override_option('render_pager', TRUE);
$handler->override_option('displays', array(
  'block_1' => 'block_1',
  'default' => 0,
));
$handler = $view->new_display('block', 'Блок', 'block_1');
$handler->override_option('block_description', '');
$handler->override_option('block_caching', -1);

Незабудьте поменять фильтрацию под себя...Пример как работает на моем сайте, в первом посте в разделе Фильмы.