Для разработчиков

Генерация расписания занятий на pdoTools


Увидел недавно вопрос на сообществе — человек хочет сгенерировать таблицу с расписанием занятий по дням.

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

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

Поэтому предлагаю вам готовое решение, а заодно и демонстрацию работы с pdoTools. Конечно, можно было бы обойтись и родными методами MODX, но с ним быстрее.

Все нужные данные выбираются за один запрос, а дальше очень быстрая обработка и оформление на PHP.
Василий Наумкин
05 октября 2013, 03:56
modx.pro
17
6 169
0

Phpthumb наложение водяного знака

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

Мой пример: (Ватермарка по центру изображения)

Настройки источника файлов, параметр thumbnails
{"w":500,"h":378,"q":95,"zc":"1","bg":"000000","fltr":"wmt|текст-ватермарки|20|C|48a4a5|Ubuntu-R.ttf|90|20|5||0|"}
wmt|текст|размер-шрифта|выравнивание|цвет|шрифт|прозрачность|отступ|поворот|цвет-фона|прозрачность-фона|направление
Игорь Зябко
29 июля 2013, 07:07
modx.pro
13
19 995
0

Подавление ошибок php

Некоторое время назад мне сделали замечание, что использовать @ — «плохая привычка». На предложение доказать, что это именно так, я получил ссылку на Хабр, со статьей про управление ошибками.

Окей, наконец-то я узнал, как именно ими управлять, но чем же плоха привычка подавлять сообщения об ошибках, если ты знаешь, что делаешь?

На мой взгляд, плохого здесь нет и быть не может. Применение @ — это такое же управление ошибками, как и функция error_reporting() или директива в php.ini.

Однако, детальный разбор показал несколько иное.
Василий Наумкин
06 июля 2013, 16:45
modx.pro
3
11 607
0

Первичный ключ xPDOObject

Как известно, при создании собственных таблиц в MODX принято наследовать или xPDOSimpleObject, или xPDOObject.

Отличие между ними ровно одно — в SimpleObject уже прописан первичный ключ id, а в Object — нет. То есть, если вы хотите, чтобы у вашей таблицы создавалось поле id с становилось primary key — нужно наследовать SimpleObject.

Я, однако, люблю простые таблицы ключ-значение, в которые добавляю первичным ключом два и более полей сразу. Например, в репозитории пакет может быть в нескольких категориях, значит нужно создать таблицу extraCategoryMember из двух полей category_id и package_id.

Ключ id мне здесь совершенно не нужен, ведь он будет расти при каждой операции добавления пакета в категорию, а таких операций может быть очень много. Конечно, вряд ли INT(10) скоро закончится, но зачем хранить лишнее?
Василий Наумкин
11 мая 2013, 12:42
modx.pro
9
5 414
0

Установка компонентов через MODX API

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

Можно делать из консоли, можно из сниппета — не важно. Собственно загрузка файла выделена в отдельную функцию, которая пытается работать через file_get_contents(), если это не запрещено. Иначе использует cUrl.

Параметров всего 2: имя компонента и id провайдера пакетов (по умолчанию — 1, то есть, modx.com).
Василий Наумкин
21 марта 2013, 07:57
modx.pro
8
5 205
0

Динамические функции на замену фильтрам

Очередная модель от известного велосипедостроителя — меня.

Суть в следующем: заменить все фильтры в чанке на функции внутри сниппета, сделанного на pdoTools.
При этом, сами фильтры должны лежать как и раньше, сниппетами, а не быть жестко закодированы, чтобы их можно было удобно изменять и использовать также в в плагинах, или еще где.
Василий Наумкин
14 марта 2013, 18:36
modx.pro
3
2 429
0

[miniShop2] Первый релиз, бета 0

Бета с индеком 0 доступна в репозитории. Нулевая она потому, что я не успел сделать оформление и управление заказами и решил привести в порядок то, что есть, а не торопиться и делать тяп-ляп.

Но обещание выпустить в конце этой недели было дано и его нужно выполнять. Поэтому, бета 0, «для посмотреть».
Магазин на ней построить нельзя, но любопытство утолить — очень даже. Хотя, если вам не нужны заказы — то можно уже использовать по полной!

Также, в поддержку, запустил отдельный сайт на котором открыта админка — minishop2.com.

Не все читают «звезданутые» заметки, поэтому я коротко расскажу, что нового в MS2. В двух словах — всё переписано с нуля, от miniShop осталось только название.
Василий Наумкин
23 февраля 2013, 19:14
modx.pro
5 761
0

[miniShop2] Первый тест на скорость

Провел первый тест скорости выборки товаров, на скорую руку. Просто раскопировал 10000 товаров, со всеми свойствами в одной категории и почистил кэш.

Первая загрузка после очистки кэша, limit 10


Вторая загрузка, limit 10

Василий Наумкин
21 февраля 2013, 07:15
modx.pro
5 115
0

Инструментарий программиста

Еще один текст с modcoach.info, в котором я рассказываю чем работаю с сервером.

Сразу говорю, разные Denwer и подобные приложения, эмулирующие GNU/Linux веб-сервер на Windows я не использую. Это потому, что на мой взгляд, разрабатывать сайты и приложения нужно в той среде, в которой он будет работать (или в очень похожей).

Не знаю, как сейчас дела у современных эмуляторов, но вряд ли у них есть php-apc, запуск заданий по cron, разные права доступа для разных юзеров, указание процессов php дляя каждого сайта, командный интерпретатор bash и прочие нативные фишки линуксового окружения.

Поэтому, мой выбор — свой собственный VPS или VirtualBox. Для первого случая заметка тут, а для второго — тут.
Не важно, что вы выберете, главное, что по определенному адресу у вас будет настоящий GNU/Linux. Шеф-повар рекомендует Ubuntu.
Василий Наумкин
10 февраля 2013, 11:48
modx.pro
3 926
0

[miniShop2] Работа с ajaxManager

Возможно, miniShop2 будет первым компонентом, 100% совместимым с ajaxManager. Во всяком случае, я очень стараюсь так сделать.

Василий Наумкин
29 января 2013, 15:14
modx.pro
2 273
0