Views 2 - Month Archive (настроенный вид, код) 6.0

Автор: B.X - 21.03/2009, сб - 04:53

Настроенный как у меня (блок и страница) вид Архива по месяцам всех документов. Точнее, на странице стоит ограничение в 100 пунктов. Я думаю, этого на ближайшие года хватит. Импортируйте этот вид в настройках Views, разрешите блок Archive и пользуйтесь. Если какие-то вопросы будут или замечания, то пишите в комментариях, хотя у меня всё работает.

  1. $view = new view;
  2. $view->name = 'archive';
  3. $view->description = 'Display a list of months that link to content for that month.';
  4. $view->tag = 'default';
  5. $view->view_php = '';
  6. $view->base_table = 'node';
  7. $view->is_cacheable = FALSE;
  8. $view->api_version = 2;
  9. $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
  10. $handler = $view->new_display('default', 'Defaults', 'default');
  11. $handler->override_option('fields', array(
  12.   'created' => array(
  13.     'label' => 'Post date',
  14.     'alter' => array(
  15.       'alter_text' => 0,
  16.       'text' => '',
  17.       'make_link' => 0,
  18.       'path' => '',
  19.       'alt' => '',
  20.       'prefix' => '',
  21.       'suffix' => '',
  22.       'help' => '',
  23.       'trim' => 0,
  24.       'max_length' => '',
  25.       'word_boundary' => 1,
  26.       'ellipsis' => 1,
  27.       'html' => 0,
  28.     ),
  29.     'date_format' => 'small',
  30.     'custom_date_format' => '',
  31.     'exclude' => 0,
  32.     'id' => 'created',
  33.     'table' => 'node',
  34.     'field' => 'created',
  35.     'relationship' => 'none',
  36.   ),
  37. ));
  38. $handler->override_option('sorts', array(
  39.   'created' => array(
  40.     'id' => 'created',
  41.     'table' => 'node',
  42.     'field' => 'created',
  43.     'order' => 'DESC',
  44.     'granularity' => 'second',
  45.     'relationship' => 'none',
  46.   ),
  47. ));
  48. $handler->override_option('arguments', array(
  49.   'created_year_month' => array(
  50.     'default_action' => 'summary desc',
  51.     'style_plugin' => 'default_summary',
  52.     'style_options' => array(
  53.       'count' => 1,
  54.       'override' => 1,
  55.       'items_per_page' => '100',
  56.     ),
  57.     'wildcard' => 'all',
  58.     'wildcard_substitution' => 'All',
  59.     'title' => '%1',
  60.     'default_argument_type' => 'fixed',
  61.     'default_argument' => '',
  62.     'validate_type' => 'none',
  63.     'validate_fail' => 'not found',
  64.     'id' => 'created_year_month',
  65.     'table' => 'node',
  66.     'field' => 'created_year_month',
  67.     'validate_user_argument_type' => 'uid',
  68.     'validate_user_roles' => array(
  69.       '2' => 0,
  70.     ),
  71.     'relationship' => 'none',
  72.     'default_options_div_prefix' => '',
  73.     'default_argument_user' => 0,
  74.     'default_argument_fixed' => '',
  75.     'default_argument_php' => '',
  76.     'validate_argument_node_type' => array(
  77.       'poll' => 0,
  78.       'image' => 0,
  79.       'forum' => 0,
  80.       'page' => 0,
  81.     ),
  82.     'validate_argument_node_access' => 0,
  83.     'validate_argument_nid_type' => 'nid',
  84.     'validate_argument_vocabulary' => array(
  85.       '1' => 0,
  86.       '2' => 0,
  87.       '5' => 0,
  88.       '4' => 0,
  89.     ),
  90.     'validate_argument_type' => 'tid',
  91.     'validate_user_restrict_roles' => 0,
  92.     'validate_argument_php' => '',
  93.   ),
  94. ));
  95. $handler->override_option('filters', array(
  96.   'status' => array(
  97.     'operator' => '=',
  98.     'value' => 1,
  99.     'group' => 0,
  100.     'exposed' => FALSE,
  101.     'expose' => array(
  102.       'operator' => '',
  103.       'label' => 'Published',
  104.       'use_operator' => FALSE,
  105.       'identifier' => 'status',
  106.       'remember' => FALSE,
  107.       'single' => TRUE,
  108.       'optional' => FALSE,
  109.     ),
  110.     'id' => 'status',
  111.     'table' => 'node',
  112.     'field' => 'status',
  113.     'relationship' => 'none',
  114.   ),
  115. ));
  116. $handler->override_option('access', array(
  117.   'type' => 'none',
  118.   'role' => array(),
  119.   'perm' => '',
  120. ));
  121. $handler->override_option('title', 'Monthly archive');
  122. $handler->override_option('items_per_page', 17);
  123. $handler->override_option('use_pager', 'mini');
  124. $handler->override_option('pager_element', 10);
  125. $handler->override_option('use_more', 1);
  126. $handler->override_option('style_options', NULL);
  127. $handler->override_option('row_plugin', 'node');
  128. $handler->override_option('row_options', array(
  129.   'teaser' => 1,
  130.   'links' => 1,
  131.   'comments' => 0,
  132. ));
  133. $handler = $view->new_display('page', 'Page', 'page');
  134. $handler->override_option('path', 'month');
  135. $handler->override_option('menu', array(
  136.   'type' => 'none',
  137.   'title' => '',
  138.   'description' => '',
  139.   'weight' => 0,
  140.   'name' => 'navigation',
  141. ));
  142. $handler->override_option('tab_options', array(
  143.   'type' => 'none',
  144.   'title' => '',
  145.   'description' => '',
  146.   'weight' => 0,
  147. ));
  148. $handler = $view->new_display('block', 'Block', 'block');
  149. $handler->override_option('arguments', array(
  150.   'created_year_month' => array(
  151.     'default_action' => 'summary desc',
  152.     'style_plugin' => 'default_summary',
  153.     'style_options' => array(
  154.       'count' => 1,
  155.       'override' => 0,
  156.       'items_per_page' => '25',
  157.     ),
  158.     'wildcard' => 'all',
  159.     'wildcard_substitution' => 'All',
  160.     'title' => '%1',
  161.     'default_argument_type' => 'fixed',
  162.     'default_argument' => '',
  163.     'validate_type' => 'user',
  164.     'validate_fail' => 'not found',
  165.     'id' => 'created_year_month',
  166.     'table' => 'node',
  167.     'field' => 'created_year_month',
  168.     'relationship' => 'none',
  169.     'validate_user_argument_type' => 'uid',
  170.     'validate_user_roles' => array(
  171.       '2' => 0,
  172.     ),
  173.     'override' => array(
  174.       'button' => 'Use default',
  175.     ),
  176.     'default_options_div_prefix' => '',
  177.     'default_argument_user' => 0,
  178.     'default_argument_fixed' => '',
  179.     'default_argument_php' => '',
  180.     'validate_argument_node_type' => array(
  181.       'poll' => 0,
  182.       'image' => 0,
  183.       'forum' => 0,
  184.       'page' => 0,
  185.     ),
  186.     'validate_argument_node_access' => 0,
  187.     'validate_argument_nid_type' => 'nid',
  188.     'validate_argument_vocabulary' => array(
  189.       '1' => 0,
  190.       '2' => 0,
  191.       '5' => 0,
  192.       '4' => 0,
  193.     ),
  194.     'validate_argument_type' => 'tid',
  195.     'validate_user_restrict_roles' => 0,
  196.     'validate_argument_php' => '',
  197.   ),
  198. ));
  199. $handler->override_option('block_description', 'Archive list');
  200. $handler->override_option('block_caching', -1);

