We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 26586
    • 184 Posts
    Есть многостраничный документ и выводить его надо по страницам... но вводить в систему его надо как один документ.

    Существует ли какой-то сниплет делающий:
    - обрабатывающий тег-разделитель на страницы и выводящий только определенную часть в зависимости от параметра в get-запросе
    - выводящий в плейсхолдеры инфу о текущей, следующей, предыдущей и т.д. части документа

    ?
      • 25392
      • 34 Posts
      смотри Pagination Plugin

      используется разделитель {BREAK}
        MODx Ukraine
        • 26586
        • 184 Posts
        Спасибо большое. После дневных размышлений в голову пришло , что это должен быть именно плагин.
        Надо дописать туда еще плейсхолдеры.
          • 26586
          • 184 Posts
          Кому надо, забирайте, переписано под PlaceHolders.
          $delimiter   = isset($delimiter)? $delimiter : "<!--[page]-->";
          $tplNext     = isset($tplNext)  ? $tplNext   : '»';
          $tplPrev     = isset($tplPrev)  ? $tplPrev   : '«';
          
          
          $e = &$modx->Event;
          
          switch($e->name) {
          	case 'OnLoadWebDocument':
          		$content     = $modx->documentObject['content'];
          		$pagecontent = explode($delimiter, $content);
          		$countpages  = count($pagecontent);
          		if ($countpages>1) {
          			$currentpage = isset($_GET['page']) ? $_GET['page'] : 1;
          			if (($currentpage>$countpages) || ($currentpage<1)) $currentpage = 1;
          			
          			$currentpageid = $modx->documentObject['id'];
          			$url = $modx->makeUrl($currentpageid);
          			$char = ((strpos($url,"?")===false) ? "?":"&");
          			
          			$char = ($modx->config['friendly_urls'] == 0) ? "&" : "?";
          			$url = $modx->makeurl($modx->documentObject['id'], '', $char.'page=');
          			
          			$prevpage = $currentpage-1;
          			$nextpage = $currentpage+1;
          			
          			$linkprev = ($prevpage>0) ? ("<a href=\"[~$currentpageid~]" . $char . "page=$prevpage\">" . $tplPrev . "</a>") : '';
          			$linknext = ($nextpage<=$countpages) ? ("<a href=\"[~$currentpageid~]" . $char . "page=$nextpage\">" . $tplNext . "</a>") : '';
          			
          			for ($display=1; $display<=$countpages; $display++) {
          				if ($display != $currentpage) {
          					$pages[] = "<a class=\"pip_page\" href='[~$currentpageid~]" . $char . "page=$display'>$display</a>";
          				} else {
          					$pages[] = "<span class=\"pip_currentpage\">[$display]</span>";
          				}
          			}
          			$pages = implode(' - ', $pages);
          			
          			$content = $pagecontent[$currentpage-1];
          			$modx->setPlaceholder('countpages',  $countpages);
          			$modx->setPlaceholder('currentpage', $currentpage);
          			$modx->setPlaceholder('previouspage',    $prevpage);
          			$modx->setPlaceholder('nextpage',    $nextpage);
          			$modx->setPlaceholder('previous',    $linkprev);
          			$modx->setPlaceholder('next',    $linknext);
          			$modx->setPlaceholder('pages',       $pages);
          			
          		}
          		$modx->documentObject['content'] = $content;
          		break;
          	case "OnDocFormSave":
          		$pagecontent = explode($delimiter, $_POST['ta']);
          		if (count($pagecontent)>1) {
             			$fields = array('cacheable' => 0);
              		$table = $modx->getFullTableName('site_content');
            			// Update the database
          			$rows_affected = $modx->db->update(
          				$fields, 
          				$table,
          				"id = {$e->params['id']}"
          			);
          		}
          		break;
          	default:
          		return;
          		break;
          }
          
            • 26586
            • 184 Posts
            Добавил обработку сохранения документа. При сохранении многостраничного документа сбрасывается признак кеширования.

              • 21610
              • 360 Posts
              Ïåðåïèøè âñ¸ ýòî ïî øàãàì êàê [TUTORIAL] â óðîêàõ...

              ×òî ýòî? Çà÷åì è äëÿ ÷åãî? Äóìàþ ìîæåò áûòü ïîëåçíî â áóäóþùåì ;-)
                Разработка сайтов на MODx
                • 26586
                • 184 Posts
                все данные о том, как такое написать есть на форуме и в документации =) кроме того что page и pagination однокоренные слова =)

                после нового года попробую...