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

Роман
07 июля 2021, 08:47
0
Попробуй сюда написать. У меня тоже по этой же причине один из сайтов тормозит. Чем больше товаров, и опций, тем дольше идет сохранение.
Станислав
07 июля 2021, 01:17
0
Итак, вернусь. Проблема была в следующем: задания в крон ставились, выполнялись, но при выключении или удалении возникала эта ошибка:
[Crontab] $jobSpec must be crontab compatibile entry
(к слову сказать в слове compatibile ошибка (compatible)). Ввиду того, что дискуссия ни с кем так и не началась, а писать автору мне было стыдно и неловко (т.к. компонент бесплатен и пока что мне нечего предложить взамен), я начал делать диагностику всего. В первую очередь права — как известно многие ПУ, в частности PLESK для крона выдают bash (chroot) или как-то так, только внутри области пользователя. Точнее когда системный пользователь «видит» только в тех пределах, где расположен сайт. Ок, тут расширил права в настройках, чтобы работал путь до php. Но это не повлияло. Я поискал где вообще возникает ошибка и за проверку переменной jobSpec выступают два файла, один из них — CronEntry.php. Вот тут и прятался ответ на задачу.
Добавив в лог ошибок значение переменной
if (!preg_match($regex, $jobSpec, $match)) {
            throw new \InvalidArgumentException($jobSpec.' -> -> -> '.'$jobSpec must be crontab compatible entry');
        }