Комментарии

Начал использовать этот модуль для создания архива, импортировал ваше представление, все нормально. Попутно попытался сделать вывод списка терминов из словаря с подсчётом количества нод. Нигде не нашел как сделать этот посчет. А в архиве эта функция используется. Подскажите пожалуйста как это можно сделать? Где во Views спрятана эта функция?

Пока у меня списки на сниппетах, но есть проблема. Если на одной странице несколько анонсов со сниппетом, то сайт выпадает. Один работает, а два уже нет. Это явно видно на примере архива по месяцам. Создал несколько страниц со списками терминов. Если дата их одним и тем же месяцем, то при выборе из архива сайт падает. Можно конечно их разнести по разным месяцам, но это как-то неправильно.

По приведенным вами ссылкам. Сниппет я уже описал, а вот решение на Views 3 у меня застопорилось, http://xandeadx.ru/blog/drupal/415
когда дохожу до пункта 4:
4. Добавляем новое поле Content: nid
У меня этого поля нет в списке предлагаемых. Что я мог упустить? Почему нет этого поля? А без него цепочка создания представления списка обрывается.

Вам надо было почитать комментарии к этой странице ( http://xandeadx.ru/blog/drupal/415 ), там написано:

Огромное человеческое спасибо за материал :)

Только одна поправочка: у меня не было поля Content: nid (пункт 4). Заменил его полем "Добавляемый термин: ID термина". Всё работает.

Заменил его полем "Добавляемый термин: ID термина". Всё работает.

Не работает. В скобках везде стоит 1. Раз ввели поле ID термина, так наверное термины и считаются, а раз термины все по одному, вот и получается при подсчете - все по 1.

А хотелось бы вот так:
Термин 1 (3)
Термин 2 (10)
Термин 3 (5)

Хм... это решается уже или через CSS или в точных настройках темы. Тут уж я ничем помочь не могу... у Views много настроек и там даже можно везде вставлять свои классы для css.

не знаю, не знаю... по мне так - чрезвычайно мощный инструмент...
не так давно делал на Views сайт для Доски Объявлений...

это просто песня, а не то, что обычно ждёшь от обычного сайта... выбор по многим параметрам, поиск...
короче, только забивай настройки и управляй выводом... мне очень понравилось работать с Views...

Здравствуйте Владимир! У меня снова появился вопрос по этому представлению, на Drupal 7. Все работает нормально. У меня в архиве выводится 17 строк (поменьше, чем у вас). Я в настройках представления выбрал: "Использовать постраничный навигатор:Полный. И: Постранично, 10 элементов. А выводятся все равно все 17. Вместо полного пробовал и Мини, то же самое. Что я делаю не так?