Вывод страниц pagination через views

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

Аватар пользователя stakh@drupal.org stakh@drupal.org 19 июля 2010 в 11:43

Здравствуйте.
Возникла следующая необходимость построить карту сайта через views, так как pagination делит статьи на сайте на странички.
Видел решение для ВП, но не могу разобраться, как сделать это на Друпал.
Пример:

То есть, хочу добиться добавления активных ссылок на страницы статей начиная со второй ибо на первую уже есть ссылка.
Может, кто-то уже делал или есть модуль?
Подскажите, как реализовать?

Комментарии

Аватар пользователя t3hk0d3 t3hk0d3 22 июля 2010 в 11:36

Делается через создание своего темлейта для rowstyle, где получив список страниц подрисовать циферки. Насколько я знаю в шестом друпале пагинация страниц содержимого делается через модуль paging, в нем не копался, так-что как узнать кол-во страниц программно сейчас подсказать не могу.

Аватар пользователя t3hk0d3 t3hk0d3 28 июля 2010 в 15:59

Views -> изменить -> Theme: Information -> Row Style

Шаблон отвечает за отображение отдельного элемента, при режиме вывода (Row style) "Поля"

<?php
// $Id: views-view-fields.tpl.php,v 1.6 2008/09/24 22:48:21 merlinofchaos Exp $
/**
 * file views-view-fields.tpl.php
 * Default simple view template to all the fields as a row.
 *
 * - $view: The view in use.
 * - $fields: an array of $field objects. Each one contains:
 *   - $field->content: The output of the field.
 *   - $field->raw: The raw data for the field, if it exists. This is NOT output safe.
 *   - $field->class: The safe class id to use.
 *   - $field->handler: The Views field handler object controlling this field. Do not use
 *     var_export to dump this object, as it can't handle the recursion.
 *   - $field->inline: Whether or not the field should be inline.
 *   - $field->inline_html: either div or span based on the above flag.
 *   - $field->separator: an optional separator that may appear before a field.
 * - $row: The raw result object from the query, with all data it fetched.
 *
 * ingroup views_templates
 */

?>
<?php foreach ($fields as $id => $field): ?>
  <?php if (!empty($field->separator)): ?>
    <?php print $field->separator; ?>
  <?php endif; ?>

  <<?php print $field->inline_html;?> class="views-field-<?php print $field->class; ?>">
    <?php if ($field->label): ?>
      <label class="views-label-<?php print $field->class; ?>">
        <?php print $field->label; ?>:
      </label>
    <?php endif; ?>
      <?php
      // $field->element_type is either SPAN or DIV depending upon whether or not
      // the field is a 'block' element type or 'inline' element type.
      ?>
      <<?php print $field->element_type; ?> class="field-content"><?php print $field->content; ?></<?php print $field->element_type; ?>>
  </<?php print $field->inline_html;?>>
<?php endforeach; ?>

Соответственно в переменной $raw содержится обьект ноды. Потом как-нибудь через вызов функций модуля pagination получаем кол-во страниц и генерируем ссылки на них (можно простым обходом цикла до кол-во страниц и ?page=$i)

Если с PHP не в ладах то объяснять будет не просто, в таком случае проще воспользоваться помощью фрилансера.