Готовые решения

Виджет "статистика minishop2"


Установка:
1. Загрузить файл в core / components / minishop2 / elements / widgets
2. Открыть Панели / Создать виджет
3. Имя: ms2_stat (или какое хотите).
Тип: файл
Путь к файлу: [[++ core_path]] компоненты / minishop2 / элементы / виджеты / widget.ms2_stat.php
4. Панель / Добавить виджет / ms2_stat (или то что указали в п.3)
Роман Танаев
10 октября 2014, 07:09
modx.pro
16
4 452
+5

Хлебные крошки в админке MODX

<?php
if ($modx->event->name == 'OnDocFormPrerender') {    
	if (!$id = $modx->controller->resourceArray['id']) {
		return;
	}
	$resources = array();
    foreach ($modx->getParentIds($id, 10, array('context' => 'web')) as $parentId) {
		if ($parentId) array_push($resources, $parentId);		
    }    
	natsort($resources);
	$resources[] = $id;
	
	$setting = $modx->getObject('modSystemSetting', 'settings_version');
    $version = explode('.',$setting->get('value'));
    $url = MODX_MANAGER_URL.'/manager/index.php?a=30&id=';
    if($version[1]==3){
        $url = MODX_MANAGER_URL.'?a=resource/update&id=';
    }
	
	$level = 0;
    $childTemplates = '<a style="color: #333;" href="'.MODX_MANAGER_URL.'">Панель</a> <span style="color: #333;">|</span> ';
    foreach ($resources as $resourceId) {
      $resource = $modx->getObject('modResource', $resourceId);
      if ($resourceId == $id) {
          $childTemplates .= '<span style="color: #333;">'.$resource->get('pagetitle').'</span>';
      } else {
          $childTemplates .= '<a style="color: #333;" href="'.$url.$resource->get('id').'">'.$resource->get('pagetitle').'</a> <span style="color: #333;">|</span> ';
      }
      $level++; 
    }

	
	$modx->controller->addHtml('
	<script>'."
		Ext.onReady(function() {		
			var title = Ext.select('#modx-resource-header');
			var pagetitle = Ext.select('#modx-resource-pagetitle');
			
			title.createChild('<p style=\"padding-bottom: 15px;\">$childTemplates</p>');
			pagetitle.on('keyup', function(){
				title.createChild('<p style=\"padding-bottom: 15px;\">$childTemplates</p>');
			});			
		});					
		</script>	
	".'</script>');
	
	return;
}

Update
(15.10.2014) — Добавлена генерация url в зависимости от версии cms.

Исходный код: github.com/tanaevr/BreadCrumbsManager
Роман Танаев
10 октября 2014, 07:03
modx.pro
8
3 721
+8

Yandex карта как TV-параметр.

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

Менеджеры могут вставлять iframe (что удобно для единичного случая), но если таких офисов много?
В общем, я для личного использования сначала написала просто копируемый плагин, а потом запаковала его в компонент (вроде работает все).

При удалении только пишет ошибки) не нашла (или плохо искала) в уроках Василия как при удалении удалять созданные ресурсы (у меня плагин и категория)

ссылка на компонент

PS может кому и пригодится такая штука
yani
08 октября 2014, 11:32
modx.pro
4
1 801
+6

Вывод товаров с определенным цветом

Вывод товаров определенного цвета:
[[!msProducts?
	&parents=`0`
	&innerJoin=`{"Options":{"class":"msProductOption"}}`
	&groupby=`msProduct.id`
	&where=`{"Options.key":"color","Options.value:IN":["Белый","Белая"]}`
]]
Вывод товаров с нужным именем файла-изображения:
[[!msProducts?
	&parents=`0`
	&innerJoin=`{"msProductFile":{"alias":"File","on":"msProduct.id = File.product_id"}}`
	&groupby=`msProduct.id`
	&where=`{"File.name:LIKE":"%IMG_0049%"}`
]]
Не больше 2х LIKE, если не знаешь точного имени:
&where=`{"File.name:LIKE":"%file1%","OR:File.name:LIKE":"%file2%"}`
или сколько угодно в IN, если знаешь:
&where=`{"File.name:IN":["file1.jpg","file2.jpg"]}`
Wassi Wassinen
27 сентября 2014, 18:23
modx.pro
11
4 931
0

Сниппет проверки прав доступа по группам

Простой сниппет для проверки прав доступа, при выполнении которого выводится чанк.

Может пригодится для вывода кнопок редактирования/добавления страницы соответствующим группам (журналисты, модераторы и тд).
+ существует проверка доступа, если авторизованный пользователь = автор страницы.
Razer
25 сентября 2014, 08:50
modx.pro
7
3 088
0

pdoMenu Исправление циклических ссылок

