Владислав

Владислав

С нами с 11 августа 2015; Место в рейтинге пользователей: #998
Степан Прищепенко
22 мая 2019, 12:03
2
+1
Доброго, делаю через gulp, есть определенная структура и от местоположения файликов, скрипт сам решает что куда распихивать, просто напишу частично что используется:
  • gulp-iconfont и gulp-iconfont-css
  • gulp-rev
  • gulp-uglify
  • gulp-clean-css
  • gulp.spritesmith и gulp-imagemin
  • gulp-svgmin, gulp-svg-sprite, gulp-cheerio
Misha Bulic
26 марта 2019, 15:41
1
0
Там в обсуждении в телеге предложили такой вариант:
@Евгений Generalov
<?php
switch($scriptProperties['options']['type']) {
    case 'script':
        echo '<script src="'.$input.'?v='.filemtime($_SERVER['DOCUMENT_ROOT'] .'/'. $input).'"></script>';
        break;

    case 'stylesheet':
        echo '<link rel="stylesheet" type="text/css" href="'.$input.'?v='.filemtime($_SERVER['DOCUMENT_ROOT'] .'/'. $input).'">';
        break;
}
Использование:
{'assets/css/main.min.css'| includeFile : ['type' => 'stylesheet']}
Илья Уткин
25 марта 2019, 12:21
2
+4
Ну теперь можно вообще сделать один маленький сниппет
<?php
$filepath = MODX_BASE_PATH . $input;
if (file_exists($filepath)) {
    return $input . '?v=' . date('dmYHis', filemtime($filepath));
}

И использовать его как-то так:
<link rel="stylesheet" href="{'public/template/css/styles.css' | version}" type="text/css"/>
<script src="{'public/template/js/scripts.min.js' | version}" type="text/javascript"></script>
Олег
03 декабря 2018, 20:20
1
0
Я бы сделал через плагин, что-то навроде
<?php
if(
    $scriptProperties['mode']=='new'
    && $modx->event->name == 'OnBeforeDocFormSave'
    && $resource->get("template") == 7
){
    $resource->set('color', "............");
}
Jury
30 ноября 2018, 17:53
2
+1
Была такая проблема при обновлении на 2.7.
На сервере, стояла локаль en_US.UTF-8 UTF-8
Прописал в настойках modx locale en_US.UTF-8 и ошибка ушла
Что бы использовать ru_RU.UTF-8
Сгенерировал две локали на сервере
root@localhost:~# cat /etc/locale.gen | grep -v '#'
en_US.UTF-8 UTF-8
ru_RU.UTF-8 UTF-8
При этом кириллическую локаль поставил основной, и все гуд.
проверить можно так
root@localhost:~# echo $LANG
iWatchYouFromAfar
26 ноября 2018, 19:13
1
+2
Круто! Я в RTE почти всегда забиваю классы для изображений и пользователь может выбирать их. А тут получается как альтернативный вариант, без визивига. Могу дополнить пост, в закромах лежал плагин транслитерации папок.

Работает как с translit, как с yTranslit, так с и любым другим компонентом транслитерации.
switch($modx->event->name) {
  case 'OnFileManagerDirCreate':
  case 'OnFileManagerDirRename':
    $basePath = $source->getBasePath();
    $dirName  = basename($directory);
    
    $name  = array_pop(array_filter(explode(DIRECTORY_SEPARATOR, $directory)));
    $tmpDoc = $modx->newObject('modResource');
    $newName = $tmpDoc->cleanAlias($name);
    
    if(strcmp($name, $newName) === 0) {
        return;
    }
    
    $oldPath = str_replace(realpath($basePath), '', $directory);
    $bases = $source->getBases($oldPath);
    $oldPath = $bases['pathAbsolute'].$oldPath;

    $oldDirectory = $source->fileHandler->make($oldPath);

    if (!($oldDirectory instanceof modDirectory)) {
        return false;
    }
    if (!$oldDirectory->isReadable() || !$oldDirectory->isWritable()) {
        return false;
    }
    
    $newPath = $source->fileHandler->sanitizePath($newName);
    $newPath = $source->fileHandler->postfixSlash($newPath);
    $newPath = dirname($oldPath).'/'.$newPath;

    /* Транслитерация папки */
    if (!$oldDirectory->rename($newPath)) {
        $modx->log(modX::LOG_LEVEL_ERROR, 'Ошибка транслитерации папки!');
        return false;
    }

    break;
}
Василий Наумкин
26 ноября 2018, 07:29
6
+4
У меня все письма перед отправкой проходят через pelago/emogrifier — так что на расхождений в отображении почти нет.

Грузим свой почтовый класс раньше всех:
$modx->getService('mail', 'extraMail', 'path/to/class');

А в классе extraMail добавляем свою обработку:
<?php
if (!class_exists('modPHPMailer')) {
    /** @noinspection PhpIncludeInspection */
    require MODX_CORE_PATH . 'model/modx/mail/modphpmailer.class.php';
}

class extraMail extends modPHPMailer
{
    /** @var PHPMailer $mailer */
    public $mailer;
    
    /**
     * @param string $key
     * @param mixed $value
     */
    public function set($key, $value)
    {
        if ($key == modMail::MAIL_BODY) {
            $emogrifier = new \Pelago\Emogrifier($value);
            $value = $emogrifier->emogrify();
            $this->set(modMail::MAIL_BODY_TEXT, $this->mailer->html2text(nl2br($value)));
        }
        parent::set($key, $value);
    }
Максим Кузнецов
05 ноября 2018, 13:15
1
0
Конечно:

1. Добавляете в вызов сниппета sendRedirect еще один параметр, например &order=`айди_заказа`
2. В коде сниппета sendRedirect обрабатываете его и передаете в функцию редиректа:
//...
$order = intval($order);
//...
$modx->sendRedirect($modx->makeUrl($id) . '?order=' . $order, array('responseCode' => 'HTTP/1.1 301 Moved Permanently'));
3. Теперь на странице переадресации будет доступен гет-параметр order, который можно передать в свой сниппет, формирующий нужную вам таблицу заказов (msGetOrder).

Да, если вы не пользуетесь феномом и не знаете, как получить гет-параметр, то нужно создать свой сниппет с примерно таким содержимым:
<?php
    return $_GET[$param];

И вызывать на странице следующим образом: [[!snippet_name? &param=`order`]]
Василий Наумкин
14 сентября 2018, 12:21
2
+3
Сделал вот так, по просьбам трудящихся


То есть, теперь поддерживаются сайты dev и new до 10 штук на домен — итого 20 поддоменов для разработки, должно хватить.
Антон
05 сентября 2018, 22:01
1
0
Работает вот такой вариант
$count = 0;
$output = $modx->getIterator('msProduct',array("parent" => 5)); //Тут id вашей категории
foreach ($output as $resource) {
	if($resource->getTVValue('flagImagesYandex') == '1') $count++;
}
return $count;
Но все ровно спасибо за потраченное время))