Николай

Николай

С нами с 09 ноября 2013; Место в рейтинге пользователей: #57
Николай
01 июля 2019, 16:02
0
Ещё как вариант проверить консоль, может js-скрипт какой не правильно работает в админке. Можно прям в исходном коде в админке вбить в поиске:

"source":

Посмотреть какая цифра подтягивается. Собственно источник файлов подменяется кастомным скриптом минишопа. Либо скрипт не отрабатывает, либо на этапе формирования конфига что-то не так. У меня всё как надо всегда было.
Николай
30 июня 2019, 11:42
0
По поводу глюков, бывает, что хостинг подвисает, и тупо не отрабатывает как надо php-скрипты, либо они не отрабатывают из-за каких-то ошибок. Нужно смотреть логи MODX, или логи ошибок сервера, проверять на предмет ошибок 500. Также проверять нет ли ошибок JS в консоли браузера.
Николай
30 июня 2019, 11:33
0
Источник файлов хранится в БД в поле properties в виде json-массива (таблица modx_site_content), и заносится туда при создании товара. Если после создания товара вы измените источинк в системных настройках то в properties от этого ничего не изменится, т.к. при изменении системных настроек никаких скриптов для этого не запускается. Если нужно это сделать, то только через API MODX, пробежаться по всем товарам, достать json из properties, и поменять значение на нужное. Поле properties хранит данные не только minishop2, но и других компонентов, поэтому главное не затереть другие настройки.
Николай
14 июня 2019, 00:32
0
После открывающих фигурных скобок в скрипте метрики расставьте пробелы.
Николай
06 июня 2019, 09:53
+1
Иногда бывает, что и провайдер/сотовый оператор. В частности у tele2 есть такой косяк.
Николай
16 мая 2019, 12:28
0
Каждый блок — независимая вкладка с произвольными полями или даже migx
Вкладка в TV полях? То есть как тут слева?
Николай
16 мая 2019, 11:34
+1
Да, тут есть один нюанс… Суть в том, что можно каждую отдельную MIGX-таблицу обработать, и результат работы записать в плейсхолдер, типа [[+migx1]], [[+migx2]], [[+migx3]]. А в отдельной общей таблице строки это какой-то из этих плейсхолдеров. Переставляем строки — меняется порядок следования блоков на сайте.

Событие OnLoadWebDocument работает до парсинга modx-тегов. Т.е. ещё до того как ресурс обработается можно подмешать к нему плейсхолдеры.

Установить плейсхолдер можно методом
$modx->setPlaceholder($plhName, $plhValue);

Получить данные любого поля ресурса
$modx->resource->pagetitle;
$modx->resource->content;

TV-переменной
$modx->resource->getTVValue($tvName);

То есть в плагине обрабатываем наши таблицы MIGX, и записываем их в плейсхолдер. Пример плагина, который я использовал:
if($modx->event->name == 'OnLoadWebDocument') {

    if(!function_exists('setPlaceHolderToContentBlocks')) {
        function setPlaceHolderToContentBlocks($plName, $tvName, $tplRow, $tplOuter) {
            global $modx;
            
            $tv = $modx->resource->getTVValue($tvName);         
                       
            if($tv) {
                $pdo = $modx->getService('pdoTools');
                
                $tv = $modx->fromJSON($tv);  

                foreach($tv as $props) {
                    $rows[] = $pdo->getChunk($tplRow, $props); 
                }
                
                $rows = implode("\r\n", $rows);  
                $props = array();
                $props['output'] = $rows;
                
                $output = $pdo->getChunk($tplOuter, $props); 
                
                $modx->setPlaceholder($plName, $output);
            }
            
            return true;
        }  
    }
    
    setPlaceHolderToContentBlocks('stages', 'block_stages', 'block_stages_row', 'block_stages_outer');
    setPlaceHolderToContentBlocks('equip', 'block_equip', 'block_equip_row', 'block_equip_outer');    
    setPlaceHolderToContentBlocks('specif', 'block_specif', 'block_specif_row', 'block_specif_outer');    
    setPlaceHolderToContentBlocks('use', 'block_use', 'block_use_row', 'block_use_outer');
    setPlaceHolderToContentBlocks('advant', 'block_advant', 'block_advant_row', 'block_advant_outer');
    setPlaceHolderToContentBlocks('docs', 'block_docs', 'block_docs_row', 'block_docs_outer');
}

