Роман

Роман

С нами с 06 октября 2013; Место в рейтинге пользователей: #322
Роман
31 декабря 2019, 02:05
0
Нет, это для примера что работает все для ресурсов и с pdoResiurces. Но MIGX TV field_news с параметром date находится в ресурсе с id 1
Роман
31 декабря 2019, 02:03
0
Есть, если я закомvентирую условие where в параметрах, то вернет все записи

$params = array(
	'docid' => 1,
	'tvname' => 'field-news',
	//'where' => $where
	);	
return $modx->runSnippet('getImageList', $params);


Array
(
    [MIGX_id] => 13
    [desc] =>                                           
    [date] => 2019
    [image] => images/slide_news.jpg
    [btn] => PARTICIPATE
    [socialnews] => [{"MIGX_id":"1","link":"https:\/\/twitter.com\/home?lang=ru","simage":"icon\/twitter-social-logotype.svg","title":"Twitter"},{"MIGX_id":"2","link":"#","simage":"icon\/share.svg","title":"Link"}]
    [_alt] => 0
    [_first] => 1
    [_last] => 
    [idx] => 1
    [property.docid] => 1
    [property.tvname] => field-news
)
И так все 4 записи в TV
Роман
31 декабря 2019, 02:01
0
Да мне нужно для MIGX это, а не для папаки с ресурсами, в том то и проблема.
Роман
31 декабря 2019, 02:00
0
Мне кажется, проблема или в формате JSON самого MIGX, так как условие еще раз преобразует в JSON, $where = $modx->toJSON(array($filter)); Или потому что MIGX TV field_news это и есть массив, по нему нужно пробежаться циклом еще раз, и получить поле date (это не формат даты, просто tv с типом текст).
Или проблема в обоих случая и в JSON и в выборке неправильной :)

Если в вышеописанном коде моем, выборку с условием делаю через pdoResources то возвращает массив с нужной записью (есть родитель с id 13, в нем три ресурса у которых в tv date разные значения 2018, 2017, 2019, в примере достаю ресурс с цифрами 2018).
$params = array(
	'parents' => 13,
	'includeTVs' => 'date',
	'where' => $where
	);
return $modx->runSnippet('pdoResources', $params);
Array
(
    [id] => 15
    [type] => document
    [contentType] => text/html
    [pagetitle] => тест 3
    [longtitle] => 
    [description] => 
    [alias] => тест-3
    [alias_visible] => 1
    [link_attributes] => 
    [published] => 1
    [pub_date] => 0
    [unpub_date] => 0
    [parent] => 13
    [isfolder] => 0
    [introtext] => 
    [richtext] => 1
    [template] => 2
    [menuindex] => 0
    [searchable] => 1
    [cacheable] => 1
    [createdby] => 1
    [createdon] => 1577626874
    [editedby] => 1
    [editedon] => 1577630217
    [deleted] => 0
    [deletedon] => 0
    [deletedby] => 0
    [publishedon] => 1577626680
    [publishedby] => 1
    [menutitle] => 
    [donthit] => 0
    [privateweb] => 0
    [privatemgr] => 0
    [content_dispo] => 0
    [hidemenu] => 0
    [class_key] => modDocument
    [context_key] => web
    [content_type] => 1
    [uri] => тест-3
    [uri_override] => 0
    [hide_children_in_tree] => 0
    [show_in_tree] => 1
    [properties] => 
    [tv.date] => 2018
    [idx] => 1
    [link] => 
)
Но если я тоже самое проделаю для getImageList
$params = array(
	'docid' => 1,
	'tvname' => 'field-news',
	'where' => $where
	);	
return $modx->runSnippet('getImageList', $params);
То ничего не возвращает :(
Роман
31 декабря 2019, 01:11
0
Спасибо! Но дело не в самой дате! Это параметр может быть любой. И уже много сам сделал что бы передавать на решение кому либо, хочется самому разобраться. Ваше решение к сожалению тоже не возвращает массив :(
Роман
31 декабря 2019, 00:11
0
Спасибо, решили задачку ниже.
Роман
30 декабря 2019, 14:21
0
ВАМ СПАСИБО, это у меня пока мозгов не хватает. С наступающим!
Роман
30 декабря 2019, 14:13
0
Вот так заменил эту строку,
{set $arr[]}
из за которой белая страница была, на эту
{set $arr = []}
вроде работает и парсеру нравится :)
Роман
30 декабря 2019, 14:07
0
БЛАГОДАРЮ! Заработало, но если убрать первую строку объявление массива {set $arr[]}
Из за нее белая страница, парсер почему то не работает с этим.
Сделал вот так, работает :) Надеюсь без объявление массива не повлияет на ошибки в логах.
{set $rows = json_decode(1 | resource : 'field-news', true)}
{foreach $rows as $idx => $row}
	{if $row.date | in : $arr}{continue}{/if}
	{set $arr[] = $row.date}
	{$row.date | date : "Y"}
{/foreach}
Роман
30 декабря 2019, 13:41
0
Сделал так:
{set $input = json_decode(1 | resource : 'field-news', true)}
{foreach $rows as $idx => $row}
	{if $row.date | in : $arr}{continue}{/if}
	{set $arr[] = $row.date}
	<option value="">{$row.date | date : "Y"}</option>
{/foreach}
Просто не распечатывает ничего, ошибка ушла, страница загрузилась.
Роман
30 декабря 2019, 12:40
0
Спасибо, но никак не хочет работать, белый лист вообще. Я так понимаю должно быть так

