Skip to content

Instantly share code, notes, and snippets.

View andronex's full-sized avatar

Andrey andronex

View GitHub Profile
Hello, World! (^_^)
@andronex
andronex / redirect_for_container
Last active March 6, 2019 00:46
Плагин для редиректа со старых URL на новые в MODX Revo и плагин для редиректа на URL с закрывающим слэшем для контейнеров.
<?php
/**
* Вешаем плагин на OnWebPagePrerender
* Нужен для редиректа для контейнеров (ресурсов с isfolder=1) на URL с закрывающим слэшем,
* если они открыты без закрывающего слэша.
* Т.е. плагин всегда добавляет для контейнеров закрывающий слэш.
* Корректно обрабатывает передаваемые в GET запросе параметры - в случае редиректа в новом
* URL параметры тоже будут добавлены.
*/
$redir301mov = array('responseCode' => 'HTTP/1.1 301 Moved Permanently');
@andronex
andronex / required_meta
Last active August 29, 2015 14:16
Плагин для MODX Revo. Проверяет обязательность заполнения META полей для публикуемых ресурсов + плагин для типографирования сохраняемого контента ресурсов. Работает через API typograf.ru
<?php
/**
* Повешать плагин на событие OnBeforeDocFormSave
* Название любое
* meta description в поле description
* meta keywords в поле introtext
*/
$eventName = $modx->event->name;
switch($eventName) {
case 'OnBeforeDocFormSave':
@andronex
andronex / stop_edited
Created March 9, 2015 21:57
Плагин для MODX Revo. Запрещает редакторам редактировать админовские ресурсы.
<?php
/**
* Плагин для MODX Revo, запрещающий редакторам (юзерам с id, отличным от 1)
* редактировать ресурсы, созданные админом (id = 1 по дефолту)
* Перенаправляет юзера на главную страницу бек-энда при попытке открыть
* такой ресурс на редактирование
* Название любое
* Повешать на событие OnDocFormPrerender
*/
$eventName = $modx->event->name;
@andronex
andronex / yandex-pinger
Last active August 29, 2015 14:16
Плагин для пинга ПС Яндекс при публикации/редактировании ресурса.
<?php
/*
Plugin Name: Яндекс.ПДС Пингер
Plugin URI: http://site.yandex.ru/cms-plugins/
Description: Плагин оповещает сервис Яндекс.Поиск для сайта о новых и измененных документах.
Version: 1.5
Author: ООО "ЯНДЕКС"
Author URI: http://www.yandex.ru/
License: GPL2
*/
@andronex
andronex / addBlocksContent
Last active August 29, 2015 14:17
Плагин для поиска по тексту ресурса ключевых слов для дальнейшего присвоения номеров релевантных тексту блоков с контентом. Ключевые слова содержаться в системной настройке my_search_words Для работы нужна либо отдельная библиотека phpMorphy или msearch2 с ней.
<?php
$eventName = $modx->event->name;
switch($eventName) {
case 'OnDocFormSave':
$templNum = 3;//номер шаблона ресурса для обработки (остальные ресурсы при сохранении обработаны не будут)
$tvNum = 'tv2';//номер TV поля с номерами блоков для вывода @var type string
$tvNumInt = 2;//номер TV поля с номерами блоков для вывода @var type integer
if (($mode == 'new') && (($resource->get('template')) == $templNum) && (!$resource->get($tvNum)) && ($string = $resource->content)) {
$search = $modx->getOption('my_search_words');//получаем содержимое системной настройки my_search_words
$lang = 'ru_RU';//язык словаря
@andronex
andronex / open_graph
Last active August 29, 2015 14:17
Плагин для вывода части микроразметки типа OpenGraph. Выводит в HTML код мета поле с корректным URL картнки.
<?php
/**
* Плагин для вывода части микроразметки типа OpenGraph
* Выводит в HTML код мета поле с корректным URL картнки.
* Принцип работы: если в content текущего ресурса находит хоть одну картинку,
* то автоматически выводит её в meta property="og:image"
* Если картинки не найдены в тексте, то прицепляет к ресурсу любую жёстко
* заданную картинку. Нужен для корректного вывода поста в соц.сетях - с нужной картинкой.
*/
$eventName = $modx->event->name;
@andronex
andronex / activeItemMenu
Created April 11, 2015 21:00
Сниппет для отображения активных пунктов меню, собранного вручную.
<?php
/**
* Для работы нужен package [pdoTools]
* HTML код меню находится в чанке [[$menu]]
* в коде чанка использовать плейсхолдеры типа <li class="[[+menuactive4]]">ссылка пункта меню</li>
*/
$pdo = $modx->getService('pdoTools');
if($res = $modx->resource) {
$id = $res->get('id');
$parent = $res->get('parent');
@andronex
andronex / exampleQueries
Last active August 20, 2020 11:28
Примеры выборок из БД в MODX и кол-во запросов к БД в зависимости от конструкции и способа запроса.
Все примеры расположены в порядке уменьшения нагрузки на БД и при равенстве кол-ва запросов в порядке уменьшения кол-ва строк кода. Сверху самый ресурсоёмкий по кол-ву запросов к БД.
///////////////////////////////////////////////////////////
Пустая страница MODX при отключенном кэше:
кол-во зпросов/время запросов/время выполнения PHP кода/общее время
6/0.0002 s/0.0336 s/0.0338 s
***********************************************************
1-ый код с pdoFetch, все методы:
$pdo = $modx->getService('pdoFetch');
$pdo->setConfig(array(
@andronex
andronex / parserMailOrder
Created May 26, 2015 21:51
Парсер для писем или текстовых файлов.
<?php
/**
* Парсер для писем или текстовых файлов.
* Для записи в базу юзается библиотека http://dklab.ru/lib/DbSimple/manual.html
*/
//ini_set('display_errors', 1);
//ini_set('error_reporting', -1);
require_once "db/lib/config.php";
require_once "db/lib/DbSimple/Generic.php";