Павел Романов

Павел Романов

С нами с 03 марта 2014; Место в рейтинге пользователей: #43
09 мая 2018, 15:45
+1
Сделайте рендер через renderChunk:

[
{"header": "Изображение", "width": "150", "sortable": "false", "dataIndex": "img","renderer":"this.renderChunk", "renderchunktpl":"<img src=\"[[+img]]\" width=\"100\">"},
{"header": "Содержимое alt изображения", "width": "160", "sortable": "true", "dataIndex": "alt"},
{"header": "Описание преимущества", "width": "160", "sortable": "true", "dataIndex": "title"}
]

Только если в TV img у Вас используется источник файлов с каким-то своим путем, то укажите его перед [[+img]].
05 апреля 2018, 10:44
0
Сделайте сниппет, который будет пробегаться по юзерам, получать ДР и, если день/месяц совпадают с текущим, то слать письмо.
Поставьте CronManager и запускайте каждое утро.
03 апреля 2018, 18:55
+1
Можно просто в чанке стандартными тегами прописать:
<!-- Google Tag Manager for [[++http_host]] -->
<script>
 (function(w,d,s,l,i) { 
	w[l]=w[l]||[];
	w[l].push( { 
		"gtm.start": new Date().getTime(),event:"gtm.js" 
	 } );
	var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!="dataLayer"?"&l="+l:"";
	j.async=true;j.src="https://www.googletagmanager.com/gtm.js?id="+i+dl;
	f.parentNode.insertBefore(j,f);
  } ) (window,document,"script","dataLayer","[[++GoogLeTagManagerID]]");
</script> 
<!-- End Google Tag Manager -->
24 марта 2018, 19:24
0
Попробуйте некешированный плейсхолдер и я бы убрал шаблон в чанк:
[[!getImageList?
&tvname=`album-photo`
&limit=`20`
&tvname=`album-photo`
&docid=`[[!+album-land]]`
&tpl=`grid-item`
]]

Либо формируйте вызов в самом сниппете, заодно можно упростить:
<?php
//Получаем рандомный ID
$input = array();
foreach ($modx->getIterator('modResource', array('parent' => 12, 'deleted' => false, 'published' => true)) as $resource) {
	$input[] = $resource->get('id');
}
$i = array_rand($input, 1);

// Вызываем getImageList
$out = $modx->runSnippet('getImageList', array(
	'limit' => 20,
	'tvname' => 'album-photo',
	'docid' => $input[$i],
	'tpl' => 'grid-item'
));

// Помещаем вызов в плейсхолдер "album"
$modx->setPlaceholder('album',$out);
return;

Ну а на странице:
[[!getChildsOne]]

<div class="tab-content" id="myTabContent">
	<div class="tab-pane fade show active" id="land" role="tabpanel" aria-labelledby="home-tab">
        	<!-- галерея masonry -->
        	<div class="grid">
                    [[+album]]
                </div>
	</div>
</div>
23 марта 2018, 20:12
+1
Попробуйте sortby оставить пустым:
[[!pdoPage?
    &tpl=`popCat__item`
    &context=`catalog`
    &parents=`11,4`
    &resources=`[[*popCat__list]]`
    &templates=`2`
    &limit=`12`
    &includeTVs=`[[*popCat__list]]`
    &sortby=``    
]]
16 марта 2018, 11:15
+1
Смотрите лог ошибок. Скорее всего у Вас на странице где-то есть фигурные скобки (например, в каком-нибудь JS).
Добавьте там пробел после открывающей. То есть было "{", будет "{ ".
16 марта 2018, 10:54
0
getResources тут не при чем.
Удалите его, поставьте pdoTools и включите системную настройку «Использовать Fenom на страницах»
(pdotools_fenom_parser).
13 марта 2018, 18:15
+1
Вот тут пути решения: modx.ru/novosti-i-stati/article/212/
Ваш случай — третий.
17 февраля 2018, 11:33
+1
А если так:
[[!pdoPage?
    &parents=`8`
    &tpl=`itemsListTpl`
    &includeTVs=`customTV1,customTV2,customTVN,imgsItem`
]]

И так (кстати, там у Вас, я так понимаю, опечатка — путаница в тегах):
<div class="item">
	<a href="[[~[[+id]]]]">
		[[getImageList? 
		&value=`[[+tv.imgsItem]]`
		&limit=`1`
		&tpl=`migx_image`
		]]
	</a>
	<div class="info">
		<a href="[[~[[+id]]]]"><h3>[[+pagetitle]]</h3></a>
		<span>[[+tv.customTV1]]</span>
                <span>[[+tv.customTV2]]</span>
                <span>[[+tv.customTVN]]</span>
	</div>
