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

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

С нами с 03 марта 2014; Место в рейтинге пользователей: #43
Павел Романов
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 -->
Павел Романов
21 ноября 2017, 20:10
0
Параметр фильтрации:
[[pdoResources?
&tvFilters=`tvname==%Хирург%`
...
]]

Как вставлять в вызов слово «Хирург» зависит от реализации каталога. Если есть страница с таким pagetitle, то на ней так:
&tvFilters=`tvname==%[[*pagetitle]]%`

Если через GET-запрос (page.html?doctor=Хирург), то так:
&tvFilters=`tvname==%[[!#GET.doctor]]%`

В Collections есть кнопка «Открыть», которая открывает следующий уровень (если речь об этом):
Павел Романов
21 ноября 2017, 11:10
1
+1
Э… Вам же тут ответили ))

Давайте еще разок.
Допустим, нужно вывести новости. В контексте ru родитель новостей имеет ID 6, в en — 15, в de — 32
Жмете правой кнопкой по контексту ru и выбираете «Редактировать». Открываете вкладку «Настройки контекста». Создаете там параметр page_news со значением 6.
В английском создаете такой же параметр со значением 15, в немецком — с 32.
Теперь, если вы пропишете где-нибудь в шаблоне [[++page_news]] или (на Fenom) {$_modx->config.page_news} на фронте в зависимости от контекста будет выводиться 6, 15 или 32.

Ну а дальше — дело техники:
[[pdoResources?
	&parents=`[[++page_news]]`
	&depth=`1`
	&hideContainers=`1`
	&resources=`-27,-28`
	&showUnpublished=`1`
	&includeContent=`1`
	&includeTVs=`imageTpl,dateAwards`
	&tvPrefix=``
	&sortby=`{"menuindex":"asc"}`
	&tpl=`ItemAwardsModal`
]]

Или на Fenom:
{'pdoResources' | snippet : [
	'parents' => $_modx->config.page_news,
	'depth' => 1,
	'hideContainers' => 1,
	'resources' => '-27,-28',
	'showUnpublished' => 1,
	'includeContent' => 1,
	'includeTVs' => 'imageTpl,dateAwards',
	'tvPrefix' => '',
	'sortby' => '{"menuindex":"asc"}',
	'tpl' => 'ItemAwardsModal',
]}
Павел Романов
16 ноября 2017, 11:31
+1
Выше решение ))
Там без подобных условий:
{if $_modx->context.key == 'eng'}
...
{/if}

Значения подтягиваются автоматом из настроек конкретного контекста.
Я там только в начале опечатался, сорри. Должно быть так:
{var $news = $_modx->config.pg_news}
<div class="content__item content__item2">
    <a href="{$_modx->makeUrl($news)}" class="content__heading content__heading--2">{'gg_invest' | lexicon}</a>
	<a href="{$_modx->makeUrl($news)}" class="content__heading-a">
		<p>{$news | resource : 'introtext'}</p>
	</a>
	<span class="content__more2"> {'gg_more' | lexicon}</span>
	<a href="{$_modx->makeUrl($news)}" class="content__more"> {'gg_more' | lexicon}</a>
</div>
Павел Романов
15 ноября 2017, 18:00
+1
Сделайте у контекстов настройки, куда прописывайте ID соответствующего раздела у данного контекста:
pg_catalog = 2
pg_news = 4
и т. д.
Тогда можно будет сделать так:
{var news = $_modx->config.pg_news}
<div class="content__item content__item2">
    <a href="{$_modx->makeUrl($news)}" class="content__heading content__heading--2">{'gg_invest' | lexicon}</a>
	<a href="{$_modx->makeUrl($news)}" class="content__heading-a">
		<p>{$news | resource : 'introtext'}</p>
	</a>
	<span class="content__more2"> {'gg_more' | lexicon}</span>
	<a href="{$_modx->makeUrl($news)}" class="content__more"> {'gg_more' | lexicon}</a>
</div>
Павел Романов
01 ноября 2017, 23:51
+1
Можно попробовать через VirtualPage или сделать плагин с использованием sendForward, что позволяет открывать нужную страницу, не изменяя URL и даже с сохранением полей.
Павел Романов
26 октября 2017, 18:46
+1
Скорее всего страница корзины снята с публикации.
Павел Романов
23 октября 2017, 12:05
+1
Указываете прямо во «вкладках формы»:
"fields":[
        {
          "field":"image",
          "caption":"Изображение",
          "inputTVtype":"image",
          "sources":[
            {
              "context":"web",
              "sourceid":2
            }
          ]
        }
.........

Или через конфигурацию:
Павел Романов
20 октября 2017, 20:45
+1
Если дело только в классе, то помечать и в pdoResources без проблем. И menutite выводить тоже:
<a href="[[+uri]]" class="[[*id:is=`[[+id]]`:then=`active`]][[*parent:is=`[[+id]]`:then=`active`]]">
	[[+menutitle:default=`[[+pagetitle]]`]]
</a>

А через pdoField можно вообще всю цепочку пометить )).

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

PS
Кстати, про MIGX Вы зря. Если нужно сделать меню, абсолютно не привязанное к дереву, с произвольными анкорами, порядком, индивидуальным видом пунктов, настраиваемым выводом подменю, да при этом еще и легко управляемое из админки, то MIGX — именно то, что нужно.
Павел Романов
20 октября 2017, 20:01
0
Если Вам нужно меню с определенными ресурсами, почему именно на pdoMenu свет клином сошелся?
Можно вообще на MIGX сделать и добавлять, что угодно и в каком угодно порядке )).
Павел Романов
20 октября 2017, 19:52
0
Сделайте pdoResources:



Результат:
Павел Романов
20 октября 2017, 19:37
0
Проверил у себя — все пашет.
Структура и вызов:


Результат: