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

Василий Столейков
17 мая 2022, 07:57
0
2. ajaxLogin — платный и из-за смерти автора он более недоступен.
Может я пропустил информацию об этом, но всё равно печально слышать такие новости, я про смерть автора…
Артур Шевченко
16 мая 2022, 22:01
0
Если шаблон в файле можно получить содержимое файла file_get_contents(). Если в БД, можно получить $modx->getObject('modTemplate', $templateId); Но Роман задал хороший вопрос: зачем тебе содержимое шаблона до парсинга?
Артур Шевченко
16 мая 2022, 19:17
0
Я ради критики сюда это и выкладываю. Иначе сложно понять, где я косячу. Жаль что, подробные разборы моего кода бывают редко, но это объяснимо. С миру по нитки что-нибудь сошью)))
Aleksandr Huz
16 мая 2022, 19:11
0
Не ошибается тот, кто ничего не делает.
Рад, что нормально воспринимаешь критику.
Артур Шевченко
16 мая 2022, 19:08
+1
Спасибо, действительно забыл в заголовке про Ajax. И потрачу больше времени и сделаю компонент.
Сергей
16 мая 2022, 18:22
0
Восклицательный знак в плейсхолдере [[!+photo:default=`/assets/photouser/default.jpg`]] оказался лишним. Без него работает.
Но странно что так [[!+photo]] работает.
Aleksandr Huz
16 мая 2022, 16:03
+2
3. AjaxForm+Register — я так делал, способ простой, но грубый.
Теперь есть сложный и еще грубее, поздравляю!

Умный в гору не пойдет, умный гору обойдет!
Какая-то непонятная инструкция, какие-то непонятные манипуляции с исходниками. Только из статьи понятно, что это ajax регистрация/авторизация, а должно быть в заголовке.

Советую потратить побольше времени и сделать нормальный компонент.
Роман
16 мая 2022, 10:20
0
Если правильно понял:
Можно поместить контент в отдельный чанк, и вызывать OnChunkFormRender.
Если нужно чтобы уже вся страница создалась, то вызов OnWebPagePrerender

А так что вы хотите сделать? Какая конечная цель?
Александр Мельник
16 мая 2022, 08:50
0
время ответа сервера не идеально, но не критично.
Я использую такую блочную систему только если руководство требует ручного управления блоками на странице. Это нужно далеко не везде, чаще всего макеты страниц статичны.
Артур Шевченко
16 мая 2022, 00:47
0
Если нужна будет помощью, обращайся, чем смогу помогу.
Алексей Смирнов
15 мая 2022, 23:22
0
А мне вот тож сдать еще проект и допилить более четкую инструкцию.
Потому как в твоем решении я увидел еще один сигнал об удобстве управления контентом.
В общем, учитывая кол-во появляющихся «хотелок» то развитие тем, конструкторов очень даже интересная и востребованная тема.
Будем ее развивать. Хочется использовать готовое решение в доль и поперек, а не только как сборка-modx (не буду называть сайты которые это предлагают). :)
Артур Шевченко
15 мая 2022, 22:30
0
Лёш, чес слово, я найду время потестить твой доп, щас проект доделаю и найду)))
Артур Шевченко
15 мая 2022, 22:29
0
Ты так и не сказал, если блоков много время ответа сервера не страдает?
Vladimir
15 мая 2022, 20:22
0
Пробовал так
switch ($modx->event->name) {
case 'OnWebPageComplete':
//Получаем доступ к готовому DOM дереву
$output = $modx->resource->getContent();
$modx->log(1, output );
break;
}

Но получаю не полностью сам контент страницы, а часть покрайней мере так в консоли, видел в консоле 1 вызов [[++settings_version]]

То есть какой-то сжатый кусок, сама страница дефолтная от установки modx'a, но получаю сжатый такой кусок в таком виде. Сохранил вывод с
$modx->resource->getContent();
в файл.

