Поддержать Проект

Обратная связь

[MODX] Guru
  • Информация
  • Разработчикам
    • Теги
    • API
    • DBAPI
    • System Variables
    • MMrules
  • Дополнения
  • Виджеты
  • Уроки
  • Разработчики
  • Готовые примеры
  • Блог
  • Конфиги
  • HTML коды
© [MODX] Guru
  • API

getDocuments API MODX Evo ✈ Evolution CMS

  • Разработчикам
  • API
  • getDocuments
Menu
  • addEventListener
  • changeWebUserPassword
  • clearCache
  • getActiveChildren
  • getAllChildren
  • getCachePath
  • getChildIds
  • getChunk
  • getConfig
  • getDocument
  • getDocumentChildren
  • getDocumentChildrenTVarOutput
  • getDocumentChildrenTVars
  • getDocumentObject
  • getDocuments
  • getFullTableName
  • getKeywords
  • getLoginUserID
  • getLoginUserName
  • getLoginUserType
  • getManagerPath
  • getMETATags
  • getPageInfo
  • getParent
  • getParentIds
  • getPlaceholder
  • getSnippetId
  • getSnippetName
  • getTemplateVar
  • getTemplateVarOutput
  • getTemplateVars
  • getUserData
  • getUserDocGroups
  • getUserInfo
  • getVersionData
  • getWebUserInfo
  • hasPermission
  • insideManager
  • invokeEvent
  • isBackend
  • isFrontend
  • isMemberOfWebGroup
  • logEvent
  • makeList
  • makeUrl
  • mapPath
  • parseChunk
  • parseText
  • parseProperties
  • putChunk
  • regClientCSS
  • regClientHTMLBlock
  • regClientScript
  • regClientStartupHTMLBlock
  • regClientStartupScript
  • removeAllEventListener
  • removeEventListener
  • runSnippet
  • sendAlert
  • setPlaceholder
  • stripTags
  • toPlaceholder
  • toPlaceholders
  • userLoggedIn
  • webAlert
  • sendmail
3803

getDocuments API MODX Evo ✈ Evolution CMS

Возвращает информацию для указанных документов, с учетом дополнительных настроек. По умолчанию возвращаются опубликованные документы, которые не удалены

array getDocument(array $ids[, int $published[, int $deleted[, string $fields[, string $where[, string $sort[, string $dir[, string $limit]]]);

$ids - массив идентификаторов документов

$published - опубликован ли документ
0 - документ не опубликован
1 - документ опубликован
По умолчанию: 1

$deleted - значение удаления документа
0 - документы не удалены
1 - документы удалены (в корзине)
По умолчанию: 0

$fields - список необходимых полей
по умолчанию: все поля

$where - дополнительные условия запроса в БД (соответствует where в MySQL)

$sort - поле, по которому будет производиться сортировка
по умолчанию: menuindex

$dir - вариант сортировки:
ASC - по возрастанию
DESC - по убыванию
по умолчанию: ASC

$limit - максимальное количество документов (соответствует like в MySQL)
по умолчанию: без ограничения


Формат данных результата:

Array ( 
	[0] => Array ( 
		[id] => 16 
		[type] => document 
		[contentType] => text/html 
		[pagetitle] => Ajax1 
		[longtitle] => Ajax and Web 2.0 ready 
		[description] => 
		[alias] => 
		[link_attributes] => 
		[published] => 1 
		[pub_date] => 1159264800 
		[unpub_date] => 0 
		[parent] => 15 
		[isfolder] => 1 
		[introtext] => 
		[content] => Содержимое документа 
		[richtext] => 1 
		[template] => 4 
		[menuindex] => 1 
		[searchable] => 1 
		[cacheable] => 1 
		[createdby] => 1 
		[createdon] => 1144904400 
		[editedby] => 1 
		[editedon] => 1219426098 
		[deleted] => 0 
		[deletedon] => 0 
		[deletedby] => 0 
		[publishedon] => 0 
		[publishedby] => 0 
		[menutitle] => 
		[donthit] => 0 
		[haskeywords] => 0 
		[hasmetatags] => 0 
		[privateweb] => 0 
		[privatemgr] => 0 
		[content_dispo] => 0 
		[hidemenu] => 0 
		[alias_visible] => 1 
	) 
)

Пример

/**Структура документов:
-Статьи (1)
--Недвижимость (11)
---Эконом(111)
---Элитная(112)
--Авто (12)
**/
$txt = $modx->getDocuments(array(11,111)); //вернет информацию о документах 11 и 111

Источник Функции

Файл: manager/includes/document.parser.class.inc.php

Строка: 1395

function getDocuments($ids= array (), $published= 1, $deleted= 0, $fields= "*", $where= '', $sort= "menuindex", $dir= "ASC", $limit= "") {
	if (count($ids) == 0) {
		return false;
	} else {
		$limit= ($limit != "") ? "LIMIT $limit" : ""; // LIMIT capabilities - rad14701
		$tblsc= $this->getFullTableName("site_content");
		$tbldg= $this->getFullTableName("document_groups");
		// modify field names to use sc. table reference
		$fields= 'sc.' . implode(',sc.', preg_replace("/^\s/i", "", explode(',', $fields)));
		$sort= ($sort == "") ? "" : 'sc.' . implode(',sc.', preg_replace("/^\s/i", "", explode(',', $sort)));
		if ($where != '')
			$where= 'AND ' . $where;
		// get document groups for current user
		if ($docgrp= $this->getUserDocGroups())
			$docgrp= implode(",", $docgrp);
		$access= ($this->isFrontend() ? "sc.privateweb=0" : "1='" . $_SESSION['mgrRole'] . "' OR sc.privatemgr=0") .
		 (!$docgrp ? "" : " OR dg.document_group IN ($docgrp)");
		$sql= "SELECT DISTINCT $fields FROM $tblsc sc
				LEFT JOIN $tbldg dg on dg.document = sc.id
				WHERE (sc.id IN (" . join($ids, ",") . ") AND sc.published=$published AND sc.deleted=$deleted $where)
				AND ($access)
				GROUP BY sc.id " .
		 ($sort ? " ORDER BY $sort $dir" : "") . " $limit ";
		$result= $this->dbQuery($sql);
		$resourceArray= array ();
		for ($i= 0; $i < @ $this->recordCount($result); $i++) {
			array_push($resourceArray, @ $this->fetchRow($result));
		}
		return $resourceArray;
	}
}