Александр

Александр

С нами с 04 июня 2015; Место в рейтинге пользователей: #603

Почему-то modx не добавляет скрипты с помощью regClientScript(), regClientCSS() или regClientStartupScript()

Привет! Давно заметил проблему, но сейчас она прям очень критична.
modx не хочет регистрировать ничего через regClientScript(), regClientCSS() или regClientStartupScript(). Просто ничего не происходит. Причем заметил я это, когда пытался поднять ajax пагинацию через pdoPage. Пробовал отключать все плагины, вдруг какой-то перехват идет. Пытался подключить скрипты через свой плагин и свой сниппет. Ничего не срабатывает. Подскажите, пожалуйста куда можно копать?
Например, простейший плагин на добавляет ничего.
switch ($modx->event->name) 
{ case "OnLoadWebDocument": 
    $modx->regClientCSS('assets/css/style.css');
    $modx->regClientScript('assets/js/script.js');
    break;
}
Тот же эффект, если пытаюсь вызывать в сниппете.
Вообще ни один компонент не добавляет свои скрипты. По крайней мере shopkeeper и pdoPage точно.
Можете подсказать куда копнуть, чтобы это исправить?
Александр
02 июня 2020, 16:16
modx.pro
1 120
0

Вопрос по AjaxForm

Если кому не лень подсказать, пожалуйста помогите. Использую migx чтобы создать динамические поля формы. То есть на разных страницах разное количество полей. Теперь вот вопрос, как сделать так, чтобы значения этих полей отправлять на почту и сделать их обязательными. Я на сейчас сделал так. Перебираю migx с полями формы. Затем составляю список полей для формы и список обязательных полей (в виде просто строки) и потом подставляю это все в AjaxForm

{set $pall = json_decode($_modx->resource.pall, true)}
{set $listQuest = ''}{* список вопросов *}
{foreach $pall as $questions}
  {set $validate = ''}
  {set $idAnswer = $questions.MIGX_id}{* id вопроса *}
  {set $listQuest =  $listQuest ~ '<p><b>{{+quest_' ~ $idAnswer ~ '}}</b>: ' ~ '{{+answer_' ~ $idAnswer ~ '}}' ~ ' (Другое: ' ~ '{{+answer_' ~ $idAnswer ~ '_oth}})'} {* записываем все поля для отправки на почту  получается строка в виде: <b>{{+quest_1}}</b>: {{+answer_1}} и так далее. Это для шаблона письма*}
  {if $questions.required == 1}
      {set $validate = $validate ~ "answer_" ~ $idAnswer ~ ":required,"} {* отмечаем все обязательные поля получается строка в виде: answer_1:required,answer_2:required и тд *}
  {/if}    
{/foreach}
{$_modx->runSnippet('!AjaxForm', [
                            'snippet' => 'FormIt',
                            'form' => 'opros.tpl',
                            'hooks' => 'email, spam',
                            'spamEmailFields'=> 'phone, name',
                            'emailSubject' => 'Опрос с сайта',
                            'emailTo' => $_modx->config.emailto,
                            'emailTpl' => '@INLINE <p>Опрос с сайта</b>
                                            <p>Страница: <b>{{+page}}</b>
                                            <p>Имя: <b>{{+name}}</b>
                                            <p>Телефон: <b>{{+phone}}</b>
                                            <p>Ответы:'
                                            ~ $listQuest,
                            'emailFrom' => 'test@test.ru',
                            'validate' => $validate
                        ])}
Наверное это жуткий костыль. Но в целом все работает. Только вот два вопроса.
Почему-то $validate когда я подставляю, поля не становятся required, хотя сама переменная правильно выглядит, если вручную из прописать, то все норм.
И я не могу проверить заполнено ли поле, поэтому на почту приходят все поля, а хотелось бы как-то проверить заполнено ли поле и отправить только заполненные поля.
А ну и чанк формы самой:
Александр
16 апреля 2018, 06:25
modx.pro
1 089
0

Xlexicon не работает и ломает сайт при удалении

Установил на свежую версию modx компонент Xlexicon.
Если зайти на его страницу в админке, то выходит 500 ошибка, а в логах пишет
(ERROR @ /home/domain.com/public_html/core/xpdo/xpdo.class.php : 644) Could not load class: XlexiconConnectorRequest from classes.xlexiconconnectorrequest.
А если удалить Xlexicon, то ошибка будет воспроизводиться вообще на любой странице сайта и в админке, и на фронте.
Подскажите что можно придумать, чтобы он заработал или удалить его корректно.
Александр
16 марта 2018, 08:49
modx.pro
743
0

Разница между {$pagetitle} и {{+pagetitle}}

Возможно нубский вопрос, но в чем разница вызова переменной и плейсхолдера?

{$_modx->runSnippet('!pdoResources@PropertySet', [
                        'parents' => 0,
                        'tpl' => '@INLINE {$pagetitle}',
                    ])}
ИЛИ
{$_modx->runSnippet('!pdoResources@PropertySet', [
                        'parents' => 0,
                        'tpl' => '@INLINE {{+pagetitle}}',
                    ])}
Александр
12 января 2018, 13:31
modx.pro
739
0

Fenom, вызов сниппета в сниппете

Перехожу на fenom и столкнулся с вопросом, никак не догоню.
Есть вызов phpthumbon с параметрами в pdoPage

{$_modx->runSnippet('!pdoPage@PropertySet', [
        'parents' => 2,
        'tpl' => '@INLINE <img src="{$_modx->runSnippet("!phpthumbon@PropertySet", [
			"input" => "/assets/images/{{+tv.image}}", 
			"options" => "w=255&h=180&zc=1"
			])}" alt="{{+alias}}">',
        'includeTVs' => 'image',
        'limit' => 10
    ])}
Проблема в том что, {{+tv.image}} не передается в phpthumbon и картинка не находится.
Как модификатор, то есть {{+tv.image:phpthumbon='w=255&h=180&zc=1'}}, тоже не получается применить, потому что нужно полный путь получить, а tv.image содержит просто имя файла. Пробовал параметр prepareTvs, с ним тоже полный путь не пишет.
Подскажите, как это решить?
Александр
04 декабря 2017, 15:09
modx.pro
2
3 983
0