Страница 1 из 1

Вывод постраничного листинга 2 раза

СообщениеДобавлено: 27 окт 2010, 20:51
Max
Каким образом можно вывести на сайте листинг 2 раза? Т.е. до новостей и после новостей ради удобства.
Первый листинг отображает, второй полностью игнорирует.

P.S. - листинг указан в system_kids.php

Правила вывода листинга

СообщениеДобавлено: 27 окт 2010, 20:55
Admin
Напрямую в шаблоне листинг работать не будет, т.к. проверяет наличие данных в переменной $document и по переменным строит линейку страниц. Листинг нуждается в переменных: $count - всего страниц, $folio - текущий номер страницы, $max - кол-во ссылок которое выводится на странице. Если бы Вы использовали его в каком-то плагине, и выполнили все условия, то я бы возможно смог подсказать как сделать листинг сверху и внизу страницы.

Re: Вывод постраничного листинга 2 раза

СообщениеДобавлено: 27 окт 2010, 20:57
Max
Плагин system_kids.php Всем спасибо, решение нашлось.

Как решили задачу?

СообщениеДобавлено: 27 окт 2010, 21:02
Admin
Интересно, как решили данную проблему, расскажите про свой способ, думаю будет интересен другим пользователям.

Re: Вывод постраничного листинга 2 раза

СообщениеДобавлено: 27 окт 2010, 21:05
Max
/inner/file.php
Код: Выделить всё
<?
/////////////////
$max = $max_system_kids? $max_system_kids : 5;// максимальное количество
$listing = 3;// вид листинга
$where = isset($where_system_kids)? $where_system_kids : "parent_id=".$this->id;
include($_SERVER['DOCUMENT_ROOT'].'/inner/libraries/folio.php');
$start = $folio * $max;// показываем записи начиная с start
$r = @mysql_fetch_row(mysql_query($this->sql('COUNT(*)', $where)));
$count = $r['0'];
///////////////////////////////
$parent_url_without_ext="clientlist";
if($count>$max)
{
      $n = 0;
      for($i=0; $i<$count; $i+=$max)
      {
         if($n==$folio)
         {
            $separator .= '<span style="background-color: rgb(231, 120, 23); color: rgb(255, 255, 255); padding: 3px;margin-right:4px;"><strong>'.($n+1).'</strong></span>';
         }
         else
         {
            $separator .= '<a href="'.($n? $parent_url_without_ext.'.'.$n.$GLOBALS['SYSTEM']['config']['9'] : ( ($this->id==$GLOBALS['SYSTEM']['config']['4'])?'/':$parent_url_without_ext.$GLOBALS['SYSTEM']['config']['9']) ).'">'.($n+1).'</a>&nbsp;&nbsp';
         }
         $n++;
      }
      if($n<2)
      {
      $separator = '';
      }
   
   }
   print('<div style="margin: 0px 0px 10px; font-size: 11px;">'.$separator.'</div>');
?>


В шаблоне
Код: Выделить всё
{~$where_system_kids='parent_id=5696';~AND~file.php~}


Для моей задачи подошло, а простое подключение 2 раза листинга результата не дало.

Так тоже можно решить задачку, однако..

СообщениеДобавлено: 27 окт 2010, 21:12
Admin
Сразу видно, что код позаимствован из скрипта листинга, и стоит заметить, что это решение получилось с лишним SQL запросом, без доп. проверок, которые могли бы сделать его более универсальным, хотя я конечно придираюсь, вообще молодцом!
Кстати, т.к. Вы применяете код листинга второй раз, то в начале своего скрипта стоит добавить обнуление переменных, которые Вы удалили из кода листинга:

Код: Выделить всё
$last = $separator = $next = '';


Вообще, более простым, будет наверное такое решение:

Код: Выделить всё
<?php
$max = 5;// максимальное количество
$listing = 3;// вид листинга
$where = 'parent_id=5696';// условия вывода

include($_SERVER['DOCUMENT_ROOT'].'/inner/libraries/folio.php');

$r = @mysql_fetch_row(mysql_query($this->sql('COUNT(*)', $where)));
$count = $r['0'];

$document = ' ';
include($_SERVER['DOCUMENT_ROOT'].'/inner/libraries/listing.php');
?>

Re: Вывод постраничного листинга 2 раза

СообщениеДобавлено: 27 окт 2010, 21:43
Max
Работает. Спасибо.

Более правильное решение если использовать system_kids и т.п

СообщениеДобавлено: 27 окт 2010, 21:49
Admin
Пожалуйста, но если Вы будете использовать плагин вида system_kids.php, то решение может быть более простым.

В скрипте system_kids.php, после кода:

Код: Выделить всё
$count = $r['0'];

написать код:

Код: Выделить всё
$document = ' ';
include($_SERVER['DOCUMENT_ROOT'].'/inner/libraries/listing.php');

Таким образом код листинга будет сверху и снизу.

Re: Вывод постраничного листинга 2 раза

СообщениеДобавлено: 27 окт 2010, 21:51
Max
Благодарю. Объясните еще пожалуйста этот пункт $listing = 3;// вид листинга

Виды листинга

СообщениеДобавлено: 27 окт 2010, 22:04
Admin
Вид листинга бывает 3 видов:

1 - линейка страниц ссылками, вида: (1 - 2 - 3 - и т.д.)

2 - только ссылки, вида: « К настоящему | В прошлое »

3 - ссылки + линейка страниц, вида: « К настоящему (1 - 2 - 3 - и т.д.) В прошлое »