Роман

Роман

С нами с 06 октября 2013; Место в рейтинге пользователей: #290
Роман
07 января 2023, 22:51
0
Это первое что сделал, но это неверный подход, не работает почему-то, я хочу попробовать получить символы в конце строки до дефиса, и их сравнить с id страницы, если есть такое и сравнивается значит id уже висит на конце и ничего не делаем, сейчас все равно добавляет id при каждом нажатии на кнопу сохранить. Получается такая лажа tur-29-29-29

else {
   // existing resource was updated
    if ($resource->get('template') == 2) {
        
        
         if (!empty($resource->get('alias'))) {
             if ($resource->get('alias') != $resource->get('pagetitle').'-'.$resource->get('id')) {
               $resource->set('alias',$resource->get('alias').'-'.$resource->get('id'));
               $resource->save();
             }
        }
    
    
    }
}
Роман
07 января 2023, 14:05
0
Через плагин вроде разобрался, но при каждом обновлении добавляет id в конце alias, блин, получается ерунда типа tur-29-29-29 как это пофиксить?

Использую так
<?php
if ($modx->event->name == 'OnDocFormSave') {
    
if ($mode == 'new') {
    // resource created
    if (!empty($resource->get('alias'))) {
            $resource->set('alias',$resource->get('alias').'-'.$resource->get('id'));
            $resource->save();
        }else{
            $resource->set('alias',$resource->get('pagetitle').'-'.$resource->get('id'));
            $resource->save();
        }
}
else {
   // existing resource was updated
    if ($resource->get('template') == 2) {
  
         if (!empty($resource->get('alias'))) {
            $resource->set('alias',$resource->get('alias').'-'.$resource->get('id'));
            $resource->save();
        }else{
            $resource->set('alias',$resource->get('pagetitle').'-'.$resource->get('id'));
            $resource->save();
        }
    
    }
}
}
Роман
07 января 2023, 13:27
0
В общем, сделал так, работает! Пришлось правда сделать сниппет substr что бы обрезать лишний каталог и слеш на конце из строки пути сервера, а так все норм, но заморочено.

