class SiteNewsGetlistProcessor extends modObjectGetListProcessor { public $classKey = 'modResource'; public $defaultSortField = 'publishedon'; public $defaultSortDirection = 'DESC'; public $objectType = 'modResource'; protected $total = 0; public function prepareQueryBeforeCount(xPDOQuery $c) { $p=0; if(isset($scriptProperties['parent'])) $p=$scriptProperties['parent']; $c->where(array( 'parent' => $p )); $c->limit(8); return $c; } . . .
<?php $ns=$modx->getObject('modNamespace','site'); $p=$ns->getCorePath(); $response=$modx->runProcessor('getnews', array('parent'=>4,),array('processors_path'=>$p)); print_r($response->getResponse());
{processor action="getnews" ns="site" assign=result} <ul class="carousel2"> {if $result.success} {foreach $object.object as $object} {include file="news.tpl"} {/foreach} {else} <li> <strong>error {$result.success}</strong> </li> {/if}
public function prepareQueryBeforeCount(xPDOQuery $c) { $p=0; if(isset($scriptProperties['parent']))
public function prepareQueryBeforeCount(xPDOQuery $c) { $p=0; $scriptProperties = $this->getProperties(); if(isset($scriptProperties['parent']))
public function prepareQueryBeforeCount(xPDOQuery $c) { // Второй параметр 0 - это значение по умолчанию $p = $this->getProperty('parent', 0); $c->where(array( 'parent' => $p )); $c->limit(8); return $c; } . . .
// Эта функция вызывается в первых рядах запуска процессора public function initialize(){ // Устанавливаем значения по умолчанию // Не перетирает уже имеющиеся свойства $this->setDefaultProperties(array( 'parent' => 0, )); return parent::initialize(); } public function prepareQueryBeforeCount(xPDOQuery $c) { $c->where(array( 'parent' => $this->getProperty('parent'), )); $c->limit(8); return $c; } . . .
{processor action="getnews" ns="site" assign=result} <ul class="carousel2"> {if $result.success} {foreach $object.object as $object} {include file="news.tpl"} {/foreach} {else} <li> <strong>error {$result.success}</strong> </li> {/if}
И подскажите пожалуйста, как я могу разрешить исполнение блоков {php} в modxsmarty?
Выводится «error» Если вместо error {$result.success} пишу error {$result}, то выводит «error Array».
<pre> {print_r($result)} </pre>
<?php switch($modx->event->name){ case 'OnHandleRequest': if($modx->context->key == 'mgr'){ return; } //URL к файлам шаблона (css, js, images etc.) $modx->smarty->assign('template_url', $modx->getOption('modxSite.template_url').$modx->getOption('modxSmarty.template').'/'); break; }
<?php print '<pre>'; $modx->setLogLevel(3); $namespace = 'shopmodx'; if(!$response = $modx->runProcessor('web/getdata', array( // Параметры ), array( 'processors_path' => $modx->getObject('modNamespace', $namespace)->getCorePath().'processors/', ))){ print "Не удалось выполнить процессор"; return; } print_r($response->getResponse());
<?php require_once MODX_CORE_PATH .'components/shopmodx/processors/web/getdata.class.php'; class modWebGetdataProcessor extends ShopmodxWebGetDataProcessor{ public function initialize(){ $this->setDefaultProperties(array( 'sort' => "{$this->classKey}.menuindex", 'dir' => 'ASC', 'showhidden' => false, 'showunpublished' => false, 'getPage' => false, 'limit' => 10, 'page' => !empty($_REQUEST['page']) ? (int)$_REQUEST['page'] : 0 )); if($page = $this->getProperty('page') AND $page > 1 AND $limit = $this->getProperty('limit', 0)){ $this->setProperty('start', ($page-1) * $limit); } return parent::initialize(); } public function prepareQueryBeforeCount(xPDOQuery $c) { $c = parent::prepareQueryBeforeCount($c); $where = array( 'deleted' => false, ); if(!$this->getProperty('showhidden', false)){ $where['hidemenu'] = 0; } if(!$this->getProperty('showunpublished', false)){ $where['published'] = 1; } $c->where($where); return $c; } public function outputArray(array $array, $count = false) { if($this->getProperty('getPage') AND $limit = $this->getProperty('limit')){ $this->modx->setPlaceholder('total', $count); $this->modx->runSnippet('getPage@getPage', array( 'limit' => $limit, )); } return parent::outputArray($array, $count); } } return 'modWebGetdataProcessor';