Он получает TV типа MIGX, парсит их, и результат записывает в плейсхолдеры. Но тут тебе надо самому попробовать как это работает, я то ещё больше нагородил всего, что сам теперь сходу не разберу)
Николай
15 мая 2019, 12:35
0
Тоже всегда задавался вопросом, почему данные карты я должен вбивать на каком-то левом сайте, а не на сайте сбера, например. Ведь по сути то данные карт могут и владельцы сайтов скомуниздить, ссылаясь потом на снифер и проделки хаккеров. Такие простые мысли приходят мне, но почему-то не приходят тем, кто проектирует эти вещи… Наводит на смутные мысли, что подобные бэкдоры оставляются специально.
Николай
13 мая 2019, 23:36
0
Приветствую. Элегантности тут маловато, скорее наоборот) А так по сути используются обычные возможности компонента MIGX + Fenom. В двух словах тут не расскажешь, поэтому рекомендую почитать отдельно. Вот тут к примеру статья — [MIGX] — Большой и страшный. Знакомство. У Бахи Волкова в профиле есть ещё на эту тему. Есть и другие статьи в интернете и на сайте.
Николай
03 мая 2019, 19:57
0
К примеру мы создали файлик шаблона. Как modExtra позволит прикрепить к нему TV поля? Или придется писать отдельный плагин, чтобы он срабатывал в mgr и прикреплял TV?
Позволю себе вмешаться) modExtra это просто набор скриптов, которые пакуют сниппеты, чанки, файлы, системные настройки и т.д. в пакет, и устанавливают всё это в систему при установке. А также там описывается что нужно сделать при удалении пакета. Я сам недавно начал изучать modExtra, и пришёл к тому, что непонимая что делают конкретные скрипты в modExtra, вслепую смысла нет с этим работать. Поэтому, я решил сделать свой аналог, где каждый блок кода мне будет понятен, что он делает и зачем. Ведь для простой задачи потребуется всего несколько строчек, а какая-то специфическая может вообще не укладываться в рамки modExtra, или надо знать что там закомментить, а что дописать. А у вас похоже проблема в том, что вы запускаете скрипты modExtra, которые проделывают непонятные для вас действия, что приводит к непонятному результату) В справке описаны все методы и приведены примеры скриптов, например xPDOGenerator::parseSchema генерирует модель из xml-схемы. А modExtra просто использует эти скрипты так, как было удобно автору. У вас может быть совсем другая задача, и тогда нужно править исходники modExtra, или своё что-то писать.
Николай
03 мая 2019, 19:32
0
Я воспринимаю компонент, как некий отдельный самостоятельный кусок кода, который решает конкретную задачу.
Я сам ещё пока не специалист в этих делах, но думаю стоит отличать компонент и транспортный пакет. Компоненты хранятся в отдельных папках в core/components и assets/componens, в которых описана модель новых таблиц БД, классы для работы с этими таблицами, которые подключаются к системе. Они имеют своё пространство имён, может быть страничку в админке, логику работы, и т.д… Всё это можно сделать руками и безо всяких modExtra. А транспортный пакет, это по сути набор скриптов, которые позволяют траспортировать компоненты с одного сайта на другой. Но не только компонеты, а всё что угодно — отдельные чанки, сниппеты, системные настройки и т.д. Там можно описать что именно добавить в систему и как при установке. И какие действия проделать при деинсталляции. Т.е. транспортный пакет может вообще не создавать никаких компонентов, а к примеру, тупо прописать в системных настройках почту emailsender и всё. И при удалении ничего не делать вообще. Я так это всё понимаю. Если не прав, поправьте) Хотя с другой стороны пакет это дополнение, а компонент это синоним слову дополнение)) В общем, разница между компонентом, дополнением и пакетом не очевидная…
Николай
01 мая 2019, 14:24
0
А ещё лучше плагин на OnLoadWebDocument

<?php
if($modx->event->name = 'OnLoadWebDocument') {
    $content = $modx->resource->content;
    // тут какие-то действия с $content
    // ......
    $modx->resource->set('content', $content);    // заменяем content ресурса на наше значение
}

Тогда не надо каждый раз сниппет вызывать.
$a и $b писать не обязательно. Можно везде $content вместо них. return в моём примере тоже не нужен.
Николай
28 апреля 2019, 23:23
+1
Форма с необходимыми инпутами делает запрос на какой-то php-скрипт, который производит всю работу. Могу лишь порекомендовать это видео, как грамотно передать данные из фронта в бэкенд. Там уже в процессоре можно писать что угодно, и как угодно обновлять записи в БД, общаться с фронтом и т.д.
Николай
28 апреля 2019, 22:40
+1
Мой вариант работает с таблицей заказов в админке. Т.е., чтобы из этой таблицы значение в БД записывалось. Если речь про всплывающие формы, то там уже надо их тоже кастомизировать. Навскидку не знаю, надо разбираться, сам в этих делах плаваю ещё.
Николай
28 апреля 2019, 14:16
0
Не, код выше не должен работать. Получаете объект класса modResource, и добавляете данные соответственно туда же, а не в modTemplateVarResource, где твшки хранятся. В общем, отдельная таблица — это отдельный класс, который за неё отвечает. Либо вы в существующие таблицы добавляете новые поля, и тогда работаете с привычными классами MODX. Либо создаёте свою таблицу, и тогда нужно проделать действия примерно как тут. То есть сгенерировать модель БД, создать классы описывающие логику, подключить всё это к MODX, т.к. он не в курсе о них. Вариантов как подключить свою таблицу не один. Можно хоть вручную скрипт написать. В конечном счёте, через MIGX, CMPGenerator, modExtra, или как-то ещё, генерация модели происходит с использованием родных методов MODX.
Николай
28 апреля 2019, 01:15
+1
Вот таким простым плагином можно расширить практически любые таблицы MODX — modx.pro/solutions/7037

Но это в бэке. На фронте админки нужно уже с Extjs копаться. Тут уже решения зависят от конкретного случая. Одно из них Илья выше привёл.
Николай
27 апреля 2019, 13:05
0
Недавно совсем делал, должно работать. Ошибок в консоли нет? Доступ к полю через API работат? В системных настройках есть новое поле?
Николай
26 апреля 2019, 15:03
0
Гугл подсказал, что это кеш плагина pdoTools.
Думаю дело не в конкретном плагине, а в любом. У меня мои точно также дублируются. Тоже Open Server, и тоже постоянно этот глюк, в итоге опенсервером пользоваться желание совсем пропало. В связке с MODX то есть.
Николай
25 апреля 2019, 12:48
0
А кто какой modExtra пользуется? Самой первой, или последней?
Николай
20 апреля 2019, 23:20
0
Октябрята молодцы. Рвут и мечут. Я уже даже познал дзен, запилив парочку сайтов на нем ))
И как впечатления? Прям очень интересно)