Евгений

Евгений

Был в сети 12 июля 2023, 00:21
Заказы не принимаю
0
Как у меня реализовано
1)создана категория с красным цветом
2)в категрии tv со значением color=red(подставить свjи параметры из get)
3)сниппет обертка с разбором гет парамтеров
foreach ($catalog_filter as $param){
$kv = explode('=',$param);
$_GET[$kv[0]] = $_REQUEST[$kv[0]] = $kv[1];
}
0
0
Решил проще, добавил
вывод тэга
<div class="myhard" id="hard-{$id}"></div>
а в него уже на клиенте ждаваскриптом. что то типа на скорую руку.
javascript

$('.myhard').each(function(i,obj) {
            console.log(this.id);
            var s = '<div class="hart">\n' +
                '                        <a class="msfavorites"\n' +
                '                           data-click\n' +
                '                           data-data-list="default"\n' +
                '                           data-data-type="resource"\n' +
                '                           data-data-key="'+this.id.replace("hard-","")+'"\n' +
                '                           data-msfavorites-animation="like.png"\n' +
                '                        >\n' +
                '                            <i class="msfavorites-icon-heart"></i>\n' +
                '                        </a>\n' +
                '                    </div>';
        $(this).append(s);
и все заработало без тормозов
0
Ждет вас разочарование в изменение кэша, а особенно если будите использовать феном в вашей схеме.

Делюсь опытом:

1) для общих страниц используется отдельный контекст, и храните общие страницы там, а подгружаете их в нужные контексты по 404, по алиасу ресурса, причем урлы можно сделать уникальные, чтобы сделать ресурсы максимально непохожими., но стандартная фция формирования url работать не будет в таком случае.

2) для каждого сайта отдельный контекст(можно групировать через отдельную таблицу несколько сайтов на контекст), для этого создал таблицу с урлами откуда потом можно управлять загрузкой и хранить доп параметры, в том числе и настройками конкретного домена.
3)разворачивать можно в отдельном докер контейнере каждый домен отдельно, где в момент подключения вольюма менять фактическое положение кэша на хост машине, в результате чего на уровне контейнера кэш будет изолирован.
4) картинки лучше вынести на отдельные поддомены, чтобы не пложить одинаковые.

Теперь о грусном, это кэш:

как написали выше «contextKey]/resources/[id]» лучше не делать, дело в том что кэш содержит в основном данные ресурса а вашем случае его плодить ненужно.

можно использовать кэш фенома, но он работает довольно скверно и плодит кучу дублей.

смотрел бы в сторону смарти
0
Судя по стэктрейсу

string(810) "#0 /usr/share/nginx/www/core/components/pdotools/model/pdotools/pdotools.class.php(45): pdoTools->setConfig(Array) #1 /usr/share/nginx/www/core/components/pdotools/model/pdotools/pdoparser.class.php(24): pdoTools->__construct(Object(modX)) #2 /usr/share/nginx/www/core/xpdo/xpdo.class.php(1236): pdoParser->__construct(Object(modX), Array) #3 /usr/share/nginx/www/core/model/modx/modx.class.php(719): xPDO->getService('parser', 'pdoParser', '/usr/share/ngin...') #4 /usr/share/nginx/www/core/model/modx/modelement.class.php(566): modX->getParser() #5 /usr/share/nginx/www/core/model/modx/modx.class.php(1673): modElement->getProperties() #6 /usr/share/nginx/www/core/model/modx/modx.class.php(568): modX->invokeEvent('OnMODXInit', Array) #7 /usr/share/nginx/www/index.php(50): modX->initialize('web') #8 {main}"

после события OnMODXInit
0
Неработает, тк в классе pdoTools в setConfig устанавливается
$this->config['useFenomCache'] = $this->modx->getOption('pdotools_fenom_cache', null, false);

До вызова OnHandleRequest

и уже проверка идет в методе fenom
if (!empty($this->config['useFenomCache'])) {

Поэтому установка этого свойства конечно меняет конфиг, но fenom его читает раньше
0
Это очень круто, почитал, думаю стоит изучить и внедрить, но быстро мигрировать тем более на бетта версию не выйдет :(

вообще то что получил сейчас это очень большой кэш в папке default/pdotools, на одну страницу приходится по 2 файла кэша, а с учетом того что у меня много ресурсов, + много виртуальных страниц, весь объем диск съедаю за раз. кэшировать все необходимости нет, только посещаемые страницы. но отключить кэш или принудительно включить не могу. в настройках есть только общая настройка pdotools_fenom_cache, отключив которую кэш не формируется, но и основные страницы работают медленно. Как вариант переписать xpdocachemanager.class.php, но там объект modx не содержит ресурса, и управлять кэшированием например через стандартную настройку ресурса возможности нет.