Всего 125 947 комментариев

Роман
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}
Alexey
07 января 2023, 12:15
0
docs.modx.pro/komponentyi/pdotools/parser#%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%BD%D1%8B%D0%B5-%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5

Попробуй $.server['DOCUMENT_ROOT']. Я сам ни разу не использовал, но — судя по мануалу — может сработать
Роман
07 января 2023, 12:08
0
Спасибо, так работает, а на Fenom так нельзя сделать? Без лишних сниппетов?
Alexey
07 января 2023, 11:59
1
0
if ($input && file_exists($path)) {

Делай доп. проверку на пустоту tv -поля
Роман
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'))
Oleg
07 января 2023, 11:44
0
5 В созданном боте ввожу /login_username_password, выдает «Ошибка входа». После ввожу /status. На сайте нажимаю «Начать чат» и все работает. Магия
Alexey
07 января 2023, 11:36
0
Если картинки лежат на этом же сервере, то нужно указывать путь от корня сервера, а не http. А если файлы лежат в удалённом хранилище, то file_exists в этом случае не работает — www.nomostech.it/2022/02/20/checking-if-a-file-exists-on-a-remote-server-with-php/
Роман
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 в браузер то фото открывается легко.
Oleg
07 января 2023, 11:07
0
Пишете, что разобрались. Трудно написать, что именно делали?
Роман
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 выводит, типа файл есть всегда.
Oleg
07 января 2023, 10:33
0
Приветствую. Где именно нужно назначить права?
Роман
06 января 2023, 20:48
0
Да спасибо! Пока сделал с плагином, по номеру шаблона добавляю просто id к alias через дефис, TV с датой пока решил не делать, там массив JSON и нужно только первую запись взять, в общем придется попыхтеть на php а я не так силен в нем.
brioni
06 января 2023, 20:31
0
Такая же хрень. Только понижение версии php до 7.0 спасает
Alexey
06 января 2023, 20:19
1
+1
Привет!

rtfm.modx.com/current/ru/extending-modx/plugins/system-events/ondocformsave

Плагин на это событие не подойдёт?
Alex
06 января 2023, 19:28
0
подскажи пожалуйста, есть два снипета — как проверить их скорость работы на выдачу результата?
Алексей Смирнов
06 января 2023, 19:05
+1
А что тут велосепедить? Просто вырезайте с помощью функции домен и добавляйте нормальный путь как я показал… И получится серверный путь который и нужен.
Алексей Смирнов
06 января 2023, 19:03
0
Вам нужно по сути работать с where параметром msProduct. Сформировать нужные данные.
Но учитывая что вы сегодня только начали вникать, вам нужно поднять много данных.
Тут как бы читать доки для начала и понять что такое сниппет как передавать данные с тв-шек как формировать для сниппетов where с полями из бд…
Дока в верху сайта есть — ссылка. Смотрите пакеты минишопа и pdoTools.