san4es
С нами с 20 мая 2016; Место в рейтинге пользователей: #1407migx в migx
Господа, доброго времени суток, призываю гуру MODx.
Не могу вывести мигс в мигс. Прошу сильно не ругать так как совсем новичок.
Вот код:
MIGX_TV1
Вызываю вот так:
1 вызов
спасибо!
Не могу вывести мигс в мигс. Прошу сильно не ругать так как совсем новичок.
Вот код:
MIGX_TV1
[
{
"caption": "Заголовок",
"fields": [
{
"field": "id",
"caption": "id Таба",
"inputTVtype": "text"
},
{
"field": "name",
"caption": "Имя Таба",
"inputTVtype": "text"
},
{
"field": "items",
"caption": "товары",
"inputTV":"goods"
}
]
}
]
MIGX_TV2[
{
"caption": "Заголовок",
"fields": [
{
"field": "image",
"caption": "Изображение",
"inputTVtype": "image",
"sourceFrom": "migx"
},
{
"field": "title",
"caption": "Заголовок",
"inputTVtype": "text"
},
{
"field": "description",
"caption": "Описание",
"inputTVtype": "richtext"
}
]
}
]
В самом ресурсе все прекрасно выводится, а на сайте нетВызываю вот так:
1 вызов
[[getImageList? &tvname=`tv` &tpl=`tpl1`]]
2 вызов<div class="tab-pane active" id="[[+id]]">[[getImageList? &tpl=`tpl2` &value=`[[+items]]`]]</div>
На сайт информацию не выводит, но есть возможность добавить «товар» в админке, если после добавления изменить имя в поле «field»: «items», то код выводит.спасибо!
Вариант определения мобильных устройств
Хочу поделиться своей практикой определения типа устройства, будь то мобильный гаджет или компьютер для тонкой настройки CSS и JS.
Сразу хочу уточнить, что данная заметка к MODX особенного отношения не имеет. Это просто JS и CSS, но надеюсь, что все таки будет полезна читателям.
Сразу хочу уточнить, что данная заметка к MODX особенного отношения не имеет. Это просто JS и CSS, но надеюсь, что все таки будет полезна читателям.
Высота блоков в bootstrap ломает верстку
В верстки используется bootstrap. На странице выводиться дочерние документы в виде блоков:
Можно ли решить такими способами?
1) Написать такой вывод по шаблону, чтобы через каждые 3 блока вставлялся код?
[[pdoResources? &parents=`25` &depth=`0` &tpl=`Шаблон &limit=`0` &includeTVs=`Изображение` &tvPrefix=`tv.` &prepareTVs=`1` &processTVs=`1` &includeContent=`1` ]]
<div class="col-md-4">
<a href="[[~[[+id]]]]">[[+Изображение]]</a>
<h2><a href="[[~[[+id]]]]">[[+pagetitle]]</a></h2>
<div class="content">[[+content:ellipsis=`350` :WholeWords]]</div>
<p><span class="date">[[+publishedon:date=`%d.%m.%Y`]]</span></p>
</div>
Проблема в том, что из-за разной высоты блоков ломается верстка. На высоту влияет длина заголовка, но ограничить длину по символам — нельзя.Можно ли решить такими способами?
1) Написать такой вывод по шаблону, чтобы через каждые 3 блока вставлялся код?
<div class="clearfix"></div>
2) Решения на CSS или JS? Адаптация сайта по методике RESS на MODX
Всем привет, сегодня подумал как можно сделать адаптивный сайт на MODX при помощи RESS, для тех кто не в курсе это когда для разных устройств сервер отдаёт разные HTML и CSS, но по одному URL.
Сама эта схема завязана на проверке userAgent браузера, и да я знаю, что в modstore уже есть компонент для определения мобильных версий — MobileDetect, но он работает по принципу — вся вёрстка в одном шаблоне и при рендере страницы он ненужную разметку вырезает.
Я хочу попробовать другой вариант, но мне нужна помощь сообщества —
В общем всё дело происходит при работе с Fenom в pdoTools, в настройках системы есть параметр, задающий папку от куда нужно тянуть шаблоны для ресурсов, вот её я хочу менять на лету в зависимости от userAgent браузера.
Сама эта схема завязана на проверке userAgent браузера, и да я знаю, что в modstore уже есть компонент для определения мобильных версий — MobileDetect, но он работает по принципу — вся вёрстка в одном шаблоне и при рендере страницы он ненужную разметку вырезает.
Я хочу попробовать другой вариант, но мне нужна помощь сообщества —
В общем всё дело происходит при работе с Fenom в pdoTools, в настройках системы есть параметр, задающий папку от куда нужно тянуть шаблоны для ресурсов, вот её я хочу менять на лету в зависимости от userAgent браузера.
Семантически правильныe Breadcrumbs на pdoCrumbs
Верстая очередной проект для замороченных на SEO клиентов, столкнулся с тем, что pdoCrumbs конечно хорош в своей программной логике, но приведенные в документации примеры не совсем верно построены с точки зрения SEO и архитектуры HTML.
Под катом сам код, мои заметки и несколько полезных комментариев.
Под катом сам код, мои заметки и несколько полезных комментариев.
msOrder указать методы оплаты и доставки руками
Как можно указать через параметры какие именно выводить методы оплаты и методы доставки для сниппета msOrder?
Например:
Например:
Rus: [[!msOrder? &delivery=`1,2,3` &payments=`1,2,3`]]
Eng: [[!msOrder? &delivery=`4,5,6` &payments=`4,5,6`]]
Вывод заказов пользователя и товаров заказа
Нужна была возможность вывода заказов клиента и товаров в этих заказах. Велосипедов много, мой один из них.
1) Снипет для вывода заказов:
2) Снипет вывода товаров заказа:
Писал потому как, во первых учусь писать, во вторых быстрее написать чем искать подходящее решение и допиливать его. Буду рад советам и исправлениям. Пригодились бы советы по поводу:
1) сырого SQL:
1) Снипет для вывода заказов:
<?php
// снипет выводит заказы текущего пользователя
$user_id = $modx->user->get('id');
$tpl = $modx->getOption('tpl',$scriptProperties,'tpl.order');
// подхватываем заказы текущего пользователя
$q = $modx->newQuery('msOrder', array('user_id' => $user_id));
$results = $modx->getCollection('msOrder', $q);
// выводим или чанками или предупреждением что заказов пока нет
foreach ($results as $result) {
if ( $result ) {
$resultArray = $result->toArray();
$output .= $modx->getChunk($tpl,$resultArray);
} else {
$output = 'У вас пока еще нет заказов.';
}
}
return $output;
и соответственно чанк tpl.order (на феноме):<div>
<div> Заказ <span>{$_pls['num']}</span> от <span>{$_pls['createdon']}</span> года</div>
<div>
{$_modx->runSnippet('!msOrdersProducts', ['order'=>$_pls['id']])}
</div>
</div>
2) Снипет вывода товаров заказа:
<?php
// выводит товары заказа.
$tpl = $modx->getOption('tpl',$scriptProperties,'tpl.order_cell'); // если товар найден
$tpl_empty = $modx->getOption('tpl',$scriptProperties,'tpl.order_cell_empty'); // если товар не найден
// ищем товар по id заказа
$q = $modx->prepare("SELECT * FROM ".$modx->getOption('table_prefix')."ms2_order_products WHERE order_id=".$order);
$q->execute();
$results = $q->fetchAll(PDO::FETCH_ASSOC);
$output;
// перебором либо выводим нужный заказ, либо оповещаем что его уже нет
foreach ($results as $result) {
$res = $modx->getObject('modResource', array('pagetitle'=>$result[name]));
if ($res) {
$resArray = $res->toArray();
$output .= $modx->getChunk($tpl,$resArray);
} else {
$prodName = $modx->setPlaceholder('name', $result[name]);
$output .= $modx->getChunk($tpl_empty);
}
}
return $output;
и соответственно чанк tpl.order_cell (на феноме):<div>
<span><a href="{$id | url}">{$pagetitle}</a></span>
<span>{$price} Р</span>
</div>
и чанк в том случае если товара уже нет tpl.order_cell_empty:<div>
<span>{$_pls['name']}</span>
<span>не найден</span>
</div>
Писал потому как, во первых учусь писать, во вторых быстрее написать чем искать подходящее решение и допиливать его. Буду рад советам и исправлениям. Пригодились бы советы по поводу:
1) сырого SQL:
$q = $modx->prepare("SELECT * FROM ".$modx->getOption('table_prefix')."ms2_order_products WHERE order_id=".$order);
$q->execute();
$results = $q->fetchAll(PDO::FETCH_ASSOC);
2) Первоначально хотел все в первом снипете вывести вот тут (далее в коде), но не получилось. Если кто подскажет буду рад.// выводим или чанками или предупреждением что заказов пока нет
foreach ($results as $result) {
// думал тут подхватить товары, но что с ними дальше так и не придумал...
if ( $result ) {
$resultArray = $result->toArray();
$output .= $modx->getChunk($tpl,$resultArray);
} else {
$output = 'У вас пока еще нет заказов.';
}
}
Всем успехов. fenom в чанках писем компонентов FormIt+AjaxForm
Добрый день, Народ!
Пробую вывести плейсхолдеры в чанках писем через fenom, но результат — пусто.
В настройках pdoTools — выставлены настройки обрабатывать чанки и страницы, а так же разрешен MODX объект.
По-моему раньше это работало без проблем, правда, уже не могу найти пример.
Подскажите каким образом обработать чанк письма с помощью fenom?
Пробую вывести плейсхолдеры в чанках писем через fenom, но результат — пусто.
В настройках pdoTools — выставлены настройки обрабатывать чанки и страницы, а так же разрешен MODX объект.
//пробую так
<p>Телефон: [[+phone_number]]</p> //Отлично работает
//Пробую так
<p>Телефон: {$phone_number}</p>//Пусто
//Пробую так
<p>Телефон: {$_modx->getPlaceholder('phone_number')}</p>//Пусто
//Пробую так
<p>Телефон: {$modx->getPlaceholder('phone_number')}</p>//Пусто
//Проверяю работу fenom
{$modx->placeholders|print}//Всё отлично работает
Вопрос, почему fenom не может получить плейсхолдеры формы, а обычный парсер MODX без проблем?По-моему раньше это работало без проблем, правда, уже не могу найти пример.
Подскажите каким образом обработать чанк письма с помощью fenom?
Номер телефона miniShop2 в профиль пользователя
Добрый вечер!
Нужно при оформлении заказа брать номер телефона из msOrderAddress и записывать его в профиль пользователя.
Написал такой плагин, но номер телефона записывается совсем не тот…
На этом этапе в переменную попадает id заказа, а не пользователя:
Нужно при оформлении заказа брать номер телефона из msOrderAddress и записывать его в профиль пользователя.
Написал такой плагин, но номер телефона записывается совсем не тот…
<?php
switch ($modx->event->name) {
case "msOnCreateOrder":
$msUserId = $msOrder->get('user_id');
$msAddress = $modx->getObject('msOrderAddress',$msUserId);
$msPhone = $msAddress->get('phone');
$user = $modx->getObject('modUser',$msUserId);
$profile = $user->getOne('Profile');
$profile->set('phone', $msPhone);
$profile->save();
break;
}
На этом этапе в переменную попадает id заказа, а не пользователя:
$msUserId = $msOrder->get('user_id');