Skip to content

Instantly share code, notes, and snippets.

@ig0r74
ig0r74 / banUploadToTheRoot.php
Last active May 21, 2020 19:15
Запрещаем загрузку файлов в корень сайта MODX Revolution
<?php
switch($modx->event->name){
case 'OnFileManagerUpload':
$source = & $scriptProperties['source'];
if(!$source->hasErrors()){
/*
Запрещаем загрузку в корень, точнее удаляем новый файл,
@ig0r74
ig0r74 / select_left_join.sql
Created March 15, 2018 17:50
SQl выборка с Left Join и сохранение в новую таблицу для последующего экспорта в .csv
CREATE TABLE new_tbl AS
SELECT
2bp_customer.*, 2bp_address.company, 2bp_address.address_1, 2bp_address.address_2, 2bp_address.city, 2bp_address.postcode, 2bp_address.country_id, 2bp_address.zone_id
FROM
2bp_customer LEFT JOIN 2bp_address USING(customer_id)
@ig0r74
ig0r74 / delete_resources.php
Last active March 5, 2018 18:40
Удаляем все дочерние ресурсы с вложенностью. Полезно при большом кол-ве ресурсов, когда просто так MODX не справляется.
<?php
ini_set("memory_limit", "512M");
set_time_limit(120);
// Указываем ID родителя (в данном примере - 76) для выборки всех дочерних ресурсов с вложенностью 10
$child = $modx->getChildIds(76, 10, array('context' => 'web'));
// print join($child, ',');
// return;
$collection = $modx->getIterator('modResource', array(
'id:IN' => $child,
//'class_key' => 'msProduct',
@ig0r74
ig0r74 / change_prefix.php
Created February 18, 2018 21:32
Изменить префикс у таблиц MODX Revolution
<?php
ini_set("max_execution_time", 0);
ignore_user_abort(true);
$current_prefix = $modx->config['table_prefix'];
$new_prefix = 'My_Prefix234_';
$stmt = $modx->query("SHOW TABLES");
$tables = $stmt->fetchAll(PDO::FETCH_NUM);
@ig0r74
ig0r74 / LoadLexicon.php
Last active August 4, 2020 10:30
Localizator подгрузка лексиконов для mFilter2
<?php
$eventName = $modx->event->name;
switch($eventName) {
// case 'OnWebPageInit':
// if ($modx->context->get('key') == 'mgr') {return;}
// $modx->lexicon->load($modx->cultureKey . ':minishop2:default');
// break;
case 'OnParseDocument':
if ($modx->context->get('key') == 'mgr') {return;}
@ig0r74
ig0r74 / update_categories.php
Created December 13, 2017 21:28
MODX пересохраняем все категории MiniShop2
<?php
ini_set('max_execution_time', 0);
ignore_user_abort(true);
$c = 'modResource';
$q = $modx->newQuery($c);
$q->where(array('class_key' => 'msCategory'));
$q->sortby('id');
$q->select(array(
"{$c}.*",
));
@ig0r74
ig0r74 / form.tpl
Last active January 12, 2021 02:21
MODX Formit Одно из двух полей обязательно для заполнения.
{'!AjaxForm' | snippet : [
'snippet' => 'FormIt',
'form' => 'orderFormTpl',
'emailTpl' => 'orderEmailTpl',
'hooks' => 'email',
'emailFrom' => $_modx->config.emailsender,
'emailFromName' => $_modx->config.site_name,
'emailSubject' => 'Заявка на подбор оборудования {$_modx->config.site_name}',
'emailTo' => $_modx->config.emailsender,
'validate' => 'name:required,phone:oneOfTwoFields,email:oneOfTwoFields,link:blank',
@ig0r74
ig0r74 / profile.tpl
Created October 11, 2017 20:29
MODX Login UpdateProfile и ceckbox
{'!UpdateProfile' | snippet : [
'allowedExtendedFields' => 'subscribed',
]}
<input type="hidden" name="subscribed" value="0">
<input type="checkbox" [[!+subscribed:FormItIsChecked=`1`]] id="subscribed" name="subscribed" value="1"/>
<label for="subscribed">Подписка на рассылку и акции</label>
@ig0r74
ig0r74 / orders.tpl
Created October 2, 2017 18:07
MiniShop2 список заказов с джойнами
{'!pdoResources' | snippet : [
'class' => 'msOrder',
'select' => '{
"msOrder":"*",
"OrderStatus":"OrderStatus.name as status_name",
"Delivery":"Delivery.name as delivery_name",
"Payment":"Payment.name as payment_name"
}',
'leftJoin' => '{
"OrderStatus": {
@ig0r74
ig0r74 / minishop_vendor_select.php
Created September 15, 2017 20:22
MODX API Выборка товаров MiniShop2 с определенным производителем.
<?php
print '<pre>';
$query = $this->modx->newQuery('msProduct');
$query->setClassAlias('Product');
$query->leftJoin('msProductData','Data', '`Product`.`id` = `Data`.`id`');
$query->select($this->modx->getSelectColumns('msProduct','Product',''));
$query->select($this->modx->getSelectColumns('msProductData','Data','data.'));
$query->where(array(
'`Data`.`vendor`' => 5,