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

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

Был в сети 30 июля 2026, 15:23
Заказы принимаю
Нет. Если Вам нужно получить pagetitle по id, в любом случае придется PHP-скрипт использовать, а это и есть сниппет ))

MODX устанавливается чистым как раз для того, чтобы можно было собрать ту систему, которая Вам нужна, и где бы не было ничего лишнего.
Поставьте пакет pdoTools, что как раз и обеспечит 99% нужного функционала стандартного сайта.
Значения полей любого ресурса (как и TV-параметров) можно вывести с помощью сниппета pdoField из пакета pdoTools.
В случае с названием (pagetitle) достаточно этого:
[[pdoField? &id=`ID_ресурса`]]
Если значение другого поля, то:
[[pdoField? &id=`ID_ресурса` &field=`имя_поля`]]
Добрый день.
Замечательный компонент, спасибо.
Только заметил, что в moddevtools.class.php в районе 389 строки url в хлебных крошках формируется:
'url' => '?a=30&id=' . $parent->get('id')
Это работает в REVO 2.2.*, но в 2.3.* должно быть по-другому:
'url' => '?a=resource/update&id=' . $parent->get('id')
Тут уже нужно писать сниппет, который будет также брать значения из GET и в результате выстраивать их в строчку вида:

price==значение,area==значение

то есть что-то типа:

<?php
$price = $_GET['price'];
$area = $_GET['area'];

if($price != '') {
  $price = "price==$price,";
} 

if($area != '') {
  $area = "area==$area,";
} 

$output = "$price$area";
return mb_substr($output, 0, -1);

Ну и в вызове уже:

&tvFilters=`[[!getGet]]`
Во-первых, назовите поле в форме:
...
<select name="price">
<option>2000</option>
<option>2500</option>
</select>
...
Потом сделайте сниппет getGet типа:
<?php
return $_GET['price'];
Ну и в вызове:
&tvFilters=`price==[[!getGet]]`
Но я бы еще проверку сделал на наличие чего-нибудь в GET и всякие htmlentities прописал.
Практически всегда второй вариант.
Только условия прописываю так:
[[$[[*id:is=`1`:then=`bloсk1`]]]]
То есть условие выводит не весь чанк, а только его имя. А дальше оно уже выводится в тег.
Где-то читал, что так быстрее, поскольку MODX, даже при невыполнении условий сначала парсит все варианты, а потом выбирает нужный. Тут же он, в случае невыполнения условия, выведет только пустой чанк:
[[$]]