{set $arr[]}
{set $input = json_decode(1 | resource : 'field-news', true)}
{foreach $rows as $idx => $row}
	{if $row.date | in : $arr}{continue}{/if}
	{set $arr[] = {$row.date}
	<option value="">{$row.date | date : "Y"}</option>
{/foreach}
Роман
30 декабря 2019, 11:25
0
field-news это tv поле MIGX, так понимаю да, это массив.
Роман
29 декабря 2019, 21:57
0
Спасибо, теперь не выводит Array, но все равно распечатывает одну итерацию:
2019,
Если убрать строку с array_unique то весь список с дублями такой.
2017
2018
2019
2019
2019
Почему только одну 2019 выводит? Если выводит уникальные записи, то должно быть так

2017
2018
2019
Роман
29 декабря 2019, 21:34
0
Да конечно, все включено, распечатывает вот так:
Array
2019
Сам массив и одну итерацию.
Роман
24 декабря 2019, 16:21
0
Если просто, то хочу что-бы хлебные крошки для страницы товара, выводить с УЧЕТОМ МУЛЬТИКАТЕГОРИЙ В КОТОРЫХ он ДОБАВЛЕН :) Наверное так правильно сформулировать.

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

Даже на сайте Василия который создан для примера работы, этого нет, вот посмотрите, показаны товары из КАТЕГОРИИ 2 minishop2.com/catalog/?resource|parent=12
Пройдите на страницу ТОВАРА 2 minishop2.com/catalog/category-3/product-2
И увидите, что в хлебных крошках его реальная категория, КАТЕГОРИЯ 3, а не 2 с которой мы пришли.
Как сделать так что бы в хлебных крошках была виртуальная категория я не знаю :(
Роман
24 декабря 2019, 14:53
0
Нет, к сожалению простые снипеты не работают с мультикатегориями minishop2.
Если вызвать это {$parent | resource: 'pagetitle'} на странице товара, то он просто распечатает pagetitle этого товара, и никак его родителя, а его родитель это контейнер ITEM который неопубликован, это сделано для того что бы все товары были в админке одним списком в одном месте. А в категории они просто присвоены. Физически их там нет, поэтому и парента просто нет. А нужен парент МУЛЬТИКАТЕГОРИИ.

ITEM (скрытый контейнер всех товаров)
-товар 1
CAT1 (категория)
-SUBCAT (этой подкатегории присвоен товар 1)

И если я нахожусь на странице товара 1, хочу получить путь (breadcrumbs) из мультикатегорий
CAT1 > SUBCAT > товар 1, но сейчас получается только ITEM > товар 1.

Но благодаря вашему сниппету от @Василий Наумкин сейчас получилось получить мультикатегорию товара, и плюс родную категорию товара :( но ее думаю смогу минусовать, она не нужна в цепочке,
сейчас так SUBCAT > ITEM. Но это все равно пока не то, нужно CAT1 > SUBCAT > товар 1.

Распечатал массив $rows вашего сниппета и увидел там ключ URI, в который попадает вся цепочка мультикатегорий товара,
Сделал так
foreach ($rows as $row) {
 // $output .= $pdo->getChunk($tpl, $row);
  $output .= $row[uri];
}
Получил это в виде alias: CAT1 > SUBCAT > ITEM
Сейчас застрял на этом, осталось получить pagetitle этих alias, но их нет в массиве :( и убрать из этой цепочки контейнер товаров ITEM. В общем сдвинулся, но не получается пока сделать хлебные крошки из мультикатегорий товаров.
Как получить pagetitle в сниппете от Василия?
И как бы минусовать основного родителя товаров ITEM?
Роман
24 декабря 2019, 13:11
0
@Олег Щавелев БЛАГОДАРЮ! Сейчас получается выводит мультикатегорию, и категорию товара CAT1 / ITEM, думаю как бы ITEM убрать из цикла, это контейнер всех товаров.

Подскажите пожалуйста, а как получить еще родителя мультикатегории? Например если так:
ITEM
-товар 1
CAT1 (мультикатегория)
-SUBCAT (этой мультикатегории присвоен товар 1)

Да я искал, все перерыл, но решения для мультикатегорий + PDOcrumbs нет :(
Роман
24 декабря 2019, 13:00
0
@Олег Щавелев БЛАГОДАРЮ! Подскажите пожалуйста, а как получить родителя мультикатегории? Например если так:

ITEM
-товар 1

CAT1 (мультикатегория)
-SUBCAT (этой мультикатегории присвоен товар 1)

Да я искал, все перерыл, но решения для мультикатегорий + PDOcrumbs нет :(
Роман
20 декабря 2019, 15:33
0
Решили вопрос? У меня та же проблема, pdoMenu не видит мульти товары minishop, [[+children]] не решение для minishop.
Роман
27 ноября 2019, 17:13
0
Поддомены должны создаваться АВТОМАТИЧЕСКИ! ИЗ URL страниц из контейнера с id 15. Но с этим проблем нет, плагин это делает.
Если вы про хостинг панель и руками создавать поддомены, это не вариант.