Dmitry P.

Dmitry P.

С нами с 22 ноября 2017; Место в рейтинге пользователей: #429

Еще немного про сессии MODX, компонент smartSessions

Всем привет!

Небольшая предыстория
Когда я на свой VPS сервер закинул очередной более-менее крупный сайт (в базе около 25 тыс. товаров), у меня начались проблемы с нехваткой памяти, mysql ее нещадно отъедал.

В процессе оптимизации я начал понимать, что у половины сайтов в базе большую часть объема занимает пресловутая таблица modx_sessions, где, как известно, лежат сессии посетителей.

Но… почему? У сайта посещаемость 150-200 человек в сутки, сессии хранятся 7 дней (да, я проверил, они действительно очищаются), но в таблице почему-то 200000 записей, хотя по логике вещей должно быть 200*7=1400+. Реальность расходится с теорией не на 5-10%, а в десятки раз!
В итоге таблица весит полгигабайта, сайтов штук 10, каждому дай памяти, вот VPS и падает периодически… непорядок!


Наумов Алексей
28 июля 2021, 10:51
modx.pro
15
5 069
+29

Изменение цены в корзине при переоценке

Привет.

Иногда возникает такая ситуация, когда пишите интернет-магазин на MODX и miniShop2 и при этом вы импортируете товары или переоцениваете их с какого-нибудь внешнего сервиса (Например 1С). Проблема которая возникает абсолютно всегда в таких случаях, что цены на товары меняются достаточно часто. В miniShop2 нет (пока нет) события, который бы позволял хендлить события перехода в коризну. Однако, мы можем сделать это на уровне MODX, его событий и API

Создаем плагин cartCheck и вешаем его на событие OnWebPagePrerender. Это событие уже спарсило ресус и его данные, но еще не вывело на страницу — все что нам нужно. В коде, делаем проверку на шаблон страницы. Обычно, корзина имеет свой выделенный шаблон. Далее нам предстоит инициализировать минишоп, получить корзину, модифицировать ее как угодно и назначить обратно. Так же мы сделаем проверку на то, опубликован или удален ресурс и не дадим его купить. На этом, собственно все. Ниже привожу код плагина

<?php
if ($modx->event->name = 'OnWebPagePrerender'){
    if ($modx->resource->id == 5) {
        /** @var miniShop2 $miniShop2 */
        $miniShop2 = $modx->getService('minishop2');
        $miniShop2->initialize();
        $cart = $miniShop2->cart->get();
        foreach ($cart as $key => &$element) {
            /** @var msProduct $product */
            if ($product = $modx->getObject('msProduct', $element['id'])) {
                $element['price'] = $product->get('price');
                if (!$product->get('published') || $product->get('deleted')){
                    unset($cart[$key]);
                }
            }
        }
        $miniShop2->cart->set($cart);
    }
}
Павел Бигель
07 мая 2020, 15:56
modx.pro
9
1 815
+11

Вывод фоток с Instagram по тегу или юзеру без токена

Всем привет!

Если у вас есть задача вывести фотографии по нику или тегу то можете использовать данное решение:

Иван Бочкарев
14 апреля 2020, 17:52
modx.pro
19
2 513
+13

Генерация файла sitemap.xml для мультиязычного сайта

Многие из нас делают мультиязычные сайты на контекстах. Контексты в MODx — вообще очень крутая штука, наверное, одна из самых крутых. На текущем большом мультиязычном проекте, SEO оптимизатор скинул мне статью в гугле и сказал, что нужно оптимизировать сайт под неё. Вопрос по теме задавали аж два года назад и ответов не последовало. Но народ вроде дал мотивацию тратить время на статью…
iWatchYouFromAfar
03 марта 2020, 22:28
modx.pro
15
4 761
+19

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

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

Модифицируем HTML на лету

Привет друзья. Хочу поделиться методикой, которую иногда использую в тех случаях, когда мне нужно подменить или каким то образом модифицировать на лету готовый HTML. Причем сделать это на уровне сервера, а не через JS.

Николай Савин
13 октября 2019, 20:28
modx.pro
17
4 773
+18

Curl клиент modx

Встроенный curl клиент для отправки запросов на сторонние сервисы (RESTful и другие).
Так как все чаще используются сторонние сервисы в повседневной разработке сайтов, для этих целей в modx есть встроенный клиент, с помощью которого можно отправлять запросы:

/* @var modRest $client */
$client = $modx->getService('rest', 'rest.modRest');
$response = $client->get('GET запрос');
или
$response = $client->post('POST запрос');

// Обработка полученных данных в json или xml формате и преобразование их в массив
$array = $response->process();
В заметке перечислены способы работы с клиентом
Андрей Степаненко
12 августа 2019, 07:56
modx.pro
34
5 241
+39

Настройка Турбо страниц для Яндекса (Готовое решение)

Долго разбирался как настроить Турбо страницы для Яндекса. Много разного мануала нашел, в итоге решил поделиться тем, что у меня получилось. Не судите строго.
Может кто-то что-то подскажет, как реализовать проще или что-то улучшить. Может кому-то помогут мои наработки.
Рейтинга не хватило разместить в разделе Готовые решения или Пошаговые инструкции, оставляю в Вопросах.
Андрей Шевяков
30 июня 2019, 15:45
modx.pro
12
9 533
+2

Обновление App

С некоторых пор я плотно переехал на Webpack, так что решил обновить и свою заготовку для создания сайтов App.

Точкой входа во frontend приложение служит _build/assets/js/index.js, там вот такой код:
import 'jquery'
import 'bootstrap'
import '../scss/index.scss'

console.log('App is loaded!');
Василий Наумкин
21 мая 2019, 13:12
modx.pro
20
3 719
+29

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

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