Yurij Finiv

Yurij Finiv

С нами с 11 июня 2016; Место в рейтинге пользователей: #108
Павел Бигель
17 ноября 2020, 15:30
1
+1
Я предлагал такое решение
if (is_array($this->options) || $this->options instanceof Countable)
Андрей Степаненко
15 мая 2020, 13:57
1
0
В общем вот решение для dev и product
<?php
switch ($modx->event->name) {
    case 'OnHandleRequest':
        // Загрузка общих настроек
        $site_all = MODX_CORE_PATH . 'config/settings/';
        if (file_exists($site_all) and is_dir($site_all)) {
            foreach (glob($site_all . '*.inc.php') as $file) {
                $response = require($file);
                if (is_array($response)) $modx->config = array_merge($modx->config, $response);
            }
        }
        
        // Конфигурация для сайта с конфигом MODX_CONFIG_KEY
        $site_dir = MODX_CORE_PATH . 'config/settings/' . MODX_CONFIG_KEY.'/';
        
        if (file_exists($site_dir) and is_dir($site_dir)) {
            foreach (glob($site_dir . '*.inc.php') as $file) {
                $response = require($file);
                if (is_array($response)) $modx->config = array_merge($modx->config, $response);
            }
        }
        break;
}
Структура папок
core/config/dev.inc.php
core/config/settings/*.inc.php # здесь общие настройки
core/config/settings/dev/*.inc.php # здесь настройки персонально для dev (MODX_CONFIG_KEY)
Андрей Степаненко
15 мая 2020, 12:54
1
0
Лучше так
<?php
switch ($modx->event->name) {
    case 'OnHandleRequest':
        foreach (glob(MODX_CORE_PATH . 'config/settings/*.php') as $file) {
            $response = require ($file);
            if (is_array($response)) $modx->config = array_merge($modx->config, $response);
        }
    break;
}
а то если несколько конфигов будет, то MODX_CONFIG_KEY не поможет.
Михаил
15 мая 2018, 06:41
2
0
<?php
switch ($modx->event->name) {
	case 'OnUserFormSave':
if($mode == 'new' && $modx->context->key != 'mgr'){
$url = 3; // тут id ресурса с благодарностью
	$modx->sendRedirect($modx->makeUrl($url),array('responseCode' => 'HTTP/1.1 301 Moved Permanently'));
}
}
Максим Кузнецов
14 мая 2018, 15:41
1
+2
Если речь о готовом модуле, то нет, не вижу в этом смысла.

Если подразумевалась пошаговая инструкция, то как-то так:

1. В чанке формы регистрации (по умолчанию tpl.Office.auth.login) дописать:
//Код вставляем внутри формы с id="office-auth-register"
	//Не забыв указать id нужного ресурса
	<input type="hidden" name="redirect" value="{айди_страницы_переадресации | url}" />

2. Создаем новый js-файл и копируем в него содержимое /assets/components/office/js/auth/default.js

3. Указываем путь до него в системной настройке office_auth_frontend_js

4. В новом файле заменяем данный код:
if (response.success) {
	Office.Message.success(response.message);
	if (!response.data.sms) {
		$form.resetForm();
	}
}
следующим:
if (response.success) {
	//Если всплывающее сообщение не нужно, то эту строчку можно убрать
	Office.Message.success(response.message);
	
	var redirect_page = $('#office-auth-register').find('input[name="redirect"]');

	//В данном коде редирект происходит для всех форм Office, где есть input с name="redirect"

	//Если нужно ограничить срабатывание только для формы регистрации, 
	//то в условие необходимо дописать && $form.attr('id') == 'office-auth-register'
	if (redirect_page.length > 0) {
		window.location.href = redirect_page.val();
	}
	else {
		if (!response.data.sms) {
			$form.resetForm();
		}
	}
}

Опционально, если до редиректа нужно дать время пользователю на просмотр сообщения об успешной регистрации, то строчку window.location.href можно обернуть таймаутом:
setTimeout(function(){
	window.location.href = redirect_page.val();
}, 2000);
Aleksandr Huz
24 января 2018, 17:02
1
+2
1. Вариант:
{foreach $orders as $order}
	{if order@last}
		{$order.cost}
	{/if}
{/foreach}
2. Вариант:
{var $total = count($orders) - 1}
{foreach $orders as $idx => $order}
	{if $idx == $total}
		{$order.cost}
	{/if}
{/foreach}
Николай Загумённов
08 июня 2016, 23:50
4
+2
Спасибо Паше за помощь. Открыл для себя Ext.ComponentMgr.onAvailable.

Вот такой плагин получился и не надо создавать никаких comments2.grid.js.
<?php
switch ($modx->event->name) {
    case 'OnBeforeManagerPageInit':
        
        if ($action['namespace'] == 'tickets' && $action['controller'] == 'index') {
            $modx->controller->addHtml("<script type='text/javascript'>
                Ext.ComponentMgr.onAvailable('tickets-home-tabs', function() {
                    // Тут можно переопределять все что угодно
                });
            </script>");
        }
        break;
}
Воеводский Михаил
11 мая 2015, 16:46
2
+2
Самый простой способ — отправить ajax запрос с параметром:
/?ms2_action=cart/clean