Александр

Александр

С нами с 05 декабря 2018; Место в рейтинге пользователей: #694

Как отфильтровать ресурсы по количеству значений в tv?

В tv может быть разное количество значений 356||567, 334||332||5351, 854||445||235||67777||5456.
Нужно выбрать ресурсы у которых 3 и больше значений в tv.
Может у кого есть готовое решение?
Александр
04 сентября 2022, 11:45
modx.pro
324
0

Как правильно написать плагин?

Привет. Подскажите, как правильно написать плагин?
Плагин подменяет шаблон под AMP страници по гет запросу modx.pro/help/12866

<?php
$id = $modx->resource->get('id'); // Get current page id
$resource = $modx->getObject('modResource',$id); // Get current object
$template = $modx->resource->template; // Get current page template
if($template == 5 && isset($_GET['amp'])) {
	$modx->resource->set('template', 30); 
}
if($template == 7 && isset($_GET['amp'])) {
	$modx->resource->set('template', 30); 
}
if($template == 6 && isset($_GET['amp'])) {
	$modx->resource->set('template', 30); 
}
if($template == 8 && isset($_GET['amp'])) {
	$modx->resource->set('template', 30); 
} 
$modx->resource->cacheable = false; // Disable cache
Александр
14 марта 2021, 14:48
modx.pro
810
0

[решено] FIND_IN_SET по двум тв полям

Как сделать поиск по двум тв полям?

'where' => [
	"1 = 1 AND FIND_IN_SET("~$person_id ~", replace(first_group, '||', ',')) OR FIND_IN_SET("~$person_id ~", replace(second_group, '||', ','))"


{set $resources = 'pdoResources' | snippet : [
'parents' => $parent,
'returnIds' => '1',
'limit' => '0',
'includeTVs' => 'first_group,second_group',
'where' => [
			"1 = 1 AND FIND_IN_SET("~$person_id~", replace(first_group, '||', ','))",
			"1 = 1 AND FIND_IN_SET("~$person_id~", replace(second_group, '||', ','))"
]
]}
Александр
28 декабря 2020, 22:18
modx.pro
276
0

Выборка ресурсов по значению тв параметра множественный выбор

Нужно сделать выборку ресурсов, значения Тв которых содержит $team. Тв множественный выбор. В тв хранятся id документов, их может быть один или два (разделитель ||).

Мой сниппет находит ресурсы у которых в значении только один id.
Подскажите, как поправить?

<?php
//ид TV по которому нужно сделать отбор ресурсов
$team_home = 19;

//массив для ID ресурсов
$output = array();


// выбираем все TV с ID=19
$tvs = $modx->getCollection('modTemplateVarResource',  array(
      'tmplvarid'=>$team_home
));

//перебираем TV
foreach ($tvs as $tv) {

//если значение нашего TV = $team тогда
if ($tv->value==$team)

//добавляем ID ресурса в массив
$output[] = $tv->contentid;

}

// возвращаем строку где ID ресурсов разделены ,
return implode(',',$output);
Александр
07 мая 2020, 12:52
modx.pro
723
0

Как вывести заголовок выпадающего списка (TvKey)?

Здравствуйте!
Как вывести заголовок выпадающего списка в шаблоне?
Выпадающий список — список стран.
Такой вариант отпадает.
[[*tv_name:is=`australia `:then=`Австралия`]]
Александр
06 апреля 2020, 14:40
modx.pro
1
535
0

Как разбить строку в чанке на массив?

Здравствуйте!
Как разбить строку в чанке на массив?
В тв parametr — список (множественный выбор), разделитель ",".
{set $parametr_string = $_pls['tv.parametr']}
{set $parametr_array = $parametr_string|split}
Получаю
$parametr_string = 33||24
$parametr_array = 33||24
Александр
24 марта 2020, 18:46
modx.pro
608
0

Разбивка документов по категориям?

Здравствуйте!
Подскажите, как поделить документы на группы по категории и поместить их в общий чанк?
Если поместить в чанк второй вызов pdoresources — выводится как надо, но этот вариант создает слишком много запросов.

Основная категория 1
--Категория-1
---Событие-1
---Событие-2
---Событие-3

Основная категория 1
--Категория-2
---Событие-6
---Событие-7

Основная категория 2
--Категория-3
---Событие-8
---Событие-9

Нашел похожее решение у Ильи ilyaut.ru/cheats/a-breakdown-of-the-categories-parents/, но мне нужно документы поместить в общий чанк.

Александр
23 марта 2020, 13:46
modx.pro
312
0

EVAL родитель родителя

Здравствуйте!
Как улучшить этот вызов?

@EVAL 
$parent = $modx->resource->get('parent');

$parent_parent = $modx->runSnippet('pdofield',array('id'=>$parent,'field'=>'parent')); 

if ($parent_parent == 2) {
       $parentid = '19';
}

if ($parent_parent == 3) {
       $parentid = '20';
}

if ($parent_parent == 4) {
       $parentid = '21';
}

$output = $modx->runSnippet('pdoResources',array('parents'=>$parentid,'depth'=>0,'limit'=>0,'sortby'=>'{"id":"ASC"}','tpl'=>'@INLINE [[+pagetitle]]==[[+id]]', 'outputSeparator'=>'||')); 

return $output;
Александр
16 марта 2020, 20:19
modx.pro
789
0

Fenom и оператор in

Здравствуйте!
Помогите решить задачу.

Работает только ключ 3.
ТВ week — чекбоксы, разделитель запятая.
{set $week = $_modx->resource.week}
{(3 in list [$week]) ? "ключ найден 3" : "ключ не найден"}
{(4 in list [$week]) ? "ключ найден 4" : "ключ не найден"}
{(5 in list [$week]) ? "ключ найден 5" : "ключ не найден"}
Если вписать руками 3,4,5 — работают все.
{(5 in list [3,4,5]) ? "ключ найден 5" : "ключ не найден"}
Александр
19 января 2020, 18:35
modx.pro
590
0

pdoResources where по дате в Fenom

Здравствуйте.
Фильтрую события по дате, по умолчанию — сегодня.
[[pdoResources:default=``? 
&parents=`[[+id]]` 
&includeTVs=`start` 
&sortby=`start`
&tpl=`tplEvent`
&where=`["start Like '[[!getUrlParam? &name=`date` &default=`[[*nowdate:default=`now`:date=`%Y-%m-%d%`]]`]]'"]`
&tplWrapper=`tplEvents`]]
Как сделать запрос where в Fenom?
{$_modx->runSnippet('pdoResources', [
'parents' => $id,
'includeTVs' => 'start',
'tpl' => 'tplEvent',
'where' => '{"start:LIKE":"2020-01-12%"}',
'tplWrapper' => 'tplEvents',
 'showLog' => '1',
])}
Если написать дату — события выводятся.
Александр
13 января 2020, 12:38
modx.pro
1 410
0