Примеры MODxAPI

Пример DocInfo на базе modResource MODxAPI

Теперь сниппет DocInfo не будет нагружать страницу повторными SQL запросами при многократном получении значений из одного и того же документа.

Содержимое репозитория размещается в папке /assets/lib/MODxAPI/

Создается плагин на событиях OnWebPageInit, OnManagerPageInit и OnPageNotFound с кодом:

include_once(MODX_BASE_PATH."assets/lib/MODxAPI/modResource.php");
if(!isset($modx->doc)){
 $modx->doc = new modResource($modx);
}

После чего создается сниппет допустим DocInfo

$id = isset($id) ? (int)$id : $modx->documentObject['id'];
$field = isset($field) ? (string)$field : 'id';
if($field == 'id'){
    $out = $id;
}else{
    if($modx->documentObject['id'] == $id){
        $out = isset($modx->documentObject[$field]) ? $modx->documentObject[$field] : '';
        if(is_array($out)){
           $out = isset($out[1]) ? $out[1] : '';
        }
    }else{
        $out = $modx->doc->edit($id)->get($field);
    }
}
return (string)$out;

Profit! Теперь сниппет DocInfo не будет нагружать страницу повторными SQL запросами при многократном получении значений из одного и того же документа

Mem: 3.75 mb, MySQL: 0.0023 s, 2 req., PHP: 0.0384 s, all: 0.0407 s, cache.