я обнаружил, что переменная $jobSpec принимает значение MAILTO="" и дальше уже текст ошибки. Я проверяю «список заданий» и вижу, что те задачи, которые я ставил с панели управления сервера напрямую приобретают вид:
MAILTO=""
SHELL="/bin/sh"
*/1 * * * * /-----/php/7.3/bin/php -f 'httpdocs/path/file1.php'
* */2 * * * /-----/php/7.3/bin/php -f 'httpdocs/path/file2.php'
Когда же ставится задача с компонента, то он не прописывает все параметры, а просто
*/4 * * * * /------/php/7.3/bin/php /var/---/---/---.ru/httpdocs/core/scheduler/ControllersLinks/file1.php > /var/---/---/---.ru/httpdocs/core/scheduler/logs/task_id_14_File1.log 2>&1 # 6ounu4
Оказывается, что там (в файле) идет работа регулярного выражения, который берет строку и не понимает эти MAILTO и выдает ошибку.
$regex = '/^\s*(([^\s\#]+)\s+([^\s\#]+)\s+([^\s\#]+)\s+([^\s\#]+)\s+([^\s\#]+))\s+([^\#]+)(?:#(.*))?$/';
Чисто в теории если добавить\поменять\переписать добавив ^[/*0-9a-z] где-то вначале, то он пропустит лишние строчки и считает именно запись задачи. Но к сожалению я не селен в регулярки и изучение примеров ни к чему меня не привели. (а упростив проверку я вовсе «убил» все свои задания (обидно было)). Каюсь, регулярные приложения знать надо. Виню себя и ругаю.
Ну так вот, когда я «зачистил» все свои задачи поставленные напрямую с панели управления vds и добавил их только с панели управления компонента, то все стало работать. И удаление, и выключение, и включение (правда иногда через раз не включается) да и при нажатии на кнопку «список заданий» выводится список без дополнительных параметров.
Поэтому, если автор вдруг это прочитает, то по идее нужно поправить в условии $JobSpec регулярное выражение, чтобы оно пропускало что-то не типичное для себя и забирала исключительно формат классической задачи. Если нет, придется изучать регулярки :-( Так как я боюсь, что возможно нужно будет что-то добавить с панели управления сервера (какие-нибудь ротации или чистки куша) да и не проверил компонент полностью, если прописать в настройках все параметры уведомлений.
Еще раз — компонент классный, одной только проверкой на количество неудачных запусков. Еще раз простите за беспокойство.
Максим
06 июля 2021, 19:48
0
Спасибо. Сразу не подумал, что можно вызвать галерею 2 раза и у каждого вызова задать свой шаблон. Задача решена.
Александр
06 июля 2021, 19:14
0
Никто не сталкивался?
Роман
06 июля 2021, 16:04
0
Возможно не правильно:
<div class="carousel-indicators">[[Gallery? &album=`[[*galleryName]]`  &thumbTpl=`sliderindicators`]]</div>
в шаблоне sliderindicators код следующий:
<button aria-current="true" aria-label="Slide [[+idx]]" class="[[+idx:is=`0`:then=`active`]]" data-bs-slide-to="[[+idx]]" data-bs-target="#carouselExampleIndicators" type="button">
    <span>[[+idx]]</span>
</button>
Максим
06 июля 2021, 15:25
0
Попробую расписать все подробно.
Вот html код самого слайдера:
<div class="container-fluid">
    <div class="row">
<div class="col-lg-12 d-flex justify-content-center p-0">
    <div class="carousel slide" data-bs-ride="carousel" id="carouselExampleIndicators">
        <div class="carousel-indicators">
            <button aria-current="true" aria-label="Slide 1" class="active" data-bs-slide-to="0" data-bs-target="#carouselExampleIndicators" type="button">
                <span>01</span>
            </button>
            --- проблемы с этим блоком
            <button aria-label="Slide 2" data-bs-slide-to="1" data-bs-target="#carouselExampleIndicators" type="button">
                <span>02</span>
            </button>
            <button aria-label="Slide 3" data-bs-slide-to="2" data-bs-target="#carouselExampleIndicators" type="button">
                <span>03</span>
            </button>
            <button aria-label="Slide 4" data-bs-slide-to="3" data-bs-target="#carouselExampleIndicators" type="button">
                <span>04</span>
            </button>
              ------
        </div>
        <div class="carousel-inner">
            [[Gallery? &album=`[[*galleryName]]`  &thumbTpl=`sliderThumbs`]] -- тут вывожу картинки
        </div>
        <button class="carousel-control-prev" data-bs-slide="prev" data-bs-target="#carouselExampleIndicators" type="button">
            <span class="visually-hidden">Previous</span>
        </button>
        <button class="carousel-control-next" data-bs-slide="next" data-bs-target="#carouselExampleIndicators" type="button">
            <span class="visually-hidden">Next</span>
        </button>
    </div>
</div>
</div>
</div>

в шаблоне sliderThumbs код следующий:
<div class="carousel-item [[+idx:is=`0`:then=`active`]]">
    <div class="img-item"><img alt="[[+name]]" class="d-block" src="[[+image_absolute]]" /></div>
</div>
Не знаю как решить проблему с выводом количества индикаторов и выводом индикаторов в цикле
Роман
06 июля 2021, 15:08
0
Не очень понятно, о чем идет речь. Можно просто вызвать:
[[Gallery? &album=`1` &sortby=`rank` &containerTpl=`tpl.gallItem` &thumbTpl=`GalItemThumb`]]
Можете использовать, для обозначения номера картинки:
[[+sort_order]]
Shedko Denis
06 июля 2021, 14:54
0
Огромное спасибо. Работает.
Андрей
06 июля 2021, 14:10
0
дефолтный скрипт работает с галереей fotorama.
Цитата из документации. Соответственно нужно допиливать скрипт под твою галерею.
Баха Волков
06 июля 2021, 13:01
1
0
document.querySelector(любая_кнопка).addEventListener('click', e => {
    e.preventDefault()

    const data = new FormData(форма_фильтров)
    
    // и тут делайте с данными формы что душе угодно
})
Андрей Шевяков
06 июля 2021, 11:01
0
Я в 4м пункте написал.
Этот сниппет, выводится в виде модификатора, чистит строку от ненужных символов, а также заменяет кавычки на кавычки-елочки, которые не сломают вывод.
Алексей Соин
06 июля 2021, 09:33
0
Возможно немного не по теме, но можете подсказать, что при выводе заголовка делает | title?
Роман
06 июля 2021, 09:09
0
Спасибо, перевел все на replace.
Сергей Шлоков
06 июля 2021, 07:55
+1
Скорее всего тег MODX с фильтром stripString перевели в тег Fenom, а фильтр указали как модификатор. Но у Fenom нет такого модификатора из коробки. Вот он и ругается. Используйте вместо stripString модификатор replace.
Сергей Шлоков
06 июля 2021, 06:49
+2
Хватит простого сниппета-обёртки
[[!ShowComments? &allowGuest=`1` &autoPublish=`0` &autoPublishGuest=`0` &allowGuestEdit=`0`]]
А сам сниппет в 1 строчку
return $modx->resource->parent == 236 ? $modx->runSnippet('TicketComments', $scriptProperties) : '';
Alex Zhuravlev
06 июля 2021, 06:18
0
— Авто определение языковой версии сайта при первом его посещении
Работает, определяет, но есть нюансы.
Когда первый раз заходишь на сайт по ссылке site.ru ( язык браузера на eng ) то редирект на EN версию сайта, потом ничего не меняя заходишь второй раз и попадаешь на уже версию RU (или тот язык который по дефолту без контекста)
Но правильнее запоминать язык который определился первый раз или же тот который выбрал пользователь после, то есть если пользователя устроил язык авто определения и он его далее не менял, то все гуд, его и подпихиваем ему в дальнейшем, ну и если он его сам изменил то дальше используем уже измененный.
Автор, есть ли возможность допилить?
Семен
06 июля 2021, 05:24
0
Спасибо большое, все заработало!
Alex Zhuravlev
06 июля 2021, 03:57
0
Очень не хватает удобного интерфейса локализации пользовательского текста как это реализовано в Localizator
Переводить а главное создавать переменные в словаре через стандартные функции modx очень не удобно.
Планируется ли такой функционал в PolyLang?