{if (file_exists($_modx->runSnippet("substr", ["input" => $_modx->config.assets_path])~$el.id | resource: 'photo')) AND $el.id | resource: 'photo'}
<img src="{$el.id | resource: 'photo' | pthumb : 'w=660&h=412&zc=1&q=90'}" alt="{$el.pagetitle}"/>
{/if}
Роман
07 января 2023, 12:08
0
Спасибо, так работает, а на Fenom так нельзя сделать? Без лишних сниппетов?
Роман
07 января 2023, 11:53
0
Пока получилось только через сниппет, но все равно криво
Сниппет такой
$path = $_SERVER['DOCUMENT_ROOT'].$input;
if (file_exists($path)) {              
    echo $path. ' файл есть';
} else {
    echo $path. ' файла нет';
}
Но если поле TV с рисунком пусто $input понятно пуста, то он возвращает ФАЙЛ ЕСТЬ потому что $_SERVER['DOCUMENT_ROOT'] путь возвращает :( задолбался
Роман
07 января 2023, 11:45
0
Да спасибо, это уже понял, погуглил как работает file_exist но не пойму как указать путь от корня сервера в этой конструкции? if(file_exists($el.id | resource: 'photo'))
Роман
07 января 2023, 11:16
0
Хотя, думаю проблема в другом, написал сниппет простой

<?php
//$protocol = (!empty($_SERVER['HTTPS']) && 'off' !== strtolower($_SERVER['HTTPS'])?"https://":"http://");
//return $protocol. $_SERVER["SERVER_NAME"];

$path = $input;
//$path = 'http://'.$_SERVER["SERVER_NAME"].$input;
if (file_exists($path)) {              
    echo $path. ' файл есть';
} else {
    echo $path. ' файла нет';
}
Выводит всегда файла нет почему то, даже если такой путь /assets/theme/media/images/tour/img-20221023-140026.jpg или полный с http скормить, все равно файла нет :( не понимаю почему он не видит файлы? Если скопировать url в браузер то фото открывается легко.
Роман
07 января 2023, 11:00
0
Спасибо, а как это использовать в шаблоне на fenom?

Так не работает, ошибка {if(file_exists($el.id | resource: 'photo'))}1{else}2{/if}. Добавил пробел после if так ошибки нет {if (file_exists($el.id | resource: 'photo'))}1{else}2{/if} но не работает конструкция, всегда 2 выводит, типа файл есть всегда.
Роман
06 января 2023, 20:48
0
Да спасибо! Пока сделал с плагином, по номеру шаблона добавляю просто id к alias через дефис, TV с датой пока решил не делать, там массив JSON и нужно только первую запись взять, в общем придется попыхтеть на php а я не так силен в нем.
Роман
06 января 2023, 13:07
0
Супер, благодарю, для пользователя конечно будет жутковато таким способом копировать JSON массив, но это лучше чем набивать руками для каждого ресурса по 20 одинаковых строк.
Роман
06 января 2023, 12:14
0
Есть и вручную и через конфиг, но если есть какой то способ копировать контент из одного tv в другой, сделаю как нужно.
Роман
25 ноября 2022, 20:43
0
Он считает итерации, толку от этого нет, а мне нужно из массива достать параметр published и посчитать сколько таких параметров равны 1
Роман
25 ноября 2022, 20:01
0
Не могу получить количество $item.published равных 1 таким способом
Роман
25 ноября 2022, 19:04
-1
Не понимаю, это просто счетчик. $count_pub. Я пытаюсь как то узнать сколько в массиве параметров published равных 1
Роман
11 сентября 2022, 14:19
0
Спасибо, default_media_source помогло, источников много создано, с этим порядок, но вот если кликнуть на иконку рисунка в визуальном редакторе, он открывает источник Filesystem то есть корень со всеми системными папками, и юзер начинает туда грузить фотки и выбирать оттуда, а это некрасиво и беспорядок. Теперь ок, прописал папку image в default_media_source и стало как надо.
Роман
11 сентября 2022, 12:14
0
Приветствую, а как установить источник файлов папку при загрузке изображений? А то смотри в корень сайта при выборе изображения.
Роман
19 июня 2022, 23:26
0
К сожалению так не получается, пробовал, все сложнее, второй foreach не выводит ничего,

{set $photo_collection = json_decode($item.id | resource : 'photo_collection', true)}
  {if $photo_collection}
     {foreach $photo_collection as $item}
        
        {foreach $item.collection as $el}
            {$el.image}
        {/foreach}
    
     {/foreach}
  {/if}
Если вывести из первого foreach $photo_collection
То такой массив там, и я хочу вытащить оттуда collection, в нем лежат изображения в формате json похоже, и вот это не получается
Array
(
    [0] => Array
        (
            [MIGX_id] => 1
            [colorName] => NERO / BLACK 
            [vendor] => L20085401
            [colorMarker] => black
            [collection] => [{"MIGX_id":"3","image":"2SoAetNZ.jpeg"},{"MIGX_id":"4","image":"5A3zbEBs.jpeg"},{"MIGX_id":"5","image":"5cy9U9im.jpeg"},{"MIGX_id":"1","image":"b2-G7nbg.jpeg"},{"MIGX_id":"2","image":"aR0FzIGA.jpeg"}]
            [collection_view_ro] => {"MIGX_id":"1","name":"chunk_photo_collection","use_as_fallback":"","value":"","clickaction":"","handler":"","image":"","idx":0,"_renderer":"this.renderChunk","selectorconfig":""}
            [_this.value] => 
            [collection_view] => 
        )

    [1] => Array
        (
            [MIGX_id] => 2
            [colorName] => BORDEAUX-FLUO ORANGE
            [vendor] => L20085414
            [colorMarker] => orange
            [collection] => [{"MIGX_id":"3","image":"Ryz-untQ.jpeg"},{"MIGX_id":"4","image":"-pXqJOEi.jpeg"},{"MIGX_id":"5","image":"H-7gDmzj.jpeg"},{"MIGX_id":"1","image":"AqeGW2OA.jpeg"},{"MIGX_id":"2","image":"8ElOkJNA.jpeg"}]
            [collection_view_ro] => 
            [_this.value] => 
            [collection_view] => 
        )

    [2] => Array
        (
            [MIGX_id] => 3
            [colorName] => Желтый
            [vendor] => L20085460
            [colorMarker] => neon
            [collection] => [{"MIGX_id":"1","image":"s_1c59AU.jpeg"},{"MIGX_id":"2","image":"2bvVS8Wo.jpeg"},{"MIGX_id":"3","image":"gkEqimIE.jpeg"}]
            [collection_view_ro] => 
            [_this.value] => 
            [collection_view] => 
        )

    [3] => Array
        (
            [MIGX_id] => 4
            [colorName] => Синий
            [vendor] => L20085408
            [colorMarker] => blue
            [collection] => [{"MIGX_id":"1","image":"1LIor5rA.jpeg"},{"MIGX_id":"2","image":"Y6geSNls.jpeg"},{"MIGX_id":"3","image":"J6SpPwLQ.jpeg"},{"MIGX_id":"4","image":"TXS7Rdsk.jpeg"}]
            [collection_view_ro] => 
            [_this.value] => 
            [collection_view] => 
        )

)