<p>You have successfully installed MODX Revolution [[++settings_version]]!</p>
<p>Now that MODX is installed you can login to the manager to create your templates, manage content and install third party extras to add functionality to your website.</p>
<h2>New to MODX?</h2>
<p>Pages on a MODX site are called <a href="https://docs.modx.com/current/en/building-sites/resources">Resources</a>, and are visible on the left-hand side of the manager in the Resources tab. Resources can be nested under other resources, making it easy to create a tree of resources. There are different types of resources for different use cases.</p>
<p>Building your website is done through a combination of <strong>Templates</strong>, <strong>Template Variables</strong>, <strong>Chunks</strong>, <strong>Snippets</strong> and <strong>Plugins</strong>. Collectively these are known as <strong>Elements</strong>, and can also be found in the left-hand side of the manager, in the Elements tab.</p>
<p><a href="https://docs.modx.com/current/en/building-sites/elements/templates">Templates</a> contain the outer markup of any page. Each resource can only be assigned to a single template at a time. By adding <a href="https://docs.modx.com/current/en/building-sites/elements/template-variables">Template Variables</a> to a template, you can add custom fields for any resource using that particular template.</p>
<p>With <a href="https://docs.modx.com/current/en/building-sites/elements/chunks">Chunks</a> you can share parts of the markup, such as a header, across different templates. <a href="https://docs.modx.com/current/en/building-sites/elements/snippets">Snippets</a> are pieces of PHP that return dynamic content, such as summaries of other resources or the current date. With snippets, you will often use Chunks to mark up the pieces of content it returns, instead of mixing the PHP and HTML.</p>
<p>Finally, <a href="https://docs.modx.com/current/en/extending-modx/plugins">Plugins</a> enable more advanced features by hooking into the extensive events system provided by MODX.</p>
<p>To learn more about MODX, be sure to check out the <a href="https://docs.modx.com/current/en/getting-started">Getting Started</a> section in the official documentation.</p>
А это получается что я получаю именно контент самого ресурса а не контент шаблона перед рендером
Alexey
15 мая 2022, 19:22
0
Получается, что так. Но с другой стороны, почему всегда стопроцентно загружаются всё поля, когда кликаешь тут — skrinshoter.ru/s/150522/s76QqLsq? Ещё одна непонятка.
Роман
15 мая 2022, 18:19
0
Правильно ли я понял, что данные не успевают загрузится, а грид уже сформировался?
Алексей Смирнов
15 мая 2022, 18:06
0
Вы сейчас прям описываете работу компонента MagicThemes.
Где весь описываемый функционал есть и в удобном варианте.
Чуть по другому работает, но суть такая же.
Alexey
15 мая 2022, 17:48
0
В качестве эксперимента поменял конфиг комбобокса, который подтягивает данные с процессора, на локальный:

CalcPackage.combo.TemplatePage = function (config) {
    config = config || {};
    Ext.applyIf(config, {
        store: new Ext.data.ArrayStore({
            id: 0
            ,fields: ['unit','display']
            ,typeAhead: true
            ,typeAheadDelay: 2000
            ,preventRender: true
            ,triggerConfig: {
                tag: 'span',
                cn: [
                    {
                        tag: 'div',
                        cls: 'x-form-trigger',
                        trigger: ''
                    },
                ]
            }
            ,data: [
                ['1','listovki']
                ,['2','vizitki']
            ]
        })
        ,mode: 'local'
        ,displayField: 'display'
        ,hiddenName: 'display'
        ,valueField: 'unit'
    });
    CalcPackage.combo.TemplatePage.superclass.constructor.call(this, config);
};
Ext.extend(CalcPackage.combo.TemplatePage, CalcPackage.combo.ComboBox);
Ext.reg('calcpackage-combo-template-page', CalcPackage.combo.TemplatePage);

Проблема у соответствующего поля исчезла, как страницу контроллера не перезагружал, выбранное поле выводится.

Общие выводы:
в таблице БД, которую выводит грид, значение поля (на которое установлен комбобокс) хранится в цифровом виде. При загрузке страницы процессор дергает значение поля, затем комбобокс — для данного примера — обрабатывает ЛОКАЛЬНО это значение, подсовывая строку из массива — skrinshoter.ru/s/150522/fUKjGSB6.

Если же комбобокс настроен на работу со своим процессором, то — получив значение поля из процессора грида — он отправляет запрос к этому своему процессору, ждет и выводит ответ в гриде. И вот на этой дельте между получением значения из основного процессора, отправкой запроса и получением ответа от своего процессора всё плохое и происходит.

В итоге, так и непонятно, что делать в этом случае. Не будешь ведь добавлять js-костыль, который после полной загрузки страницы будет генерировать событие click по этой кнопке skrinshoter.ru/s/150522/s76QqLsq
Игорь
15 мая 2022, 16:50
0
Спасибо за ответы. Все получилось )