Всего 114 313 комментариев

Сергей Шлоков
17 января 2022, 06:46
+1
Ну тут он будет полезен новичкам, или если нашёл где то решение в интернете или в документации, а там родной синтаксис, быстро его перевёл.
Хотел бы я посмотреть на такого новичка. Уверен, такого не найдётся.

Ещё раз повторю — феном имеет смысл использовать только ради его функциональных возможностей. Простая смена синтаксиса вызовов чанка или сниппета не только лишние затраты по времени, но и негативно сказывается на производительности сайта.
Сергей
16 января 2022, 21:56
0
Добрый день.
Не подскажете, как сделать вывод изображений в RSS, добавленных в статьи через плейсхолдеры [[+ms2g.1]], [[+ms2g.2]]..?
Чанк:
[[!pdoResources?
	&parents=`11`
	&class=`modResource`
	&loadModels=`ms2gallery`
	&tpl=`test4567.tpl`
	&leftJoin=`{
		"Image": {
			"class": "msResourceFile",
			"on": "modResource.id = Image.resource_id AND Image.parent = 0 AND Image.rank = 0"
		},
		"Thumb": {
			"class": "msResourceFile",
			"on": "Image.id = Thumb.parent AND Thumb.path LIKE '%big%'"
		}
	}`
	&select=`{
		"modResource": "*",
		"Image": "Image.url as image",
		"Thumb": "Thumb.url as big"
	}`
	&showLog=`1`
	&limit=`0`
	&groupby=`modResource.id`
]]
В итоге:
— Если вызвать без шаблона, то изображения в статье будут выглядеть так:
[[+ms2g.1]]
[[+ms2g.2]]
— Если добавить изображения в ресурс RSS (во вкладке Галерея), то они будут выводиться во всех статьях.
А нужны изображения статей.
Сергей
16 января 2022, 21:52
0
Всем привет, не могу подружить с MiniShop.
Добавил properties в ms2_order_address_fields.
Добавил в msOrder {$_modx->runSnippet('!utmMark')}.
На странице оформления заказа в форме вижу метки, но в админке в заказе поля properties не появляются.

Подскажите, куда смотреть?
Misha Bulic
16 января 2022, 20:59
0
Ну тут он будет полезен новичкам, или если нашёл где то решение в интернете или в документации, а там родной синтаксис, быстро его перевёл.

У Fenom больше возможностей. Например, в параметрах можно указать число, массив, сделать конкатенацию. Также различные управляющие конструкции. Этого нет в MODX синтаксисе.
Ну тут всё таки односторонний конвертер из стандартного в феном, так что это не проблема
Viktor
16 января 2022, 19:56
0
Снипет сделал таким
<?php
if(!$dt){
    $dt = date('Y', strtotime(date('Y-m-d')));
    $dt = "$dt-1-1";
} else {
    $dt = "$dt-1-1";
}

if($next == '1'){
    $dt = date("Y-m-d",strtotime ( '+1 year' , strtotime ( $dt ) )) ;
}
return strtotime($dt);
Вызов такой как писал выше Артур
{"publishedon:>=": [[!timestampToUnixTime? &dt=`[[!#GET.news-year]]` &next=`0`]], "AND:publishedon:<=": [[!timestampToUnixTime? &dt=`[[!#GET.news-year]]` &next=`1`]]}
В целом засунул это в плагин и по хэшу сортирую без перезагрузке страницы через pdopage.
Как сделал через плагин и pdopage и без перезагрузке вот ссылка на пасте бин там код pastebin.com/AuA5Rrt6
Andrew
16 января 2022, 18:59
0
Идея была, чтоб при необходимости можно было новичкам в чате ссыль давать.)
Сразу в одном месте, все по теме)

Про цвет, это так))
Aleksandr Huz
16 января 2022, 18:41
+3
Привет, Василий!

Меня смущает один момент, если такие компоненты начнут плодить, то это будет ужас! Нарушается общая стилизация и админка будет похожа на франкенштейна. С одной стороны круто, что можно на vue сделать, но с другой стороны каждый автор будет использовать свои стили и менеджер зайдя в админку будет в недоумении.

На сколько я понял, это статья для тех кто не хочет связываться с ExtJS но очень нужно сделать на MODX, таких я думаю, что очень мало здесь. Но все же спасибо за статью!

