本文整理汇总了PHP中Pimcore\Model\Document\Service::getDocumentIdByPrettyUrlInSite方法的典型用法代码示例。如果您正苦于以下问题:PHP Service::getDocumentIdByPrettyUrlInSite方法的具体用法?PHP Service::getDocumentIdByPrettyUrlInSite怎么用?PHP Service::getDocumentIdByPrettyUrlInSite使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Pimcore\Model\Document\Service
的用法示例。
在下文中一共展示了Service::getDocumentIdByPrettyUrlInSite方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getNearestDocumentByPath
/**
* @param $path
* @param bool $ignoreHardlinks
* @param array $types
* @return Document|Document\PageSnippet|null|string
*/
protected function getNearestDocumentByPath($path, $ignoreHardlinks = false, $types = array())
{
if ($this->nearestDocumentByPath instanceof Document) {
$document = $this->nearestDocumentByPath;
} else {
$pathes = array();
$pathes[] = "/";
$pathParts = explode("/", $path);
$tmpPathes = array();
foreach ($pathParts as $pathPart) {
$tmpPathes[] = $pathPart;
$t = implode("/", $tmpPathes);
if (!empty($t)) {
$pathes[] = $t;
}
}
$pathes = array_reverse($pathes);
foreach ($pathes as $p) {
if ($document = Document::getByPath($p)) {
if (empty($types) || in_array($document->getType(), $types)) {
$this->nearestDocumentByPath = $document;
break;
}
} else {
if (Site::isSiteRequest()) {
// also check for a pretty url in a site
$site = Site::getCurrentSite();
$documentService = new Document\Service();
// undo the changed made by the site detection in self::match()
$originalPath = preg_replace("@^" . $site->getRootPath() . "@", "", $p);
$sitePrettyDocId = $documentService->getDocumentIdByPrettyUrlInSite($site, $originalPath);
if ($sitePrettyDocId) {
if ($sitePrettyDoc = Document::getById($sitePrettyDocId)) {
$this->nearestDocumentByPath = $sitePrettyDoc;
break;
}
}
}
}
}
}
if ($document) {
if (!$ignoreHardlinks) {
if ($document instanceof Document\Hardlink) {
if ($hardLinkedDocument = Document\Hardlink\Service::getNearestChildByPath($document, $path)) {
$document = $hardLinkedDocument;
} else {
$document = Document\Hardlink\Service::wrap($document);
}
}
}
return $document;
}
return null;
}