Всего 123 801 комментарий

Роман
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, 22:37
0
наверное, перед генерацией проверять по вхождению — есть или нет уже этот id И если есть, то не генерить.
Алексей Смирнов
07 января 2023, 22:34
+1
в php есть функция microtime ставите в начало фиксируете показания ($asd = mictotime)
И в конце скрипта вычитаете из print $asd — mictorime.
как-то так.
Oleg
07 января 2023, 15:07
0
Всем привет. Как на сниппет ecForm повесить hook? Может сталкивался кто. В AjaxForm такой параметр есть.

'hooks' => 'FormItSaveForm,email,spam, telegramForm',
Константин Ильин
07 января 2023, 14:40
0
Артур подскажи пожалуйста, для этого вызова(из примеров взял) получается надо написать плагин который будет сохранять или хук?
Просто при таком вызове, редактирую fullname сохранить нажал, «Данные сохранены», но они не записались
{'!AjaxFormitLogin' | snippet : [
        'form' =>  'updateProfileForm',
        'snippet' => 'FormIt',
        'hooks' => 'AjaxIdentification',
        'method' => 'update',
        'successMessage' => 'Данные сохранены.',
        'clearFieldsOnSuccess' => 0,

        'validate' => 'email:required:email',
        'validationErrorMessage' => 'Исправьте, пожалуйста, ошибки!',
        'email.vTextRequired' => 'Укажите email.'
        ]}
Роман
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 а я не так силен в нем.