Василий Наумкин

Василий Наумкин

С нами с 08 декабря 2012; Место в рейтинге пользователей: #1

Удобная фильтрация в mSearch2 на мобильной версии (внешний вид)

Доброго всем!
дам очень нужную инструкцию для изменения внешнего вида фильтров на мобильной версии (в десктопной ничего не измениться) в mSearch2 совместно с minishop2

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

Впринцыпе данный пример можно использовать где угодно, возможно спрячете меню блога, ну там уже на свое усмотрение. Работает через jquery
Сергей
19 апреля 2019, 18:55
17
409
+5

Аварии на серверах h4 и h5 modhost.pro

Давно не писал интересных заметок, жаль, что повод не очень.

Итак, за последние пару месяцев у нас было 3 проблемы с сервером h4 и 1 с сервером h5. Все аварии по ночам, когда поддержка спит и видит сладкие сны о бесперебойной работе всех сервисов. Последний инцидент был сегодня.

Проблема, как многие уже догадались — в отсутствии свободного места при резервном копировании. Заканчивается место и…
— Отваливается MySQL
— Пользователи видят проблему, не могут войти в админку (пароль-то не проверить, БД не работает)
— Думают, что их взломали (логи сервера с ошибками MySQL смотреть неинтересно) и начинают восстанавливать резервные копии
— А при этом сайт сначала удаляется, но места свободного обычно всё равно не хватает, так что ничего и не восстанавливается
— Дальше отваливается Nginx, когда замечает, что у него пропали конфиги этого удалённого сайта
— Ну и PHP, по той же причине

В общем: паника, разруха, десятки тикетов в поддержке — просыпаешься моментально.
Василий Наумкин
27 февраля 2018, 08:29
1
1 544
+11

Удаление старых версий пакетов

Многие пользователи знают, что MODX хранит кучу старых версий дополнений, чтобы вы могли откатиться на них в любое время.

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

Скрипт нужно положить в корневую директорию и запустить. Он выберет все установленные версии, кроме самой последней, и корректно удалит их через родной процессор.

Судя по коду этого процессора, никак повредить системе он не может, потому что деинсталляцию самого пакета не делает, а только удаляет файлы версии. Но, в любом случае, использовать на свой страх и риск!
Василий Наумкин
24 марта 2017, 06:35
43
2 160
+24

pdoFetch поиск в TV-полях с разделителем ||

Наверняка много кто использовал в своей практике TV-поля типа «Список» (множественный, одиночный, не важно) или «Тег». Здесь важно именно то, в каком виде в базе данных хранятся данные таких полей, ведь они сохраняют множественные значения. А хранят они их одной общей строкой в той же самой таблице ТВшек (естественно, по одной записи на один документ). К примеру, если мы отметили три значения 100, 1005, 10, в БД это запишется 100||1005||10. И здесь возникает вопрос как потом выполнить поиск по таким полям? Простой LIKE здесь не поможет, так как LIKE %100%, к примеру, найдет и '100||1000' и '1001||1005'. Данного вопроса мы уже касались здесь и подобный вопрос опять возник здесь.
Fi1osof
06 декабря 2015, 10:14
34
3 889
+16

[Office] Версия 1.3.2 вложенные extended поля

Представляю вам новую версию Office, компонента для работы с пользователями на сайте.

Очень много вопросов возникает с extended полями, которые в этой версии были расширены, так что я решил написать максимально понятные примеры по их использованию.

Итак, все неразрешённые поля в профиле пользователя запрещены для заполнения. Они просто обнуляются при обработке формы, поэтому, первым делом, вам нужно разрешить extended в параметре &profileFields:
[[!OfficeProfile?
	&profileFields=`extended`
]]

Там же вам нужно указывать и все остальные поля, которые вы разрешаете менять своим пользователям:
[[!OfficeProfile?
	&profileFields=`extended,username,fullname,email`
]]
Василий Наумкин
26 ноября 2015, 07:25
7
3 202
+9

Автоматическая генерация оглавления страницы

На днях появился вопрос об автоматическом создании оглавления статьи, а позже где-то проскочил комментарий, мол неплохо бы такое добавить на docs.modx.pro — там же все документы хорошо структурированы.

И действительно, а почему бы не добавить? Выделил полчасика и набросал сниппет makeContents, который генерирует вот такое оглавление:
Василий Наумкин
09 декабря 2014, 08:57
33
3 408
+3

Модель безопасности в MODX

Модель безопасности в MODX не самая очевидная. Хотя в MODX присутствуют примитивы, присущие, например, модели безопасности SQL, их предназначение в MODX несколько отличается.

При настройке безопасности конечной целью является дать каждому пользователю соответвующий набор привилегий – разрешить ему совершать определенные действия в системе. Действия могут совершаться над различными объектами: страницами (resource), контекстами (context), чанками (chunk), переменными шаблонов (TV) и т.д. Сами действия могут быть очень разными, в простейшем случае это создание, просмотр, редактирование и удаление. Таким образом, задача настройки безопасности сводится к заданию отношений между пользователями, объектами и привилегиями.


Ambient Hack
15 сентября 2014, 09:33
29
4 006
+11

Фильтрация по выпадающему списку для mFilter2

Может кому-то пригодится небольшое решение с подключением Bootstrap-select

Пример рабочего select с поиском без правки скрипта, благодаря label:
Руслан Киямов
29 апреля 2014, 14:30
24
4 096
+8

Расширенные поля пользователей

Небольшая пошаговая инструкция, как научиться сохранять любые интересующие данные о юзере в специальное поле extended.

На самом деле, это никакой не секрет. Во многих объектах MODX есть специальное поле типа JSON, которое хранится в БД как текст, например, properties у modResource и extended у modUserProfile.

При работе с объектами xPDO, JSON текст из этих полей превращается в массивы. То есть, общий принцип выглядит так:
// id нужного пользователя
$user_id = 15;
// Получаем объект modUser
if ($user = $modx->getObject('modUser', $user_id)) {
	// Получаем связанный с ним профиль пользователя
	if ($profile = $user->getOne('Profile')) {
		// Получаем специальное поле extended
		$extended = $profile->get('extended');
		// Добавляем новое значение
		$extended['mykey'] = 'mydata';
		// И сохраняем обратно в профиль
		$profile->set('extended', $extended);
		$profile->save();
	}
}
Самое приятное, что эти данные вы можете не только просмотреть на странице пользователя, но и изменить.
Василий Наумкин
07 апреля 2014, 11:00
36
10 540
+11