Skip to content

Instantly share code, notes, and snippets.

Avatar

Andrey andronex

View GitHub Profile
@andronex
andronex / postfix.php
Last active Oct 9, 2019
Добавление к title или alt атрибутам HTML тегов произвольного постфикса, например, названия сайта/компании.
View postfix.php
<?php
if ($modx->event->name == "OnWebPagePrerender") {
$output = &$modx->resource->_output;
$postfix = $modx->getOption('title_postfix');
$output = preg_replace('/title="([\s\S]*?)"/ui', 'title="$1 '.$postfix.'"', $output);
$output = str_replace('title=" | Энергоматика', 'title="Энергоматика', $output);
}
return;
@andronex
andronex / changePriceAddToCart.php
Created Jul 13, 2019
Изменение цены в зависимости от выбранных опций товара (miniShop2 + MODX Revolution).
View changePriceAddToCart.php
<?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 / manager.php
Created Jul 13, 2019
Защита ресурсов в админке MODX Revolution от контент-менеджера, которому не разрешено их открывать.
View manager.php
<?php
$eventName = $modx->event->name;
switch($eventName) {
case 'OnDocFormPrerender':
if ($user = $modx->getUser()) {//контент менеджер имеет ID 105 в данном примере
if (($user->get('id')) == 105 && (
($resource->template) == 18
|| ($resource->template) == 3
|| ($resource->template) == 8
|| ($resource->template) == 1
View perenos_tovarov.php
<?php
require(MODX_BASE_PATH.'parser/phpquery-master/phpQuery/phpQuery.php');
$modx->addPackage('easycomm', $modx->getOption('core_path') . 'components/easycomm/model/', 'kr0n0s_');
$modx->loadClass('ecMessage');
// Сколько ресурсов обрабатывать за раз
$step = 1;
// Если процесс уже остановлен, сбрасываем OFFSET
if (!isset($_SESSION['Console']['completed'])) {
$_SESSION['console_offset'] = 0;
@andronex
andronex / index.html
Last active Jul 2, 2019
Добавление ссылок на соц.сети в личном кабинете, реализованном на компоненте Office для MODX Revolution. Интерфейс реализован на ExtJS 6.2.0
View index.html
<!doctype html>
<html lang="ru">
<head>
<title>Тест</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/extjs/6.2.0/classic/theme-crisp-touch/resources/theme-crisp-touch-all.css" type="text/css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/extjs/6.2.0/packages/ux/classic/crisp/resources/ux-all.css" type="text/css">
<!-- include an external JavaScript file -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/extjs/6.2.0/ext-all.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/extjs/6.2.0/classic/locale/locale-ru.js"></script>
<script>
@andronex
andronex / console_dublicate.php
Last active May 10, 2020
Копирование товара в miniShop2 с галереей. Плагин на скорую руку. Базовая функция взята из моих же парсеров / импортёров товаров для ИМ на MODX + miniShop2
View console_dublicate.php
<?php
// Сколько ресурсов обрабатывать за раз
$step = 1;
// Если процесс уже остановлен, сбрасываем OFFSET
if (!isset($_SESSION['Console']['completed'])) {
$_SESSION['console_offset'] = 0;
}
$offset = isset($_SESSION['console_offset']) && $_SESSION['console_offset'] ? $_SESSION['console_offset'] : 0;
// Формируем запрос
@andronex
andronex / checkApiKey.php
Created Mar 6, 2019 — forked from webnitros/checkApiKey.php
Проверка сайта на доступ для приложения
View checkApiKey.php
<?php
/**
* Created by Andrey Stepanenko.
* User: webnitros
* Date: 24.01.2019
* Time: 1:00
*/
ini_set('display_errors', 1);
ini_set("max_execution_time", 50);
define('MODX_API_MODE', true);
@andronex
andronex / config.php
Created Feb 12, 2019
Импорт товаров с сайта ipaar-poliv.ru / парсер для добавления / обновления каталога товаров для интернет-магазина на MODX Revolution 2.6.5-pl+ и miniShop2 2.4.10-pl+
View config.php
<?php
require_once(dirname(__FILE__).'/config_main.php');
//настройки для сайтов доноров
$parseripaarURL = array(
'ipaar' => 'http://www.ipaar-poliv.ru/sitemap.xml'
);
@andronex
andronex / preg_replace_callback.php
Created Jan 29, 2019
Замена n-ого значения на что-то отличное от других замен
View preg_replace_callback.php
<?php
if($input){
$count = 0;
if(!function_exists('rep_count')){
function rep_count($matches) {
global $count;
$count++;
if($count == 2){
return '<br><i class="fa fa-whatsapp"></i> ';
@andronex
andronex / cloneResource.php
Created Jan 8, 2019 — forked from sepiariver/cloneResource.php
A Snippet to clone a Resource into multiple, user-defined parent containers in arbitrary contexts
View cloneResource.php
<?php
// get user-defined source document and target parents
$source = intval($modx->getOption('sourceId', $scriptProperties, ''));
$targets = array_map('trim', explode(',', $modx->getOption('targetIds', $scriptProperties, '')));
// to prevent accidents...
$_allowedUsers = explode(',', 'username1,username2');
// check stuff, and if passed then get the source document object
if ( !in_array($modx->user->get('username'), $_allowedUsers) || empty($source) || $source == 0 || !is_array($targets) || empty($targets) ) return;
$sourceDoc = $modx->getObject('modResource', $source);
You can’t perform that action at this time.