Роман

Роман

С нами с 06 октября 2013; Место в рейтинге пользователей: #290
Роман
05 февраля 2020, 18:00
0
Такой результат, но это обновление ресурса, и все равно, видно что menutitle один, а берет pagetitle почему то. Алиас затер и сохранил ресурс. Такой результат.
[2020-02-05 14:55:57] (ERROR @ /home/bmlandin/public_html/ladygincms/core/model/modx/modx.class.php : 1671) [OnDocFormSave]Array
(
    [id] => 135
    [type] => document
    [contentType] => text/html
    [pagetitle] => Тумба для ТВ аппаратуры1
    [longtitle] => 
    [description] => 
    [alias] => tumba-dlya-tv-apparaturyi1
    [alias_visible] => 1
    [link_attributes] => 
    [published] => 1
    [pub_date] => 0
    [unpub_date] => 0
    [parent] => 12
    [isfolder] => 
    [introtext] => 
    [content] => 
    [richtext] => 1
    [template] => 3
    [menuindex] => 4
    [searchable] => 1
    [cacheable] => 1
    [createdby] => 1
    [createdon] => 2020-02-05 13:02:41
    [editedby] => 1
    [editedon] => 2020-02-05 14:55:57
    [deleted] => 
    [deletedon] => 0
    [deletedby] => 0
    [publishedon] => 2020-02-05 13:02:00
    [publishedby] => 1
    [menutitle] => Тумба44
    [donthit] => 
    [privateweb] => 
    [privatemgr] => 
    [content_dispo] => 0
    [hidemenu] => 
    [class_key] => msProduct
    [context_key] => web
    [content_type] => 1
    [uri] => catalog/tumby/tumbyi-dlya-texniki/tumba-dlya-tv-apparaturyi1
    [uri_override] => 0
    [hide_children_in_tree] => 0
    [show_in_tree] => 1
    [properties] => 
    [article] => 
    [price] => 0
    [old_price] => 0
    [weight] => 0
    [image] => 
    [thumb] => 
    [vendor] => 0
    [made_in] => 
    [new] => 
    [popular] => 
    [favorite] => 
    [tags] => 
    [color] => 
    [size] => 
    [source] => 2
    [create-resource-token] => 5e3ad5aec6e295.86174906
    [reloaded] => 1
    [parent-original] => 12
    [ta] => 
    [parent-cmp] => 12
    [syncsite] => 1
    [categories] => Array
        (
        )

    [query] => Поиск
    [ext-comp-1068] => 50
    [tvs] => 1
    [tv34] => 
    [tv49] => не выбрано
    [tv46] => <span>рекомендуем</span> посмотреть
    [tv44] => Array
        (
            [0] => 
        )

    [tv45] => Нет
    [tv48] => Вы смотрели
    [tv47] => Да
    [action] => resource/update
    [resource_groups] => []
    [options] => Array
        (
        )

    [vendor.id] => 
    [vendor.name] => 
    [vendor.resource] => 0
    [vendor.country] => 
    [vendor.logo] => 
    [vendor.address] => 
    [vendor.phone] => 
    [vendor.fax] => 
    [vendor.email] => 
    [vendor.description] => 
    [vendor.properties] => 
)
Так выглядит сейчас плагин

<?php
if ($modx->event->name == 'OnDocFormSave') {
    
    
    if (empty($resource->get('alias'))) {
        if (!empty($resource->get('menutitle'))) {
            $resource->set('alias',$resource->get('menutitle'));
        }
        else {
            $resource->set('alias',$resource->get('pagetitle'));
        }
    }
    $resource->save();
    
    
}

