id: 9 source: 1 name: pdoPage category: pdoTools properties: 'a:41:{s:8:"plPrefix";a:7:{s:4:"name";s:8:"plPrefix";s:4:"desc";s:22:"pdotools_prop_plPrefix";s:4:"type";s:9:"textfield";s:7:"options";a:0:{}s:5:"value";s:0:"";s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:5:"limit";a:7:{s:4:"name";s:5:"limit";s:4:"desc";s:19:"pdotools_prop_limit";s:4:"type";s:11:"numberfield";s:7:"options";a:0:{}s:5:"value";i:10;s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:8:"maxLimit";a:7:{s:4:"name";s:8:"maxLimit";s:4:"desc";s:22:"pdotools_prop_maxLimit";s:4:"type";s:11:"numberfield";s:7:"options";a:0:{}s:5:"value";i:100;s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:6:"offset";a:7:{s:4:"name";s:6:"offset";s:4:"desc";s:20:"pdotools_prop_offset";s:4:"type";s:11:"numberfield";s:7:"options";a:0:{}s:5:"value";s:0:"";s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:4:"page";a:7:{s:4:"name";s:4:"page";s:4:"desc";s:18:"pdotools_prop_page";s:4:"type";s:11:"numberfield";s:7:"options";a:0:{}s:5:"value";s:0:"";s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:10:"pageVarKey";a:7:{s:4:"name";s:10:"pageVarKey";s:4:"desc";s:24:"pdotools_prop_pageVarKey";s:4:"type";s:9:"textfield";s:7:"options";a:0:{}s:5:"value";s:4:"page";s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:8:"totalVar";a:7:{s:4:"name";s:8:"totalVar";s:4:"desc";s:22:"pdotools_prop_totalVar";s:4:"type";s:9:"textfield";s:7:"options";a:0:{}s:5:"value";s:10:"page.total";s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:9:"pageLimit";a:7:{s:4:"name";s:9:"pageLimit";s:4:"desc";s:23:"pdotools_prop_pageLimit";s:4:"type";s:11:"numberfield";s:7:"options";a:0:{}s:5:"value";i:5;s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:7:"element";a:7:{s:4:"name";s:7:"element";s:4:"desc";s:21:"pdotools_prop_element";s:4:"type";s:9:"textfield";s:7:"options";a:0:{}s:5:"value";s:12:"pdoResources";s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:10:"pageNavVar";a:7:{s:4:"name";s:10:"pageNavVar";s:4:"desc";s:24:"pdotools_prop_pageNavVar";s:4:"type";s:9:"textfield";s:7:"options";a:0:{}s:5:"value";s:8:"page.nav";s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:12:"pageCountVar";a:7:{s:4:"name";s:12:"pageCountVar";s:4:"desc";s:26:"pdotools_prop_pageCountVar";s:4:"type";s:9:"textfield";s:7:"options";a:0:{}s:5:"value";s:9:"pageCount";s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:14:"pageLinkScheme";a:7:{s:4:"name";s:14:"pageLinkScheme";s:4:"desc";s:28:"pdotools_prop_pageLinkScheme";s:4:"type";s:9:"textfield";s:7:"options";a:0:{}s:5:"value";s:0:"";s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:7:"tplPage";a:7:{s:4:"name";s:7:"tplPage";s:4:"desc";s:21:"pdotools_prop_tplPage";s:4:"type";s:9:"textfield";s:7:"options";a:0:{}s:5:"value";s:88:"@INLINE
  • [[+pageNo]]
  • ";s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:14:"tplPageWrapper";a:7:{s:4:"name";s:14:"tplPageWrapper";s:4:"desc";s:28:"pdotools_prop_tplPageWrapper";s:4:"type";s:9:"textfield";s:7:"options";a:0:{}s:5:"value";s:83:"@INLINE ";s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:13:"tplPageActive";a:7:{s:4:"name";s:13:"tplPageActive";s:4:"desc";s:27:"pdotools_prop_tplPageActive";s:4:"type";s:9:"textfield";s:7:"options";a:0:{}s:5:"value";s:95:"@INLINE
  • [[+pageNo]]
  • ";s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:12:"tplPageFirst";a:7:{s:4:"name";s:12:"tplPageFirst";s:4:"desc";s:26:"pdotools_prop_tplPageFirst";s:4:"type";s:9:"textfield";s:7:"options";a:0:{}s:5:"value";s:95:"@INLINE
  • [[%pdopage_first]]
  • ";s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:11:"tplPageLast";a:7:{s:4:"name";s:11:"tplPageLast";s:4:"desc";s:25:"pdotools_prop_tplPageLast";s:4:"type";s:9:"textfield";s:7:"options";a:0:{}s:5:"value";s:94:"@INLINE
  • [[%pdopage_last]]
  • ";s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:11:"tplPagePrev";a:7:{s:4:"name";s:11:"tplPagePrev";s:4:"desc";s:25:"pdotools_prop_tplPagePrev";s:4:"type";s:9:"textfield";s:7:"options";a:0:{}s:5:"value";s:84:"@INLINE
  • «
  • ";s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:11:"tplPageNext";a:7:{s:4:"name";s:11:"tplPageNext";s:4:"desc";s:25:"pdotools_prop_tplPageNext";s:4:"type";s:9:"textfield";s:7:"options";a:0:{}s:5:"value";s:84:"@INLINE
  • »
  • ";s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:11:"tplPageSkip";a:7:{s:4:"name";s:11:"tplPageSkip";s:4:"desc";s:25:"pdotools_prop_tplPageSkip";s:4:"type";s:9:"textfield";s:7:"options";a:0:{}s:5:"value";s:81:"@INLINE
  • ...
  • ";s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:17:"tplPageFirstEmpty";a:7:{s:4:"name";s:17:"tplPageFirstEmpty";s:4:"desc";s:31:"pdotools_prop_tplPageFirstEmpty";s:4:"type";s:9:"textfield";s:7:"options";a:0:{}s:5:"value";s:96:"@INLINE
  • [[%pdopage_first]]
  • ";s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:16:"tplPageLastEmpty";a:7:{s:4:"name";s:16:"tplPageLastEmpty";s:4:"desc";s:30:"pdotools_prop_tplPageLastEmpty";s:4:"type";s:9:"textfield";s:7:"options";a:0:{}s:5:"value";s:95:"@INLINE
  • [[%pdopage_last]]
  • ";s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:16:"tplPagePrevEmpty";a:7:{s:4:"name";s:16:"tplPagePrevEmpty";s:4:"desc";s:30:"pdotools_prop_tplPagePrevEmpty";s:4:"type";s:9:"textfield";s:7:"options";a:0:{}s:5:"value";s:85:"@INLINE
  • «
  • ";s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:16:"tplPageNextEmpty";a:7:{s:4:"name";s:16:"tplPageNextEmpty";s:4:"desc";s:30:"pdotools_prop_tplPageNextEmpty";s:4:"type";s:9:"textfield";s:7:"options";a:0:{}s:5:"value";s:85:"@INLINE
  • »
  • ";s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:5:"cache";a:7:{s:4:"name";s:5:"cache";s:4:"desc";s:19:"pdotools_prop_cache";s:4:"type";s:13:"combo-boolean";s:7:"options";a:0:{}s:5:"value";b:0;s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:9:"cacheTime";a:7:{s:4:"name";s:9:"cacheTime";s:4:"desc";s:23:"pdotools_prop_cacheTime";s:4:"type";s:11:"numberfield";s:7:"options";a:0:{}s:5:"value";i:3600;s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:14:"cacheAnonymous";a:7:{s:4:"name";s:14:"cacheAnonymous";s:4:"desc";s:28:"pdotools_prop_cacheAnonymous";s:4:"type";s:13:"combo-boolean";s:7:"options";a:0:{}s:5:"value";b:0;s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:13:"toPlaceholder";a:7:{s:4:"name";s:13:"toPlaceholder";s:4:"desc";s:27:"pdotools_prop_toPlaceholder";s:4:"type";s:9:"textfield";s:7:"options";a:0:{}s:5:"value";s:0:"";s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:4:"ajax";a:7:{s:4:"name";s:4:"ajax";s:4:"desc";s:18:"pdotools_prop_ajax";s:4:"type";s:13:"combo-boolean";s:7:"options";a:0:{}s:5:"value";b:0;s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:8:"ajaxMode";a:7:{s:4:"name";s:8:"ajaxMode";s:4:"desc";s:22:"pdotools_prop_ajaxMode";s:4:"type";s:4:"list";s:7:"options";a:4:{i:0;a:2:{s:4:"text";s:4:"None";s:5:"value";s:0:"";}i:1;a:2:{s:4:"text";s:7:"Default";s:5:"value";s:7:"default";}i:2;a:2:{s:4:"text";s:6:"Scroll";s:5:"value";s:6:"scroll";}i:3;a:2:{s:4:"text";s:6:"Button";s:5:"value";s:6:"button";}}s:5:"value";s:0:"";s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:15:"ajaxElemWrapper";a:7:{s:4:"name";s:15:"ajaxElemWrapper";s:4:"desc";s:29:"pdotools_prop_ajaxElemWrapper";s:4:"type";s:9:"textfield";s:7:"options";a:0:{}s:5:"value";s:8:"#pdopage";s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:12:"ajaxElemRows";a:7:{s:4:"name";s:12:"ajaxElemRows";s:4:"desc";s:26:"pdotools_prop_ajaxElemRows";s:4:"type";s:9:"textfield";s:7:"options";a:0:{}s:5:"value";s:14:"#pdopage .rows";s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:18:"ajaxElemPagination";a:7:{s:4:"name";s:18:"ajaxElemPagination";s:4:"desc";s:32:"pdotools_prop_ajaxElemPagination";s:4:"type";s:9:"textfield";s:7:"options";a:0:{}s:5:"value";s:20:"#pdopage .pagination";s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:12:"ajaxElemLink";a:7:{s:4:"name";s:12:"ajaxElemLink";s:4:"desc";s:26:"pdotools_prop_ajaxElemLink";s:4:"type";s:9:"textfield";s:7:"options";a:0:{}s:5:"value";s:22:"#pdopage .pagination a";s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:12:"ajaxElemMore";a:7:{s:4:"name";s:12:"ajaxElemMore";s:4:"desc";s:26:"pdotools_prop_ajaxElemMore";s:4:"type";s:9:"textfield";s:7:"options";a:0:{}s:5:"value";s:18:"#pdopage .btn-more";s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:11:"ajaxTplMore";a:7:{s:4:"name";s:11:"ajaxTplMore";s:4:"desc";s:25:"pdotools_prop_ajaxTplMore";s:4:"type";s:9:"textfield";s:7:"options";a:0:{}s:5:"value";s:75:"@INLINE ";s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:11:"ajaxHistory";a:7:{s:4:"name";s:11:"ajaxHistory";s:4:"desc";s:25:"pdotools_prop_ajaxHistory";s:4:"type";s:4:"list";s:7:"options";a:3:{i:0;a:2:{s:4:"text";s:4:"Auto";s:5:"value";s:0:"";}i:1;a:2:{s:4:"text";s:7:"Enabled";s:5:"value";i:1;}i:2;a:2:{s:4:"text";s:8:"Disabled";s:5:"value";i:0;}}s:5:"value";s:0:"";s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:11:"frontend_js";a:7:{s:4:"name";s:11:"frontend_js";s:4:"desc";s:25:"pdotools_prop_frontend_js";s:4:"type";s:9:"textfield";s:7:"options";a:0:{}s:5:"value";s:31:"[[+assetsUrl]]js/pdopage.min.js";s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:12:"frontend_css";a:7:{s:4:"name";s:12:"frontend_css";s:4:"desc";s:26:"pdotools_prop_frontend_css";s:4:"type";s:9:"textfield";s:7:"options";a:0:{}s:5:"value";s:33:"[[+assetsUrl]]css/pdopage.min.css";s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:7:"setMeta";a:7:{s:4:"name";s:7:"setMeta";s:4:"desc";s:21:"pdotools_prop_setMeta";s:4:"type";s:13:"combo-boolean";s:7:"options";a:0:{}s:5:"value";b:1;s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}s:10:"strictMode";a:7:{s:4:"name";s:10:"strictMode";s:4:"desc";s:24:"pdotools_prop_strictMode";s:4:"type";s:13:"combo-boolean";s:7:"options";a:0:{}s:5:"value";b:1;s:7:"lexicon";s:19:"pdotools:properties";s:4:"area";s:0:"";}}' static_file: core/components/pdotools/elements/snippets/snippet.pdopage.php ----- /** @var array $scriptProperties */ /** @var modX $modx */ // Default variables if (empty($pageVarKey)) { $pageVarKey = 'page'; } if (empty($pageNavVar)) { $pageNavVar = 'page.nav'; } if (empty($pageCountVar)) { $pageCountVar = 'pageCount'; } if (empty($totalVar)) { $totalVar = 'total'; } if (empty($page)) { $page = 1; } if (empty($pageLimit)) { $pageLimit = 5; } else { $pageLimit = (integer)$pageLimit; } if (!isset($plPrefix)) { $plPrefix = ''; } if (!empty($scriptProperties['ajaxMode'])) { $scriptProperties['ajax'] = 1; } // Convert parameters from getPage if exists if (!empty($namespace)) { $plPrefix = $namespace; } if (!empty($pageNavTpl)) { $scriptProperties['tplPage'] = $pageNavTpl; } if (!empty($pageNavOuterTpl)) { $scriptProperties['tplPageWrapper'] = $pageNavOuterTpl; } if (!empty($pageActiveTpl)) { $scriptProperties['tplPageActive'] = $pageActiveTpl; } if (!empty($pageFirstTpl)) { $scriptProperties['tplPageFirst'] = $pageFirstTpl; } if (!empty($pagePrevTpl)) { $scriptProperties['tplPagePrev'] = $pagePrevTpl; } if (!empty($pageNextTpl)) { $scriptProperties['tplPageNext'] = $pageNextTpl; } if (!empty($pageLastTpl)) { $scriptProperties['tplPageLast'] = $pageLastTpl; } if (!empty($pageSkipTpl)) { $scriptProperties['tplPageSkip'] = $pageSkipTpl; } if (!empty($pageNavScheme)) { $scriptProperties['scheme'] = $pageNavScheme; } if (!empty($cache_expires)) { $scriptProperties['cacheTime'] = $cache_expires; } //--- $strictMode = !empty($strictMode); $isAjax = !empty($scriptProperties['ajax']) && !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'; if ($isAjax && !isset($_REQUEST[$pageVarKey])) { return; } /** @var pdoPage $pdoPage */ $fqn = $modx->getOption('pdoPage.class', null, 'pdotools.pdopage', true); $path = $modx->getOption('pdopage_class_path', null, MODX_CORE_PATH . 'components/pdotools/model/', true); if ($pdoClass = $modx->loadClass($fqn, $path, false, true)) { $pdoPage = new $pdoClass($modx, $scriptProperties); } else { return false; } $pdoPage->pdoTools->addTime('pdoTools loaded'); // Script and styles if (!$isAjax && !empty($scriptProperties['ajaxMode'])) { $pdoPage->loadJsCss(); } // Removing of default scripts and styles so they do not overwrote nested snippet parameters if ($snippet = $modx->getObject('modSnippet', ['name' => 'pdoPage'])) { $properties = $snippet->get('properties'); if ($scriptProperties['frontend_js'] == $properties['frontend_js']['value']) { unset($scriptProperties['frontend_js']); } if ($scriptProperties['frontend_css'] == $properties['frontend_css']['value']) { unset($scriptProperties['frontend_css']); } } // Page if (isset($_REQUEST[$pageVarKey]) && $strictMode && (!is_numeric($_REQUEST[$pageVarKey]) || ($_REQUEST[$pageVarKey] <= 1 && !$isAjax))) { return $pdoPage->redirectToFirst($isAjax); } elseif (!empty($_REQUEST[$pageVarKey])) { $page = (integer)$_REQUEST[$pageVarKey]; } $scriptProperties['page'] = $page; $scriptProperties['request'] = $_REQUEST; $scriptProperties['setTotal'] = true; // Limit if (isset($_REQUEST['limit'])) { if (is_numeric($_REQUEST['limit']) && abs($_REQUEST['limit']) > 0) { $scriptProperties['limit'] = abs($_REQUEST['limit']); } elseif ($strictMode) { unset($_GET['limit']); return $pdoPage->redirectToFirst($isAjax); } } if (!empty($maxLimit) && !empty($scriptProperties['limit']) && $scriptProperties['limit'] > $maxLimit) { $scriptProperties['limit'] = $maxLimit; } // Offset $offset = !empty($scriptProperties['offset']) && $scriptProperties['offset'] > 0 ? (int)$scriptProperties['offset'] : 0; $scriptProperties['offset'] = $page > 1 ? $scriptProperties['limit'] * ($page - 1) + $offset : $offset; if (!empty($scriptProperties['offset']) && empty($scriptProperties['limit'])) { $scriptProperties['limit'] = 10000000; } $cache = !empty($cache) || (!$modx->user->id && !empty($cacheAnonymous)); $url = $pdoPage->getBaseUrl(); $output = $pagination = $total = $pageCount = ''; $data = $cache ? $pdoPage->pdoTools->getCache($scriptProperties) : []; if (empty($data)) { $output = $pdoPage->pdoTools->runSnippet($scriptProperties['element'], $scriptProperties); if ($output === false) { return ''; } elseif (!empty($toPlaceholder)) { $output = $modx->getPlaceholder($toPlaceholder); } // Pagination $total = (int)$modx->getPlaceholder($totalVar); $pageCount = !empty($scriptProperties['limit']) && $total > $offset ? ceil(($total - $offset) / $scriptProperties['limit']) : 0; // Redirect to start if somebody specified incorrect page if ($page > 1 && $page > $pageCount && $strictMode) { return $pdoPage->redirectToFirst($isAjax); } if (!empty($pageCount) && $pageCount > 1) { $pagination = [ 'first' => $page > 1 && !empty($tplPageFirst) ? $pdoPage->makePageLink($url, 1, $tplPageFirst) : '', 'prev' => $page > 1 && !empty($tplPagePrev) ? $pdoPage->makePageLink($url, $page - 1, $tplPagePrev) : '', 'pages' => $pageLimit >= 7 && empty($disableModernPagination) ? $pdoPage->buildModernPagination($page, $pageCount, $url) : $pdoPage->buildClassicPagination($page, $pageCount, $url), 'next' => $page < $pageCount && !empty($tplPageNext) ? $pdoPage->makePageLink($url, $page + 1, $tplPageNext) : '', 'last' => $page < $pageCount && !empty($tplPageLast) ? $pdoPage->makePageLink($url, $pageCount, $tplPageLast) : '', ]; if (!empty($pageCount)) { foreach (['first', 'prev', 'next', 'last'] as $v) { $tpl = 'tplPage' . ucfirst($v) . 'Empty'; if (!empty(${$tpl}) && empty($pagination[$v])) { $pagination[$v] = $pdoPage->pdoTools->getChunk(${$tpl}); } } } } else { $pagination = [ 'first' => '', 'prev' => '', 'pages' => '', 'next' => '', 'last' => '' ]; } $data = [ 'output' => $output, $pageVarKey => $page, $pageCountVar => $pageCount, $pageNavVar => !empty($tplPageWrapper) ? $pdoPage->pdoTools->getChunk($tplPageWrapper, $pagination) : $pdoPage->pdoTools->parseChunk('', $pagination), $totalVar => $total, ]; if ($cache) { $pdoPage->pdoTools->setCache($data, $scriptProperties); } } if ($modx->user->hasSessionContext('mgr') && !empty($showLog)) { $data['output'] .= '
    ' . print_r($pdoPage->pdoTools->getTime(), 1) . '
    '; } if ($isAjax) { if ($pageNavVar != 'pagination') { $data['pagination'] = $data[$pageNavVar]; unset($data[$pageNavVar]); } if ($pageCountVar != 'pages') { $data['pages'] = (int)$data[$pageCountVar]; unset($data[$pageCountVar]); } if ($pageVarKey != 'page') { $data['page'] = (int)$data[$pageVarKey]; unset($data[$pageVarKey]); } if ($totalVar != 'total') { $data['total'] = (int)$data[$totalVar]; unset($data[$totalVar]); } $maxIterations = (integer)$modx->getOption('parser_max_iterations', null, 10); $modx->getParser()->processElementTags('', $data['output'], false, false, '[[', ']]', [], $maxIterations); $modx->getParser()->processElementTags('', $data['output'], true, true, '[[', ']]', [], $maxIterations); @session_write_close(); exit(json_encode($data)); } else { if (!empty($setMeta)) { $charset = $modx->getOption('modx_charset', null, 'UTF-8'); $canurl = $pdoPage->pdoTools->config['scheme'] !== 'full' ? rtrim($modx->getOption('site_url'), '/') . '/' . ltrim($url, '/') : $url; $modx->regClientStartupHTMLBlock(''); if ($data[$pageVarKey] > 1) { $prevUrl = $pdoPage->makePageLink($canurl, $data[$pageVarKey] - 1); $modx->regClientStartupHTMLBlock( '' ); } if ($data[$pageVarKey] < $data[$pageCountVar]) { $nextUrl = $pdoPage->makePageLink($canurl, $data[$pageVarKey] + 1); $modx->regClientStartupHTMLBlock( '' ); } } $modx->setPlaceholders($data, $plPrefix); if (!empty($toPlaceholder)) { $modx->setPlaceholder($toPlaceholder, $data['output']); } else { return $data['output']; } }