Очередной решения для сео продвижения modx revolution с помощью pdoTools.

Циклические ссылки — это ссылки, направляющие пользователя на ту же страницу, где он находится. Они крайне нежелательны на сайте, поскольку вводят посетителя в заблуждение. Ссылочный вес по таким ссылкам не передаётся и для продвижения они бесполезны.

Если вы установили pdoMenu на главной странице сайта то seo анализ выводи ошибку
На вашем сайте выявлено XX циклических ссылок — страницы ссылающиеся сами на себя

XX это количество урл на меню примеру:

modx.pro
Блоги и Пользователи когда активна страница то код вывода
<li class="active"><a href="https://modx.pro/users/">Пользователи</a></li>
Что открытая страница ссылают сам на себя.
Правильный варианты
1
<li class="active"><a href="https://modx.pro/users/" rel="nofollow">Пользователи</a></li>
2
<li class="active"><a href="#">Пользователи</a></li>
3
<li class="active">Пользователи</li>
За вывод этого кода отвечает
&tplHere=`@INLINE <li[[+classes]]><a href="[[+link]]" [[+attributes]]>[[+menutitle]]</a>[[+wrapper]]</li>`
TITAN-UZ
10 сентября 2014, 15:47
modx.pro
1
5 646
+1

Сниппет получения всех возможных значений TV

Получает список всех возможных значений и обертывает их в тэги

[[!getTvList?name=`название TV`]]
<?
$tv = $modx->getObject('modTemplateVar', array('name' => $name));
$elements = $tv->get('elements');
$element = explode('||', $elements);

$els = array();
$output='';

foreach($element as $e)
{
	list($elName, $elId) = explode("==", $e);
	//$els[$elId] = $elName;
	$output .= '<option value="'.($elId ? $elId : $elName).'">'.$elName.'</option>';
}
return $output;
Автор: modx.pro/users/2430/
Выложено с соглания автора
Николай Загумённов
10 сентября 2014, 13:48
modx.pro
3
1 817
+2

pdoCrumbs Разметка с помощью microdata

Разметка «хлебных крошек» с помощью microdata

Стандартный шаблон pdoCrumbs работает без микродатой чтоб исправит эту надо добавит в шаблон этот код

[[pdoCrumbs? &showAtHome=`0`&showHome=`1` &outputSeparator=``
&tplCurrent=`@INLINE <li><span>[[+menutitle]]</span></li>`
&tpl=`@INLINE <li itemtype="http://data-vocabulary.org/Breadcrumb" itemscope><a href="[[+link]]"  itemprop="url" ><span itemprop="title">[[+menutitle]]</span></a><span>  /  </span></li>`
&tplWrapper=`@INLINE <ul class="breadcrumbs">[[+output]]</ul>`
 ]]
css
.breadcrumbs {float:left; padding:0; margin:0;  border:0;}
.breadcrumbs li {display: inline-table;}
Проверит разметку

Обновил код теперь он валидный на w3
TITAN-UZ
07 сентября 2014, 14:40
modx.pro
12
6 845
+3

Автонумерация алиасов

Этот плагин генерируют алиасов
site.ru/news/1/
site.ru/news/2/

Включите Дружественные URL и Автоматически генирировать псевдоним
Создайте новый плагин событиям OnDocFormSave
<?php
if ($modx->event->name == 'OnDocFormSave') {
	 // Категории
    if (in_array($resource->parent, array(1,2,3,4))) {
        $i = 1;
        $where = array('parent' => $resource->parent, 'alias' => $i, 'id:!=' => $resource->id);
        if ($modx->getCount('modResource', $where) > 0)
        {
            while ($modx->getCount('modResource', $where) > 0)
            {
                $i++;
                $where['alias'] = $i;
            }
        }
        // Устанавливаем алиас
        $resource->set('alias', $i);
        $resource->save();
        // Удаляем из URI суффикс .html
        $uri = preg_replace('@\.html$@', '', $resource->uri);
        // Устанавливаем URI. Пример /catalog/1
        $resource->set('uri', $uri);
        $resource->set('uri_override', 1);
        $resource->save();
    }
}
Автор плагина: Брежнев Иван (vanchelo)
TITAN-UZ
19 августа 2014, 11:31
modx.pro
4
1 544
+2

Ловля ошибок при отправке почты с сайта

Добрый день, сообщество!

Как многим известно, у объекта modUser есть замечательный метод modUser::sendEmail, который позволяет отправлять пользователю письмо буквально в одну строчку. Не надо вручную инициировать службу modPHPMailer, выяснять email пользователя — всё это уже сделали за Вас разработчики MODX в этом методе.

Но есть один недостаток — метод возвращает только булево значение.
Антон Фомичёв
18 июля 2014, 07:57
modx.pro
13
3 444
+10