DLCrumbs с учетом мультикатегорий

Обертка проверяет лежит ли документ в мультикетегориях, если да, то далее смотрит с какого документа пришел пользователь, и если referer есть в мультикатегориях, то строит от него. Если не установлен referer, то строит от первой категории. Если документ не принадлежит к мультикатегории, то строит как обычно. Шаблон текущего документа для MC — tplCurrentMC (без @CODE:). B обязательно нужно указать ownerTPL.

Сниппет DLCrumbsMC
<?php
$mid = $modx->db->getValue('Select `category` from '.$modx->getFullTableName('site_content_categories').' where `doc`='.$modx->documentIdentifier);	
if ($mid){
	$suff = $modx->config['friendly_url_suffix'];
	$u = explode($_SERVER['SERVER_NAME'].'/',$_SERVER['HTTP_REFERER']);	
	$url_reffer = $u[1];
	$url_reffer =  preg_replace('/'.$suff.'$/', '', $url_reffer);	
	if ($url_reffer) {		
		$rid = $modx->getIdFromAlias($url_reffer);	
		if (($rid) && ($modx->db->getValue('Select count(*) from '.$modx->getFullTableName('site_content_categories').' 
		where `doc`='.$modx->documentIdentifier.' and `category`='.$rid))){
			$params['id'] = $rid;
		} else  {
			$params['id'] = $mid;
		}
	}
	$params['showCurrent'] = 1;
	if (($params['tplCurrentMC']) && ($params['ownerTPL'])){
		$params['ownerTPL'] = str_replace('[+crumbs.wrap+]','[+crumbs.wrap+]'.$params['tplCurrentMC'],$params['ownerTPL']);
	}	
}
return $modx->runSnippet('DLCrumbs',$params);

Пример вызова:

[!DLCrumbsMC?
&ownerTPL=`@CODE:
<div class="breadcrumb">
	<ul itemscope itemtype="http://schema.org/BreadcrumbList">
		[+crumbs.wrap+]
	</ul>
</div>`
&tpl=`@CODE:
<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><meta itemprop="position" content="[+iteration+]" />    
	<span itemprop="name">[+title+]</span>    
</li>`
&tplFirst=`@CODE:
<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem" class="home-link">
	<meta itemprop="position" content="[+iteration+]" />
	<a href="[+url+]" title="[+longtitle+]" itemprop="item" class="icon icon-home">Главная</a>
</li>
`
&tplCurrentMC=`				
<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><meta itemprop="position" content="" />    
	<span itemprop="name">[*pagetitle*]</span>    
</li>
`
!]	

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.