Skip to content

Instantly share code, notes, and snippets.

View andronex's full-sized avatar

Andrey andronex

View GitHub Profile
@andronex
andronex / backup.php
Created May 13, 2026 09:12
Бэкапер сайта вместе с БД на MODX Revolution 2.7+ и даже MODX Evolution
<?php
/*
Что сделать:
Сохранить файл как backup.php в корне сайта.
В строке
const BACKUP_KEY = 'CHANGE_THIS_TO_LONG_RANDOM_STRING';
поставить длинный случайный ключ.
Открыть в браузере:
https://ваш-сайт/backup.php?key=ВАШ_КЛЮЧ
@andronex
andronex / rename.php
Created October 15, 2025 18:50
Массовое переименование таблиц БД MySQL с помощью PHP прямо из консоли MODX. После отработки скрипта изменить в конфиге префикс таблиц вручную.
<?php
$db = $modx->getManager()->xpdo->pdo;
// Получаем список таблиц
$tables = $db->query("SHOW TABLES LIKE 'mt_%'")->fetchAll(PDO::FETCH_COLUMN);
foreach ($tables as $table) {
$new_table = str_replace('mt_', 'lr_', $table);
$sql = "RENAME TABLE `$table` TO `$new_table`";
@andronex
andronex / 1.php
Last active September 22, 2025 14:04
Региональные поддомены для MODX Revolution с перебросом ресурсов через контексты и изменением нужных полей ресурса для SEO.
<?php
/*
*плагин для переключения контекстов
*/
// Работаем только на фронте
if ($modx->event->name != 'OnHandleRequest' || $modx->context->key == 'mgr') {return;}
// Определяем запрашиваемый хост
$host = $_SERVER['HTTP_HOST'];
@andronex
andronex / kvitok_fizic.html
Created March 2, 2018 00:10
Квитанции, счета на оплату в HTML формате. Легко и непринуждённо конвертируются в PDF.
<html lang="ru">
<head>
<meta name="robots" content="noindex">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>[[*pagetitle]]</title>
<style type="text/css">
*{font-family: DejaVu Sans}
[[+toPDF:is=`1`:then=`*{font-family: DejaVu Sans;font-size:13px}small{font-size:8px}body {
@andronex
andronex / changePriceAddToCart.php
Created July 13, 2019 21:35
Изменение цены в зависимости от выбранных опций товара (miniShop2 + MODX Revolution).
<?php
switch ($modx->event->name){
case 'msOnBeforeAddToCart':
if (!is_array($options)) $options = json_decode($options, true);
//$modx->log(modX::LOG_LEVEL_ERROR, print_r($cart->get(), true));
//$modx->log(modX::LOG_LEVEL_ERROR, print_r($product->toArray(), true));
if(isset($options['size-price']) && !empty($options['size-price'])){
$tvr = $modx->getObject('modTemplateVarResource', array(
@andronex
andronex / rename.php
Created October 16, 2024 18:10
Массовое переименование таблиц БД MySQL с помощью PHP скрипта версии 7.0+
<?php
$db_server = "localhost"; // hostname MySQL server
$db_username = "cl723w"; // username MySQL server
$db_password = "Wwe"; // password MySQL server
$db_name = "cl7"; // database name
$pattern = "a_"; // search string
$new_pattern = "b_"; // replacement string,
// can be empty
@andronex
andronex / parse-resource.php
Created October 14, 2024 17:10 — forked from joeke/parse-resource.php
MODX Revo: Parse full contents of resource
<?php
/**
* Get full parsed HTML from resource
* (you already need to have the resource object available in $this->resource)
*
* @access public
* @return string $html The parsed html of the resource
*/
public function parseResource() {
@andronex
andronex / cacheClearLocal.php
Created October 9, 2024 14:55
Принудительный сброс кеша у ресурса MODX в момент посещения страницы, если вдруг в кеше старые данные, а в БД новее.
<?php
switch ($modx->event->name) {
case 'OnLoadWebDocument':
// id ресурса
$id = $modx->resource->get('id');
// объект ресурса
$doc = $modx->resource;
// текущий контекст
$mgrCtx = $modx->context->get('key');
@andronex
andronex / copy.php
Created April 8, 2016 20:24
Копирование ресурсов MODX
<?php
define('MODX_API_MODE', true);
require_once(dirname(__FILE__).'/index.php');
// Включаем обработку ошибок
$modx->getService('error','error.modError');
$modx->setLogLevel(modX::LOG_LEVEL_ERROR);
$modx->setLogTarget(XPDO_CLI_MODE ? 'ECHO' : 'HTML');
$modx->error->message = null; // Обнуляем переменную
$parent = 15;
@andronex
andronex / app.php
Last active July 5, 2024 15:25
Массовая замена битых эмодзи
<?php
$ress = $modx->getIterator('msProduct', ['class_key' => 'msProduct']);
foreach($ress as $res){
$introtext = $res->get('introtext');
if($introtext){
$introtext = preg_replace('/\?\s{0,}-Хранение/iu', '🏰-Хранение', $introtext );
$introtext = preg_replace('/\?-<\/span><\/span>Хранение/iu', '🏰-</span></span>Хранение', $introtext );
$introtext = preg_replace('/\?\s{0,}️-Развал/iu', '🛠️-Развал', $introtext );
$introtext = preg_replace('/\?-&nbsp;Доставка по/iu', '🚀-&nbsp;Доставка по', $introtext );