$modx->log(MODX_LOG_LEVEL_DEBUG, print_r($resource->toArray()));
$resource->save(); вынес из IF про alias
Роман
05 февраля 2020, 17:46
0
Почему то не работает проверка empty($resource->get('alias') и когда ресурс только создается и обновляется, не проходит почему то. С этой проверкой плагин перестает работать, берет alias из pagetitle и все.
if ($modx->event->name == 'OnDocFormSave') {
    if (empty($resource->get('alias'))) {
        if (!empty($resource->get('menutitle'))) {
            $resource->set('alias',$resource->get('menutitle'));
        }
        else {
            $resource->set('alias',$resource->get('pagetitle'));
        }
        $resource->save();
    }
}
Роман
05 февраля 2020, 15:01
0
Благодарю! Ошибся, !empty написал, работает. А можно в плагине получить id шаблона ресурса который сохраняем? Просто хочу все это с alias делать только для страниц с определенным шаблоном.
Роман
05 февраля 2020, 14:19
0
А не подскажете, как еще добавить проверку, если alias уже вписан руками, его не менять?
А то если по умолчанию вписываю alias при создании ресурса, он его затирает при сохранении и пишет из menutitle если не пустое, иначе из pagetitle, тут порядок.

Если делаю дополнительную проверку, то все равно не работает
if ($modx->event->name == 'OnDocFormSave') {
    if(!empty($resource->get('alias'))){
    if (!empty($resource->get('menutitle'))) {
        $resource->set('alias',$resource->get('menutitle'));
    }
    else {
        $resource->set('alias',$resource->get('pagetitle'));
    }
    }
    $resource->save();
}
Роман
31 января 2020, 14:34
0
Спасибо, я пока нашел тег do, index убрал и сделал как у вас в первом примере классический счетчик
только через тег do вместо include {do $count++}. А вот второй прикольно! Благодарю.

Но все же не подскажите как это из доков можно применить?
{foreach $list as $value}
 <div>{$value}</div>
{/foreach}

{foreach 1..7 as $value} {* так же хорошо работает и с интервалами *}
 <div>№{$value}</div>
{/foreach}
Роман
28 января 2020, 15:30
0
В итоге foreach не работает с msProducts, но работает с pdoResources. Без чанка пока вывожу так:

{set $products = '!pdoResources' | snippet : [
    'return' => 'json',
    ....
] | json_decode : true}
{foreach $products as $product}
...
{/foreach}
Роман
28 января 2020, 15:28
0
В общем понял в чем дело, работает с pdoResources, не работает просто с msProducts почему то, наверное остановлюсь на pdoResources, задолбался уже. Добавлю where classkey msproducts
Роман
28 января 2020, 15:15
0
та нет у меня вк давно :))
Роман
28 января 2020, 15:02
0
эх, у меня большой кусок HTML что бы так использовать :(
Роман
28 января 2020, 14:56
0
каждый вызов чанка на странице это минус к скорости как мне сказали. А как сделать массивом строку на fenom?
Роман
28 января 2020, 14:48
0
Не понимаю что не так
{set $newproduct = $_modx->runSnippet('!msProducts', [
'parents' => 3,
'includeThumbs' => 'small,mobilesmall',
'showHidden' => 0,
'showUnpublished' => 0,
'limit' => 14,
'tpl' => ''
])}
{foreach $newproduct as $item}
{$item['pagetitle']}+{$item.pagetitle}
{/foreach}

<pre>
{$newproduct | print_r}
</pre>

Print массив распетаывает как надо

Array
(
    [id] => 10
    [type] => document
    [contentType] => text/html
    [pagetitle] => Товар 1
    [longtitle] => Товар 1
    .....
)
Array
(
    [id] => 12
    [type] => document
    [contentType] => text/html
    [pagetitle] => Товар 2
    [longtitle] => Товар 1
    .....
)
Array
(
    [id] => 13
    [type] => document
    [contentType] => text/html
    [pagetitle] => Товар 3
    [longtitle] => Товар 1
    .....
)

Но foreach не работает :(
Роман
28 января 2020, 14:37
0
Так же как и я делал, так не работает, foreach почему то не работает, не понимаю почему. Если распечатать
{$items | print_r}
В массиве все есть как он и сам. Такое ощущение что для forech нужен другой массив, сниппет не возвращает массив в $items {set $items = '!msProducts' | snippet
Роман
28 января 2020, 14:13
0
Вот в том то и дело, запутался )) поэтому сюда и написал.
Роман
28 января 2020, 14:12
0
В логах все есть, все товары и ресурсы, и если массив распечатать все там есть. Но что то не так в синтаксисе foreach
Роман
28 января 2020, 13:13
0
Да по дате публикации просто. Я не указал этот параметр в вызове, но суть не в нем, просто совсем не распечатывает ничего ни один ни другой вызов.
Роман
24 января 2020, 15:19
0
БЛАГОДАРЮ! Точно, добавил
&includeThumbs=`small,mobilesmall`
и пошло все как надо по именам миниатюр {$small} и {$mobilesmall}
Роман
21 января 2020, 19:50
0
К сожалению нет, без скобок пути не правильные, корневой каталог исчезает.
Роман
20 января 2020, 23:08
0
ООООО!!! Супер, благодарю! Так работает, и пути правильно! Круглые скобки, даже не видел таких примеров в Fenom :)