Как сделать номерацию страниц под статьей?

Тема в разделе "Программирование", создана пользователем motosimak, 16.05.2012.

  1. Offline

    motosimak Недавно здесь

    Регистрация:
    16.05.2012
    Сообщения:
    1
    Симпатии:
    0
    Пол:
    Мужской
    Всем привет, прошу помощи знающих людей

    Узнал, что яндекс не берет большие материалы в индекс (у меня кодексы), пришлось сделать пагинацию. Делал автопагинацию с помощью плагина autopagebreak. Вот что получилось: http://yursodeistvie.ru/kodeksy/arbitrazhnyj-protsessualnyj-kodeks?showall=&start=29

    можете подсказать, как страницы сделать под статьей и урезать их до 10, чтобы было такого вида http://mepic.ru/view/?id=3087dd380c302cee51d2ea53d3310a7c
    а то у кодекса 300 страниц и все они видны, а хотелось бы чтобы было видно только 10 страниц остальные скрыты.

    сайт на joomla 2.5..., знаю что нужно ксс править, но как уменьшить до 10 стр. и опустить под статью ?

    Код (CODE):
    1. <?php
    2. /**
    3.  * Joomla! 1.7 autoPageBreak plugin
    4.  *
    5.  * @url http://joomalungma.com
    6.  * date generated:
    7.  * @version 0.4
    8.  * @author Nikita Zonov
    9.  * @package plg_content_autopagebreak
    10.  * @license http://opensource.org/licenses/gpl-license.php GNU Public License
    11.  **/
    12.  
    13. defined( '_JEXEC' ) or die( 'Restricted access' );
    14.  
    15. // Import library dependencies
    16. jimport('joomla.event.plugin');
    17.  
    18. class plgContentAutopagebreak extends JPlugin
    19. {
    20.     //function onPrepareContent(&$row, &$params, $limitstart) {
    21.     function onContentPrepare($context, &$row, &$params, $page = 0)
    22.     {
    23.         $text = $this->paging($row->text);
    24.         $row->text = $text;
    25.     }
    26.  
    27.     private function paging($text)
    28.     {
    29.         $denyPattern ='#{!apb}#iU';
    30.         if(preg_match($denyPattern, $text)) return $text;
    31.         $regex = '#<hr(.*)class="system-pagebreak"(.*)\/>#iU';
    32.         if (!preg_match($regex, $text)) // there is no PageBreak in the article
    33.         {
    34.             //params
    35.             $paging_number = $this->params->get('paging_number', 3000);
    36.             $skiplist = $this->params->get('skiplist', 1);
    37.             $skiptable = $this->params->get('skiptable', 1);
    38.  
    39.             // change Tables and List to the simple-one-word-tags
    40.             $tmp_text = $text;
    41.             $lists = array();
    42.             $tables = array();
    43.             if($skiplist)
    44.             {
    45.                 $pattern= '/<ul[\s,>](.*)\/ul>/s';
    46.                 preg_match_all($pattern,$text,$matches);
    47.                 $lists = $matches[0];
    48.                 $tmp_text = str_replace($lists, '{list}', $text);
    49.             }
    50.             if($skiptable)
    51.             {
    52.                 $pattern= '/<table[\s,>](.*)\/table>/s';
    53.                 preg_match_all($pattern,$tmp_text,$matches);
    54.                 $tables = $matches[0];
    55.                 $tmp_text = str_replace($tables, '{table}', $tmp_text);
    56.             }
    57.            
    58.             //break into pages
    59.             $ids = explode(':',JRequest::getString('id'));
    60.             $article_id = $ids[0];
    61.             $article =& JTable::getInstance("content");
    62.             $article->load($article_id);
    63.             $articleTitle = $article->get("title");
    64.  
    65.             $body = $tmp_text;
    66.             $words_count = mb_strlen($body,'UTF-8');
    67.             $i = 0;
    68.             $bodycount = 0;
    69.  
    70.  
    71.  
    72.               if ($words_count > $paging_number) {
    73.                 while (strlen(trim($body)) && ($i<1000)) {
    74.                   $bodypart[$i] = $this->paging_paragraph_split($body, $paging_number);
    75.                   $bodycount += mb_strlen($bodypart[$i],'UTF-8');
    76.                   $body = mb_substr($tmp_text, $bodycount, $paging_number, 'UTF-8');
    77.                   $i++;
    78.                 }
    79.                 //$text = implode('<hr title="Page title" alt="Toc ALiase" class="system-pagebreak" />', $bodypart);
    80.                 $text ='';
    81.                 $pageNumber = 1;
    82.                 foreach ($bodypart as $page)
    83.                 {
    84.                     $pageNumber++;
    85.                     $text .= $page;
    86.                     if (next($bodypart)) {
    87.                         $text .= '<hr title="'. $articleTitle . '" alt="Стр. ' . $pageNumber . '" class="system-pagebreak" />';
    88.                         }
    89.                 }
    90.               }
    91.             // insert Tables and lists back into Article
    92.             $text = str_replace('{table}',implode('',$tables),$text);
    93.             $text = str_replace('{list}',implode('',$lists),$text);
    94.  
    95.         }
    96.         return $text;
    97.     }
    98.  
    99.     private function paging_paragraph_split($body, $size) {
    100.  
    101.       if (mb_strlen($body,'UTF-8') < $size) {
    102.         return $body;
    103.       }
    104.  
    105.       $teaser = mb_substr($body, 0, $size,'UTF-8');
    106.       $position = 0;
    107.       $length = 0;
    108.       $breakpoints = array('</p>','<br />','<br>',"\n","</table>","</ul>");
    109.       foreach ($breakpoints as $point) {
    110.         $length_ = mb_strrpos($teaser, $point,'UTF-8');
    111.         if ($length_ > $length) $length = $length_;
    112.       }
    113.  
    114.       if ($length) {
    115.           $position = $length;
    116.           return ($position == 0) ? $teaser : mb_substr($teaser, 0, $position,'UTF-8');
    117.       }
    118.  
    119.       $breakpoints = array('. ', '!', '?', ' - ');
    120.  
    121.       foreach ($breakpoints as $point) {
    122.         $length_ = mb_strrpos($teaser, $point,'UTF-8');
    123.         if ($length_ > $length) $length = $length_;
    124.       }
    125.  
    126.       if ($length) {
    127.           $position = $length;
    128.       }
    129.       return ($position == 0) ? $teaser : mb_substr($teaser, 0, $position,'UTF-8');
    130.  
    131.     }
    132.  
    133. }
     
  2.  
  3. Offline

    Dzam Пользователь

    Регистрация:
    29.05.2012
    Сообщения:
    134
    Симпатии:
    4
    Пол:
    Мужской
    Можно попробовать в при создании материала руками делить материал на страницы и ставить "Разрыв страницы". Тогда хоть 10 хоть 20 страниц можно сделать. В стандартном варианте отображение страниц не очень карсиво происходит, и не совсем как надо, но тут уже с помощью CSS можно сделать все что угодно. Если такой вариант пойдет - пишите, с CSS помогу. Пример на сайте у меня в подписи. (там, кстати использован ваш текст с вашего сайта, надеюсь за авторские права не будете в суд подавать. :) )
     

Поделиться этой страницей

Загрузка...