We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 29509
    • 6 Posts
    Возникла проблема - девочки-редакторы публикуют статьи копи-пастом из источника и им наплевать, что размер статьи в Plain Text полмегабайта.
    Для решения проблемы был переделан Pagination Plugin, который разбивал страницы по вставленному в текст разделителю.
    В отличии от него AutoSplitBigArticle работает автоматически, сам разбивая текст на страницы.
    Разбивка происходит от количества абзацев на страницу, задается параметром $count_delimiter_per_page, поставьте меньше-больше, в зависимости от среднего размера абзацев у вас и размера страницы.

    Инсталяция проста
    1. создаем новый плагин с именем AutoSplitBigArticle
    2. копируем код (впереди не должно быть <?)
    3. в системных событиях отмечаем галочку OnLoadWebDocument
    4. сохраняем и смотрим результат

    Это мой первый плагин, очень буду рад замечаниям.
    Update: валидатор ругался на генерируемые ссылки, поправил.

    /*
     *  Name AutoSplitBigArticle (Plugin)
     *	Version: 1.1
     *	Author: Yuri Shkatula "Terjer" ( [email protected])
     *	Based on Pip (Pagination Plugin)
     *	Author: Armand "bS" Pondman ([email protected])
     *
     *
     *  Description:
     *  will paginate a document when count delimiter per page is found in the content.
     *
     *  Configuration:
     *  check the OnLoadWebDocument event
     *
     *    optional:
     *      Edit the values under the CUSTOMIZE Header
     *
     */
    
    ## CUSTOMIZE ##
    $delimiter = '<p';
    $count_delimiter_per_page=20;
    $tplLinkNext = '<a href="[+link+]">Next</a>';
    $tplLinkPrev = '<a href="[+link+]">Prev</a>';
    $tplLinkNav = '
      <div style="margin-top: 10px;font-size: small;">
      [+linkprev+]
       Page [+current+] of [+total+] 
      [+linknext+]
      </div>';
    
    ## DO NOT EDIT BELOW THIS LINE ##
    $e = &$modx->Event;
    
    switch($e->name) {
      case 'OnLoadWebDocument':
        $pip_content = $modx->documentObject['content'];
    	$pip_content_p = explode($delimiter,$pip_content);
    	$count_p = count($pip_content_p);
    
       $pip_pagecount=intval($count_p/$count_delimiter_per_page);
       if ($pip_pagecount*$count_delimiter_per_page <> $count_p) $pip_pagecount++;
    
    	if ($pip_pagecount > 1)
    	{
    	  $pip_currentpage = isset($_GET["page"]) ? $_GET["page"]: 1;
    	  if ($pip_currentpage > $pip_pagecount || $pip_currentpage < 1) { $pip_currentpage = 1; }
    
    	  $char = ($modx->config['friendly_urls'] == 0) ? "&" : "?";
    	  $url = $modx->makeurl($modx->documentObject["id"],'',$char.'page=');
    
    	  $prevpage = $pip_currentpage-1;
    	  $nextpage = $pip_currentpage+1;
    
    	  $linkprev = ($prevpage>0) ? str_replace("[+link+]",$url.$prevpage,$tplLinkPrev) : '';
    	  $linknext = ($nextpage>$pip_pagecount) ? '' : str_replace("[+link+]",$url.$nextpage,$tplLinkNext);
    
    	  $pip_template = str_replace("[+linkprev+]",$linkprev,$tplLinkNav);
    	  $pip_template = str_replace("[+linknext+]",$linknext,$pip_template);
    	  $pip_template = str_replace("[+total+]",$pip_pagecount,$pip_template);
    	  $pip_template = str_replace("[+current+]",$pip_currentpage,$pip_template);
         
              for ($i = $count_delimiter_per_page*$pip_currentpage-$count_delimiter_per_page+1;
                                    $i <= $count_delimiter_per_page*$pip_currentpage; $i++)
              {
                if ($i >= $count_p) break;
                $pip_pagecontent.=$delimiter.$pip_content_p[$i];
              }
    	  $pip_content= $pip_pagecontent.$pip_template;
    	}
    
    	$modx->documentObject['content'] = $pip_content;
    
        break;
      default:
        return;
        break;
    }
      • 897
      • 1,620 Posts
      Aleksey Stepanov Reply #2, 17 years ago
      ну если работает, то браво smiley
        "Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein."

        Не используйте Revo для "просто сайтов". Используйте Evo

        Who can defeat the Russian bear?
        • 10449
        • 956 Posts
        Nice! Works like a charm.
          • 29039
          • 58 Posts
          К сожалению, не работает с кэшируемыми документами... sad
          Вытаскивает из кэша первую часть документа... и все...
            • 34017
            • 898 Posts
            Great plugin!
              Chuck the Trukk
              ProWebscape.com :: Nashville-WebDesign.com
              - - - - - - - -
              What are TV's? Here's some info below.
              http://modxcms.com/forums/index.php/topic,21081.msg159009.html#msg1590091
              http://modxcms.com/forums/index.php/topic,14957.msg97008.html#msg97008
              • 22301
              • 1,084 Posts
              Quote from: swit4er at Jun 22, 2007, 11:17 AM

              К сожалению, не работает с кэшируемыми документами... sad
              Вытаскивает из кэша первую часть документа... и все...


              а надо в настройках плугина в системных событиях соответствующую галочку поставить
                [img]http://jurist-info.ru/pic/rrr.jpg[/img]

                Безжалостный пияр!
                Artima -- неуч!
                Осторожно: преступная локализация -- modx-cms.ru
                Баштанник Андрей -- мегапрограммер из Белоруссии и поедатель говна, очень критично настроенный молодой человек!

                Дисклеймер для общительных: даю сам себе право транслировать в открытый эфир содержание лички, just for fun
                • 26324
                • 3 Posts
                Quote from: openagate at Jun 26, 2007, 12:48 PM

                а надо в настройках плугина в системных событиях соответствующую галочку поставить

                А какую? Пол дня потратил на это. Так и не вычислил. :-(
                  • 897
                  • 1,620 Posts
                  Вера, видимо говорит про секцию событий "Cache Service Events"
                    "Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein."

                    Не используйте Revo для "просто сайтов". Используйте Evo

                    Who can defeat the Russian bear?
                    • 721
                    • 26 Posts
                    а можно сделать так, чтоб страницы были в чпу?
                    скажем:
                    /<псевдоним_страницы>/page1.html
                    /<псевдоним_страницы>/page2.html
                    /<псевдоним_страницы>/page3.html
                      • 21272
                      • 21 Posts
                      Народ, помогите, так и не понял что нужно сделать что бы плагин работал с кэшироваными документами? huh

                      Перепробовал все возможные события в секции Cache Service Events, но результат то же.
                      Пробовал добавить
                      case ’OnLoadWebPageCache’:
                      После строки
                      case ’OnLoadWebDocument’:

                      Но результата тоже нет. Может есть кто знает ответ на этот вопрос? undecided