Михаил

Михаил

С нами с 08 марта 2013; Место в рейтинге пользователей: #10

[РЕШЕНО]Вывод многожественного выбора в ComboBox

Возникла такая проблема. Пытаюсь вывести множественный выбор в выпадающем списке:
Вызов xtype:
{
            xtype: 'combo-local-select',
            name: 'country',
            fieldLabel: 'Страны',
            anchor: '99%'
        }
Сам combo:
var countryData = [['AU', 'Australia'], ['AT', 'Austria'], ['CA', 'Canada'], ['FR', 'France'], ['IT', 'Italy'], ['JP', 'Japan'], ['NZ', 'New Zealand'], ['US', 'USA']];
var countryStore = new Ext.data.SimpleStore({
    fields: ['code', 'name'],
    data: countryData,
    sortInfo: {
        field: 'name',
        direction: 'ASC'
    }
});
Михаил
29 марта 2020, 14:23
modx.pro
109
0

Выдаем вместо кэша html файлик

Предыстория. Возник такой вопрос. Есть какой то сайт, и в нем получается в каталоге было так. В вызов mFilter2 вложено в чанк еще парочка вызовов msProducts ну и так далее. В итоге, раздел грузился за овер 10 секунд. Да, сейчас напишите, что вот надо оптимизировать. Это понятно, но я решил подойти с другой стороны.
Итак, идея была такая, что бы вместо кэша выдавать уже готовую разметку целой страницы.
В итоге, у нас есть плагин:
<?php
switch($modx->event->name){
    case 'OnWebPagePrerender':
        // Тут просто условие, чтобы срабатывал только на категории (можно по сути задавать разные условия)
        if($modx->resource->class_key != 'msCategory'){
            return;
        }
        //Забираю отрендеренный ресурс
        $_output = &$modx->resource->_output; //Забираю отрендеренный ресурс
        // Создаю файлик разметки этого ресурса (можно по сути указать любой путь и так далее, сейчас и так сойдет)
        $file = MODX_BASE_PATH . 'resourcecache/' . $modx->resource->uri . '/' . $modx->resource->id . '.txt';
        if(is_file($file)){
            // Если такой файлик уже существует, то просто отдаю его содержимое
            $output = file_get_contents($file);
        }else{
            // Если файлика нету, то записываю туда отрендеренную страницу
            $cache = $modx->getCacheManager();
            $cache->writeFile($file, $_output);
            $output = $_output;
        }
        
        // Подменяю вывод на готовый
        $modx->resource->_output = $output;
        
        break;
        
    case 'OnLoadWebPageCache':
        // Это событие срабатывает до рендера страницы, оно проверяет, есть ли кэш страницы, и если он есть...
        $file = MODX_BASE_PATH . 'resourcecache/' . $modx->event->params['resource']->uri . '/' . $modx->event->params['resource']->id . '.txt';
        
        //...мы проверяем файлик, так как страница уже грузилась и файлик есть и подменяем кэш на содержимое неашего файлика.
        if(is_file){
            $modx->event->params['resource']->_content = file_get_contents($file);
        }
        
        break;
}
Итог, раздел грузился за 10 секунд (ну да, такой раздел, идея в другом), после плагина уже за 0.006 секунды, так как выдается готовая разметка.
Вопрос знатокам, на сколько такой подход вообще жизнеспособный по отношению к системе? Очень бы хотелось услышать комментарии.

Спасибо за донаты:
@Павел Бигель
Михаил
20 февраля 2020, 10:55
modx.pro
10
536
+16

Alistyle первый шаблон из серии готовых решений для MODX Revolution

За основу был взять шаблон Bootstrap Ecommerce.


Михаил
08 февраля 2020, 11:54
modx.pro
3
1 009
+15

Шпаргалка на все случаи жизни

Полезные ссылки, которые Вам пригодятся в некоторых ситуациях.
Михаил
07 февраля 2020, 21:42
modx.pro
57
870
+35

Метод ->remove()

Я и раньше наталкивался на странную работу данного метода, но вот есть такой вопрос.
У нас есть товар, у которого есть опции. Мне надо удалить их.
Делаю так:
$msProductOption = $modx->getIterator('msProduct', array('id' => 1137));

foreach($msProductOption as $option){
    $many = $option->getMany('Options');
    foreach($many as $m){
        $m->set('value', '');
        $m->save();
        //var_dump($m->remove());
    }
}
Данный способ не изменяет значение на пустоту и не удаляет, выдает false
Вроде бы это обычный объект, почему не изменяет значения и не срабатывает удаление?
Михаил
17 сентября 2019, 19:22
modx.pro
280
0

Создание CMP для вывода в админку с помощью MIGX

Итак, в прошлой статье я рассказал, как можно создавать свой компонент с помощью MIGX. Теперь я покажу, как можно создавать и редактировать данные в админке.

Кто не знает о чем речь, ссылка на первую статью.
Михаил
20 июня 2019, 18:55
modx.pro
19
1 259
+23

fakeData или самый бесполезный компонент

Может кому необходимо создавать фейковые данные, к примеру имена, фамилии, кредитные карты, время, картинки и так далее.
Михаил
18 мая 2019, 16:19
modx.pro
943
+6

Создание таблиц через MIGX

У новичков часто возникает вопрос, как можно быстро создать какую нибудь таблицу и начать с ней работать на пример из сниппета. Я раньше делал всегда через пакет Василия modExtra, выпиливая из него то, что мне не нужно. Но это долго и не совсем удобно, если нужна одна — две таблички. MIGX решает эту проблему.
Михаил
25 апреля 2019, 11:19
modx.pro
27
2 360
+18

MODX setup/ Directory Site Exploit

Перевод статьи

В настоящее время существует эксплойт для сайтов в которых осталась директория setup. Это может дать любому в интернете полный доступ к вашему сайту и возможно к вашему серверу с тривиальной настройкой. Этот каталог никогда не должен оставаться после того, как вы установили систему.
Михаил
25 апреля 2019, 08:50
modx.pro
977
+4

Memcache и одинаковые данные на двух сайтах

Приветствую.
Столкнулся с такой проблемой. Веду поддержку сайта, и что бы не ломать основной сайт во время внесения каких либо правок, я через Gitify настроил обмен данными.
Сервер настроен по заметке Василия.
Так же настроен Memcache по этой заметке.
Но, проблема такая, что при изменении данных на первом сайте, они меняются на втором, хотя никак не связаны. cache_prefix у сайтов разный. При отключенном Memcache все хорошо. Кто сталкивался, как возможно решить такую проблему?
Михаил
26 марта 2019, 20:55
modx.pro
284
0