Aleksandr Huz

Aleksandr Huz

С нами с 02 августа 2014; Место в рейтинге пользователей: #21
Aleksandr Huz
19 января 2018, 12:01
0
Тогда я тоже поделюсь своим вариантом. Мне тоже нравится MinifyX, но сторонние библиотеки я подключаю отдельно. Надоело подключать их вручную, поэтому переместил все в MinifyX.

Добавил параметр
'modules' => 'jquery,lazysizes,magnific,sweetalert,slick'
а в сниппете:
$modules = $modx->getOption('modules', $scriptProperties, '', true);

$arr_modules = explode(',',$modules);
foreach ($arr_modules as $value){
    
    $moduleCss = $value . 'Css';
    $pathCss = $modx->getOption($moduleCss, $scriptProperties, '', true);
    if( $pathCss != '' ){
        $link = '<link rel="preload" href="'.$pathCss.'" as="style" '.'onload="this.rel='."'".stylesheet ."'".'"'.' >';
        $modx->regClientStartupHTMLBlock($link);
    }

    $moduleJs = $value . 'Js';
    $pathJs = $modx->getOption($moduleJs, $scriptProperties, '', true);
    if( $pathJs != '' ){
        $link = '<link rel="preload" href="'.$pathJs.'" as="script">';
        $script = '<script src="'.$pathJs.'" '.$attrJs.'></script>';
        $modx->regClientStartupHTMLBlock($link.$script);
    }
        	
    
}
Пути к файлам определяются в параметрах сниппета.
Aleksandr Huz
16 января 2018, 13:17
0
Можно сделать так:
Лучшие||Аеро||Все
А при выводе можно создать модификатор, который будет менять значение.
Aleksandr Huz
16 декабря 2017, 18:38
0
Илья, все подробно расписал про siteExtra
Aleksandr Huz
06 декабря 2017, 20:33
2
+2
Попробуйте так:
{$_modx->runSnippet('!pdoResources',[
	'parent'	=> 0,
	'limit'  	=>  $limit ?: 6
])}
Aleksandr Huz
22 ноября 2017, 11:03
0
Паша, а как выводить прозрачные картинки через phpThumbOn?
pthumb по умолчанию выводит.
Aleksandr Huz
20 ноября 2017, 21:21
0
Это чанк для авторизованных пользователей, по умолчанию там ссылка для выхода, но в этот чанк можно поместить любую информацию, например ссылку на личный кабинет.

В статье Михаила расписано как можно еще узнать гость это или нет и использовать где угодно.

Человек написал:
И проблема в том, что в дополнении нет такого сниппета, который это может отслеживать.
я хотел донести до него, что такой сниппет есть.

Aleksandr Huz
20 ноября 2017, 12:54
+1
Вы ошибаетесь.
вот документация — docs.modx.com/extras/revo/login/login.login
Вот запуск сниппета:
[[!Login? &loginTpl=`lgnLoginTpl` &logoutTpl=`lgnLogoutTpl`]]
в чанке lgnLoginTpl вставляете ссылки на вход и регистрацию, а в lgnLogoutTpl на личный кабинет.
Aleksandr Huz
20 ноября 2017, 11:42
0
И проблема в том, что в дополнении нет такого сниппета, который это может отслеживать.
Вообще-то есть. У сниппета Login есть параметры:
loginTpl — подключается чанк для неавторизованных
logoutTpl — для авторизованных
Aleksandr Huz
17 ноября 2017, 13:16
0
а тег base у вас так записан?:
<base href='[[++site_url]]'>
Aleksandr Huz
17 ноября 2017, 12:49
0
Конечный путь должен быть таким
/assets/img/name.jpg
Aleksandr Huz
30 октября 2017, 11:11
0
Попробуйте без кавычек:
&where=`{"Data.new":1}`
Aleksandr Huz
29 октября 2017, 17:25
0
Если известны id родителей, то можно так
&resources = `-4,-5,-6`
Aleksandr Huz
27 октября 2017, 00:15
+1
У вас ошибка в названии параметра.
Нужно вот так:
[[!BannerY? &position=`1`]]
Aleksandr Huz
24 октября 2017, 14:37
0
Спасибо, Николай.

Хотелось бы выводить так:
{4 | localizator : 'pagetitle'}

Написал модификатор для этого. Буду благодарен, если кто-то улучшит код.
$pdo = $modx->getService('pdoTools');

// localizator
$fenom->addModifier('localizator', function ($id, $field = null) use ($pdo, $modx) {
    $pdo->debugParserModifier($id, 'localizator');
    
    /** @var modResource $resource */
    if (empty($id)) {
        $resource = $modx->resource;
    } elseif (!is_numeric($id)) {
        $field = $id;
        $resource = $modx->resource;
    } elseif (!$resource = $pdo->getStore($id, 'resource')) {
        $resource = $modx->getObject('modResource', $id);
        $pdo->setStore($id, $resource, 'resource');
    }
    
    $key =  $modx->getOption('cultureKey');
    if( $modx->getOption('cultureKey') != 'ru' ) {
        $q = $modx->newQuery( "localizatorContent" );
        $q->where( array( "`resource_id` = '" . $id . "'", "`key` = '" . $key . "'" ) );
        $q->select( array( $field ) );
        $s = $q->prepare();  // print $q->toSQL(); die;
        $s->execute();
        $array = $s->fetch(PDO::FETCH_ASSOC);
        $field_value = $array[$field];
        return $field_value;
    }
    
    $output = '';
    if (!empty($resource)) {
        if (!empty($field)) {
            if (strtolower($field) == 'content') {
                $output = $resource->getContent();
            } else {
                $output = $resource->get($field);
                if (is_null($output)) {
                    $output = $resource->getTVValue(preg_replace('#^tv\.#i', '', $field));
                }
            }
        } else {
            $output = $resource->toArray();
        }
    }
    $pdo->debugParserModifier($id, 'localizator');
    return $output;
});
Aleksandr Huz
29 июля 2017, 11:13
0
Поменять местами аргументы и пусть конкретное правило для пакета всегда будет в приоритете.
Aleksandr Huz
28 июля 2017, 12:43
0
Ну а если можно обновлять все пакеты, а другие действия запретить, то закрыть доступ не вариант.

Решение:
Написать в admintools_package_actions
{All:{remove:"Удаление запрещено!"}}
— запрет для удаление для всех пакетов

а в файле assets/components/admintools/js/mgr/admintools.js заменить строчку
var packageOptions = adminToolsPackageActions[record.data.name] ?  adminToolsPackageActions[record.data.name] : false;
на
var packageOptions = adminToolsPackageActions['All'] || adminToolsPackageActions[record.data.name] || false;
Aleksandr Huz
27 июля 2017, 16:25
0
А запретить сразу для всех пакетов можно?
Aleksandr Huz
19 июля 2017, 15:09
+1
Я бы не стал из-за этого его хоронить.
Библиотеку можно, даже нужно подключать отдельно уже сжатую.
Aleksandr Huz
19 июля 2017, 12:43
0
MinifyX уже похоронили из-за зависимостей.
а когда были похороны MinifyX?
p.s. я его до сих пор использую.
Aleksandr Huz
29 июня 2017, 12:53
0
Добрый день!
Для блога http://pets-level-travel.info хочется поставить Redactor — это бы облегчило заполнения статей
Сейчас используется Content Editor Tools 0.7, но он не такой крутой как Redactor
Спасибо