и Fenom используются одинарные фигурные скобки { } {$_modx} , {$_modx->resource.id} - вывод id текущего ресурса{$_modx->resource.tv_name} - вывод tv текущего ресурса{$_modx->user} - массив текущего пользователя{$_modx->makeUrl(10)} - ссылка на 10 ресурс{$_modx->config.system_setting} - вывод системной настройки
<style>
{ignore}
body {font-size: 16px; background-color: #000;}
{/ignore}
</style>
Подключение счетчика Яндекс Метрики:
{'<!-- Yandex.Metrika counter -->
<script type="text/javascript" >
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(9999999999, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true,
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/9999999999" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->' | jsToBottom : true}
Если нужно в Head, тогда jsToHead {$_pls}
<!-- Вывод сразу -->
{$_pls['tag.subtag']}
<!-- Или через переменную -->
{var $tv_name = $_pls['tv-name']}
{$tv_name}
Как запустить сниппет в Fenom?
{'!pdoPage' | snippet : [
'parents' => $_modx->resource.id,
'limit' => 5,
'toPlaceholder' => 'result'
]}
{'result' | placeholder}
{'page.total' | placeholder}
{'page.nav' | placeholder}
2 способ:
{$_modx->runSnippet('!pdoPage', [
'parents' => $_modx->resource.id,
'limit' => 5,
'toPlaceholder' => 'result'
])}
{$_modx->getPlaceholder('result')}
{$_modx->getPlaceholder('page.total')}
{$_modx->getPlaceholder('page.nav')}
Если необходимо вызвать pdopage без параметров:
#1 способ
{'!pdoPage' | snippet}
#2 способ
{$_modx->runSnippet('!pdoPage')}
Примеры использования Fenom MODX:
#Устанавливаем id текущей страницы в переменную
{set $id = $_modx->resource.id}
#Условие
{if $id == '1'}
<p>Главная страница</p>
{else}
<p>Не главная</p>
{/if}
Условие IF с использованием тренарного оператора
#Устанавливаем id текущей страницы в переменную
{set $id = $_modx->resource.id}
#Условие
{$id == 1 ? '<p>Главная страница</p>' : '<p>Не главная</p>'}
Перебор с использованием switch/case
{switch $_modx->resource.id}
{case 1}
<p>Главная страница</p>
{case 2}
<p>О компании</p>
{case 3}
<p>Услуги</p>
{default}
<p>Для остальных id</p>
{/switch}
Вывод чанка
{include 'myChank'}
Если не передаете параметры, то вот так
{insert 'myChank'}
Получение значения TV у произвольного ресурса:
*1 - id ресурса
{1 | resource: 'tv_name'}
Вывод MIGX через Fenom для текущего ресурса:
{set $rows = json_decode($_modx->resource.tv_images, true)}
{foreach $rows as $row}
{$row.image}
{/foreach}
Вывод MIGX через Fenom для определенного ресурса:
{set $rows = json_decode(1 | resource: 'tvname', true)}
{foreach $rows as $row}
{$row.image}
{/foreach}
Информация о прозводителе в miniShop2
{$_modx->makeUrl($_pls['vendor.resource'])}
{$_pls['vendor.name']})
{$_modx->getPlaceholder('vendor.name')}
Получение изображения через переменную с точкой ($_pls)
{$_pls["tv.img"] | phpthumbon : "w=300&h=200&zc=1"}
//Без префикса
{$img | phpthumbon : "w=300&h=200&zc=1"}
Получение превью изображений в корзине
{if $product['120x90']?}
<img src="{$product['120x90']}" alt="{$product.pagetitle}" title="{$product.pagetitle}"/>
{else}
<img src="{'assets_url' | option}components/minishop2//web/ms2_small.png"
srcset="{'assets_url' | option}components/minishop2/img/web/ms2_small@2x.png 2x"
alt="{$product.pagetitle}" title="{$product.pagetitle}"/>
{/if}
Модификатор дата
{$_modx->resource.publishedon | date_format:"%d-%m-%Y %H:%M:%S"}
Вывысти текущий год
{'' | date : 'Y'}
Проверка авторизации
{$_modx->isAuthenticated()}
{$_modx->hasSessionContext('web')}
{$_modx->hasPermission('load')}
Получение данных по id (FastField)
{id | параметр : [доп указания]}
{3 | url : ['scheme' => 'full'] : ['param' => 'value']} // генерируем url
{3 | resource : 'my_tv'} // выводим TV поле у ресурса
//Выводим заголовок дедушки
{set $parent_id = $_modx->resource.parent} //Получаем id родителя
{set $grand_parent_id = $parent_id | resource : 'parent' } //Получаем id дедушки
{$grand_parent_id | resource : 'pagetitle'} //выводим заголовок
Создание и расширение базового шаблона
<!doctype html>
<html lang="ru">
<head>
<base href="{'site_url' | config}" />
<title>{$_modx->resource.longtitle} - {'site_name' | config} </title>
</head>
<body>
{insert 'header'}
// расширяем шаблон
{block 'main'}
{insert 'main'}
{/block}
{insert 'footer'}
{insert 'js'}
</body>
</html>
Расширяем шаблон base
// расширяем шаблон
{extends 'template:base'}
{block 'main'}
{insert 'other_main'}
{/block}
конструкции указать чтобы бралось из ресурса 1
{set $rows = json_decode(1 | resource: 'tvname', true)}
{foreach $rows as $idx => $row}
{$row.title}
{$row.description}
{/foreach}
phpthumbon на MIGX IMAGE
{$row.image | phpthumbon : "w=300&h=200&zc=1"}
или
{("uploads/" ~ $row.image) | phpthumbon : 'w=620&h=500&zc=1&f=jpg&q=100'}
Условие IF
#Устанавливаем id текущей страницы в переменную
{set $id = $_modx->resource.id}
#Условие
{if $id == '1'}
Главная страница
{else}
Не главная
{/if}
Узнать количество изображений у товара в miniShop2
{if $files | length > 2}
//что-то там
{else}
//что-то там
{/if}
Скрытие чанка при условии пустого TV
{if $_modx->resource.tags != ''}
{$_modx->runSnippet('pdoResources', [
'parents' => 2,
'limit' => 5,
'tpl' => 'tplArticleSim'
])}
{/if}
Ну или так, если угодно:
{if $_modx->resource.tags != ''}
{$_modx->getChunk('similarArticles')}
{/if}
Или вообще так ):
{if $_modx->resource.tags != ''}
[[pdoResources?
&parents=`2`
&limit=`5`
&tpl=`tplArticleSim`
]]
{/if}
esc (tag) — экранирование HTML и MODX тегов
{'Привет, [[+username]]' | esc}
Источник: docs.modx.pro