Да вот беда, там всё на xPDO и ExtJS, которые я совершенно забыл и вспоминать нет желания. Что же делать?
Отдать задачу разработчикам, которые работают с MODX. Компонент легкий, здесь любой автор должен был его осилить. Так сделал бы я, если не хотел бы возвращаться в прошлое, к старым технологиям. Тем более, что заказчик не против открытого кода, это мог бы быть бесплатным хорошим компонентом.
Viktor
16 января 2022, 16:10
0
сменил company на другое слово заработало
Николай Савин
16 января 2022, 16:10
-1
Это не мой код, это Ваш код.
Я лишь подсказал как его на феном переписать. Мелкие нюансы
Василий Наумкин
16 января 2022, 16:01
0
Спасибо, поправил ссылки!
Viktor
16 января 2022, 15:53
0
Заработало НО, может быть я туплю, но всего есть 3 ресурса, ваш код сортирует только по названию «industry», по названию «company» вообще не сортирует, но стоит поставить, 2 ресурса(И ПРИЭТОМ поле должно быть типом тэг) одного значения всё сортирует. Или если будет 2 новости company и 1 новость industry он будет сортировать и выводить только industry. Если поставлю два ресурса industry то оно выводит два ресурса industry а company игнорирует, со стандартным шаблонизатором таких проблем нет.
{'!pdoPage' | snippet : [
   'parents' => $_modx->resource.id,
   'showHidden' => 1,
   'limit' => 8,
   'depth' => 1,
   'level' => 1,
   'showLog' => 1,
   'ajaxMode' => 'default',
   'sortby' => ['parent' => 'ASC', 'menuindex' => 'ASC'],
   'includeTVs' => 'img,newsType',
   'templates' => '7',
   'where' => ['newsType:LIKE' => '%' ~ $.get['sortNewsType'] ~ '%'],
   'tpl' => 'newsTpl'
]}
PG
PG
16 января 2022, 15:39
+1
Спасибо за статью!
Но вот большинство ссылок на исходники недоступны.
Николай Савин
16 января 2022, 15:27
+1
Здоров отец! Давно не виделись, всегда рад почитать!
Николай Савин
16 января 2022, 15:21
+1
Вы здесь наткнулись сразу на две проблемы

В этой строке не нужны фигурные скобки, запускающие феном, так как вы и так внутри феном конструкции
'where' => ['news-type:LIKE' => '%{$.get.news-type}%'],

Но если убрать фигурные скобки — то тоже ничего хорошего не получится
'where' => ['news-type:LIKE' => '%$.get.news-type%'],

Здесь уже другая проблема — нельзя писать феном конструкции внутри кавычек.
Здесь нужно соединить строки с % и get конструкцию через конкатенацию
Вот так
'where' => ['news-type:LIKE' => '%' ~ $.get.news-type ~ '%'],
И тут еще третья проблема, связанная с правилами именования переменных. Проблема с дефисом. В PHP нельзя использовать дефис в именах переменных. А вот в массиве ($.get это ведь массив) можно.
Пожалуй вот такая конструкция должна отработать корректно

'where' => ['news-type:LIKE' => '%' ~ $.get['news-type'] ~ '%'],
Viktor
16 января 2022, 15:16
0
Сколько не пытался использовать вот это не работало
$_modx->resource.id
поэтому поставил [[*id]], вот эта запись выдаёт белую страницу
'where' => ['news-type:LIKE' => '%{$.get.news-type}%'],
Николай Савин
16 января 2022, 15:01
0
Проблема не в fenom.
Если уж начали переводить вызов сниппета на другой синтаксис — то очень желательно делать это полностью.
Избавляйтесь от JSON строк внутри, от вложенных MODX тэгов
Примерно вот так должна выглядеть ваша конструкция
{'!pdoPage' | snippet : [
   'parents' => $_modx->resource.id,
   'showHidden' => 1,
   'limit' => 8,
   'depth' => 1,
   'level' => 1,
   'showLog' => 1,
   'ajaxMode' => 'default',
   'sortby' => ['parent' => 'ASC', 'menuindex' => 'ASC'],
   'includeTVs' => 'img,news-type',
   'templates' => '7',
   'where' => ['news-type:LIKE' => '%industry%'],
   'tpl' => 'newsTpl',
]}
Я не проверял — но это корректная запись — это как минимум первый шаг к нормальной работе кода.

Вот такая конструкция пишется вот так
[[!#GET.news-type]]
{$.get.news-type}
И это выстрел себе в ногу — нельзя использовать нефильтрованные параметры в SQL запросах. Это прямая дорога к SQL инъекциям.
Futuris
16 января 2022, 14:52
0
В настоящее время импорт остатков с компонентом msImportExport происходит по ID товара. А возможно ли настроить ваш копонент таким образом, чтобы msImportExport в режиме «Импорт msProductRemains» импортировал остатки по Артикулу?

Viktor
16 января 2022, 14:49
0
Довольно странно проблема была в fenom сменил на стандартный шаблонизатор, и всё заработало, пздц потратил 4 дня(
[[!pdoPage:default=`<h1>Ничего не найдено.</h1>`?
  &parents=`[[*id]]`
  &limit=`8`
  &depth=`1`
  &ajaxMode=`default`
  &tpl=`newsTpl`
  &pageLimit=`7`
  &sortby=`{ "parent":"ASC", "menuindex":"ASC" }`
  &where=`{ [[!WhereGen? &tv=`news-type` &sign=`LIKE` &get=`sort-type` &value=``]] }`
  &includeTVs=`img,news-type`
  &ajaxElemWrapper=`#pdopage`
   &ajaxElemRows=`#pdopage .rows`
  &ajaxElemPagination=`#pdopage .pagination`
  &ajaxElemLink=`#pdopage .pagination a`
 ]]