</div>
17 февраля 2018, 11:21
0
Попробуйте сделать отдельным чанком:
<div class="item">
  <a href="[[~[[+id]]]]">
     [[getImageList?
     &tvname=`imgsItem`
     &tpl=`migx_image`
     &limit=`1`
     &docid=`[[+id]]`
     ]]
  </a>
  <div class="info">
  <a href="[[~[[+id]]]]"><h3>[[+pagetitle]]</h3></a>
    <span>[[+tv.customTV1]]</span>
                <span>[[+tv.customTV2]]</span>
                 <span>[[+tv.customTVN]]</span>
    </div>
  </a>
</div>
</div>

Чанк migx_image:
<img src="[[+image]]" alt=""/>
31 января 2018, 21:04
2
0
Можно на простых ресурсах.
Категории, к которым привязывать — просто через TV с типом «Множественный выбор».
Возможные значения формировать таким образом, чтобы при отметке получались ID через какой-нибудь разделитель.

Например, у категорий шаблон с ID = 5. В возможных значениях у TV пишете:
@EVAL return $modx->runSnippet('pdoResources',array(
'parents'=>15, // ID родителя категорий
'templates' => 5,
'limit'=>0,
'sortby'=>'{"pagetitle":"ASC"}',
'tpl'=>'@INLINE [[+pagetitle]]==#[[+id]]#',
'outputSeparator'=>'||'
));

Называете эту TV categories. У ресурсов выбираете, где выводить.

Вывод же в самой категории через tvFilters:
[[pdoResources?
&tvFilters=`categories==%#[[*id]]#%`
.....
]]

А комменты можете через TicketsComments к любому ресурсу прикрутить.
22 января 2018, 17:05
+1
Можете с в скрипте, которым забираете файл подключить API и реализовать любую нужную MODX-логику.
Можете написать сниппет и запускать его через CronManager.
07 декабря 2017, 14:07
+1
Для начала переименуйте директорию assets.

У меня пару раз были (сопоставил по времени access-лог и лог mail-сервера) массовые обращения к assets/components/office/action.php
Переименовал assets — все прошло )) Видно кто-то целенаправленно долбит Office. То же самое, теоретически возможно и с Login.

Только не забудьте после переименования переписать пути в core/config/config.inc.php
Ну и потестируйте — в некоторых дополнениях assets явно задан (например, в JS-скрипте Shopkeeper).
03 декабря 2017, 16:14
0
Ключ или привязка к Modstore не менялись?
24 ноября 2017, 14:51
0
Да, прошу прощения, ошибся ):
<?php
$child = $modx->getCount('modResource', array('parent'=>$modx->resource->get('id')));
$parent = $modx->resource->get('parent');

if($parent != 0 || $child > 0) {
	$modx->setPlaceholder('section_start', '<section id="main" class="three-fourths column-last">');
	$modx->setPlaceholder('section_end', '</section>');
	return $modx->getChunk($tpl);
}
24 ноября 2017, 12:19
0
Можно так:
<?php
$child = $modx->getCount('modResource', array('parent'=>$resource->get('id')));
$parent = $resource->get('parent');
if($parent != 0 || $child > 0) 
	$modx->setPlaceholder('section_start', '<section id="main" class="three-fourths column-last">');
	$modx->setPlaceholder('section_end', '</section>');
	return $modx->getChunk($tpl);
}

Шаблон:
<!-- begin content -->
        <section id="content" class="container clearfix">
        	<!-- begin page header -->
            <header id="page-header">
            	<h1 id="page-title">[[*pagetitle]]</h1>
            </header>
            <!-- end page header -->
        	
            [[Sidebar? &tpl=`sidebar`]]
            
            <!-- begin main content -->
            [[+section_start]]
    	    [[*content]]
	    [[+section_end]]
    </section>
    <!-- end main content -->
    </section>
<!-- end content -->
24 ноября 2017, 11:59
0
Попробуйте сделать сниппет Sidebar:
<?php
$child = $modx->getCount('modResource', array('parent'=>$resource->get('id')));
$parent = $resource->get('parent');
if($parent != 0 || $child > 0) return $modx->getChunk($tpl);

В шаблоне:
<!-- begin content -->
        <section id="content" class="container clearfix">
        	<!-- begin page header -->
            <header id="page-header">
            	<h1 id="page-title">[[*pagetitle]]</h1>
            </header>
            <!-- end page header -->
        	
            [[Sidebar? &tpl=`sidebar`]]
            
            <!-- begin main content -->
            <section id="main" class="three-fourths column-last">
    [[*content]]
    </section>
    <!-- end main content -->
    </section>
<!-- end content -->


Чанк sidebar:
<!-- begin sidebar -->
	<aside id="sidebar" class="one-fourth">
		[[$widget.navigation]]
	</aside>
<!-- end sidebar -->