Игорь

Игорь

С нами с 27 мая 2015; Место в рейтинге пользователей: #360
Александр Туниеков
19 ноября 2019, 20:31
1
+2
1. Отключить 0 (Нет) из выборки
Можно параметры фильтра на mFilter2 передавать с этим фильтрами и без них.
{if true}
    {set $filter = 'parent:grandparents,ms|new,ms|favorite'}
{else}
    {set $filter = 'parent:grandparents'}
{/if}
{'!mFilter2' | snippet : [ 'filters'=>$filter]}
2. Как сгругипировать несколько параметров и обернуть единой оберткой (присвоить единый заголовок оберткой)
&toSeparatePlaceholders Работает так же как и &toPlaceholders, только в раздельные плейсхолдеры попадает еще и filters. Например, если вы укажете &toSeparatePlaceholders=`my.` и &filters=`tv|test,resource|pagetitle` то получите плейсхолдеры [[+my.results]], [[+my.total]], [[+my.tv|test]] и [[+my.resource|pagetitle]].
Выводим в плейсхолдеры и
{if 'my.ms|new' placeholder || 'my.ms|favorite' placeholder}
    <div>
        <h3>You own title</h3>
        {'my.ms|new' placeholder}
        {'my.ms|favorite' placeholder}
    </div>
{/if}
Может конечно решение получше, но мне только такое пришло в голову.
Сергей
14 марта 2019, 16:25
1
0
if ($modx->event->name == 'OnBeforeDocFormSave') {
    $pagetitle = $resource->get('pagetitle');
    $q = array('pagetitle' => $pagetitle);
    if($id) {
    $q['id:!='] = $id;
    }
    $second = $modx->getObject('modResource', $q);
    
    if($second) {
        $modx->event->output("Товар с таким названием уже есть, задайте другое!");
    }
}
Но как я понимаю ресурс все равно создается ведь его видно в админке, как сделать чтобы $resource->save() не выполнялось если ресурс с таким pagetitle уже существует? Нашел «You may also pass a message to the $modx->event->output() function and this will be displayed to the user in a modal pop-up window. If you pass a value here, the page will not be saved!» Ткните плиз, что я упускаю.
Василий Наумкин
25 февраля 2019, 07:23
1
+3
// Если такой зоны еще нет
if (!$object = $modx->getObject('PayPanelDomain', ['zone' => $zone])) {
    // Создаём её
    $object = $modx->newObject('PayPanelDomain');
    // И прописываем уникальный ключ
    $object->set('zone', $zone);
}
// А дальше уже выставляем остальные свойства
// Не важно, создание это новой, или обновление старой записи
$object->set('domain', $domain);
$object->set('whois', '');
$object->set('idn', $idn);
$object->set('groups', '');
$object->set('popular', 0);
$object->set('min', $reg_min_period);
$object->set('max', $reg_max_period);
$object->set('price_retail', $retail_reg_price);
$object->set('price_partner', $reg_price);
$object->set('percent', $procent);
$object->set('advance', $price_procent);
$object->set('price', $price);
$object->set('active', 1);

$object->save();
Подразумевается, что поле zone у PayPanelDomain уникально.
Андрей
07 декабря 2018, 13:35
1
+1
В настройке friendly_alias_restrict_chars_pattern внести в фильтр точку и запустить скрипт через Console:
<?php
$pages = $modx->getIterator('modResource', ['parent:IN' => [0]]);

foreach ($pages as $p) {
  $title = $p->get('pagetitle');
  $alias = $p->get('alias');	
  $alias = $p->cleanAlias($title);
  $p->set('alias', $alias);
  $p->save();
}
Дмитрий
27 октября 2018, 16:06
2
+1
Добрый день!

Я бы делал так (синтаксис fenom):

{$_modx->runSnippet('pdoResources',[
  'parents' => 0,
  'limit' => 0,
  'tpl' => '@INLINE {if $id|resource:"content"}<a href="{$id|url}">{$pagetitle}</a>{else}<span>{$pagetitle}</span>{/if}'
])}
Или просто код шаблона результата:

{if $id|resource:"content"}<a href="{$id|url}">{$pagetitle}</a>{else}<span>{$pagetitle}</span>{/if}
Павел Гвоздь
18 марта 2018, 11:09
1
+2
Я писал в доке, что XPath парсер у либы, которая используется для обработки, кривой. Лучше юзайте RegExp:
/<meta[^>]+og:image['"]{1}[^>]+content=['"]{1}([^>]+)['"]{1}/usi
Павел Романов
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',
]}