Василий Наумкин

Василий Наумкин

С нами с 08 декабря 2012; Место в рейтинге пользователей: #1
Василий Наумкин
12 августа 2015, 07:51
2
+4
Возможность такая есть, хоть и не совсем очевидная:
{if !$snippet = $_modx->cacheManager->get('cache_key')}
    {set $snippet = $_modx->runSnippet('pdoResources', [
        'parents' => 0,
        'tpl' => '@INLINE {$id} - {$pagetitle}',
        'showLog' => 1,
    ])}
    {set $null = $_modx->cacheManager->set('cache_key', $snippet, 1800)}
{/if}

{$snippet}
С одной стороны — нужно самому управлять кэшем, а с другой стороны — можно произвольно задавать параметры кэширования: ключ, время кэширования (в примере полчаса) и т.д.
Посмотреть этот кэш можно в /core/cache/default/.

set $null
при выставлении кэша нужно, чтобы не выводилась 1 при успешной работе $_modx->cacheManager->set.
Василий Наумкин
12 августа 2015, 05:48
1
+1
Вот, проверил — можно даже прямо массивы указывать, безо всяких JSON:
{$_modx->runSnippet('pdoResources', [
    'parents' => 19,
    'depth' => 0,
    'where' => ['isfolder' => 0],
    'showLog' => 1,
])}

Ну а так, автор Fenom предусмотрел тег ignore и пропуск выражений типа { expr } — то есть, с пробелами возле скобок.
Василий Наумкин
11 августа 2015, 21:00
+1
Прям бага-бага!

Документацию к Fenom хоть почитай, что ли.
Василий Наумкин
11 августа 2015, 17:46
+1
Да он и не исчезал. Просто включался только для режима html, а теперь, при установленом pdoTools с включенным Fenom, используется режим smarty.

Разобрался и дописал включение в этом режиме.
Василий Наумкин
11 августа 2015, 10:27
0
А стоимость доставки указывается в свойствах метода доставки.

Лично я против изменения исходников дополнения, но хозяин — барин.
Василий Наумкин
11 августа 2015, 10:22
0
Ты в курсе, что у статуса есть свойства «Фиксирует» и «Итоговый»? Именно они влияют на то, можно ли менять статус, а вместе с ним доставку и оплату у заказа.

То есть, просто убираешь «Итоговый» у нужного статуса и его можно менять:


Ну а пересчёт стоимости гораздо лучше повесить на отдельный плагин, если нужно.
Василий Наумкин
11 августа 2015, 10:10
0
У тебя будет еще масса подобных вопросов, так что советую сразу открывать исходники Tickets и смотреть, как они работают.
Василий Наумкин
11 августа 2015, 09:23
+2
Не может закэшировать системные настройки, понятно. А вот почему — нет.

Проверь права на файлы и директории кэша, может они изменяются кем-то, например скриптом, запускающимся по расписанию.

Бывает подобная ошибка, если от root работает какой-то MODX скрипт через cron — то он пишет кэш под своими правами, и сайт его потом использовать не может.
Василий Наумкин
11 августа 2015, 08:08
+2
Пагинация нужна для облегчения работы сервера и юзера. Объясни заказчику, что сайт может просто физически не вывезти показ 100 страниц за раз.

Покажи пагинация Вконтакте, любых других сайтов. Я такой реализации, как ты описал, даже не видел нигде.

Не всё, что хочет заказчик, возможно сделать. Жизнь вообще несправедливая, как это ни печально.
Василий Наумкин
11 августа 2015, 08:05
0
Места на хостинг хватает? Может, кэш просто некуда записывать, пока всё не почистишь?

Ну и логи нужно смотреть: и движка, и самого сервера.
Василий Наумкин
10 августа 2015, 21:16
0
Если у тебя там свой класс ресурса, то может быть и свой процессор.

А в нём и события, которые вызываются при сохранении.
Василий Наумкин
10 августа 2015, 19:01
0
Событие это работает ровно в одном процессоре — снятия с публикации в контекстном меню админки.

При сохранении ресурса, то есть, при его редактировании, нужно использовать OnBeforeDocFormSave и OnDocFormSave.
Василий Наумкин
10 августа 2015, 16:56
0
Подумаю про параметры по умолчанию, спасибо.

Пока что можно передавать свои переменные прямо при вызове include — смотри документацию Fenom.
Василий Наумкин
09 августа 2015, 22:06
0
Читай внимательнее
{$_modx->resource} — массив (не объект!) с текущим ресурсом
А чуть ниже пример вызова.
Василий Наумкин
09 августа 2015, 21:05
+1
Нет, если настройка pdotools_fenom_modx включена, то переменная {$modx} доступна как и раньше.
Василий Наумкин
09 августа 2015, 15:37
0
В стандартном чанке количество передаётся через скрытый инпут, а что там у тебя на сайте — я не знаю.

Если что — двух инпутов с одним именем в форме быть не может.
Василий Наумкин
09 августа 2015, 08:52
1
+1
Вот, придумал плагин с фиксом на событие OnDocFormPrerender, который не меняет код ни Ace, ни CB:
<?php
$modx->controller->addHtml("<script>
    var config = ace.require('ace/config');
    var acePath = MODx.config['assets_url'] + 'components/ace/ace';
    config.set('basePath', acePath);
</script>");
Теперь, насколько я вижу, всё работает.
Василий Наумкин
09 августа 2015, 08:39
0
Вернул всё как было, а то, выходит, я всё утро занимаюсь бесплатной техподдержкой дорогущего ContentBlocks.

Проблему я тебе описал (CB, зачем-то, пытается использовать файлы стороннего компонента, вместо своих), дальше разбирайтесь с Марком.