Владимир

Владимир

С нами с 28 декабря 2012; Место в рейтинге пользователей: #90
Василий Наумкин
17 мая 2017, 12:19
1
+1
А я собираю всё на сервере — modhost.pro позволяет не поднимать рабочее окружение на своём компе.
'use strict';

const gulp = require('gulp'),
    sass = require('gulp-sass'),
    rename = require('gulp-rename'),
    uglify = require('gulp-uglify'),
    cssmin = require('gulp-clean-css'),
    chmod = require('gulp-chmod');
const build = './assets/';
const assets = '../../../assets/components/startpage/';

gulp.task('default', ['css', 'js']);

gulp.task('watch', function () {
    gulp.watch([build + 'scss/*.scss', build + 'scss/**/*.scss'], ['css']);
    gulp.watch([build + 'js/*.js', build + 'js/app/*.js'], ['js']);
});

gulp.task('css', function () {
    var src = build + 'scss/*.scss';
    var dst = assets + 'css/web/';
    gulp.src(src)
        .pipe(sass().on('error', sass.logError))
        .pipe(cssmin())
        .pipe(gulp.dest(dst));
});

gulp.task('js', function () {
    var src = build + 'js/*.js';
    var dst = assets + 'js/web/';
    gulp.src(src)
        .pipe(uglify().on('error', function (e) {
            console.log(e);
        }))
        .pipe(gulp.dest(dst));

    src = build + 'js/app/*.js';
    dst = assets + 'js/web/app/';
    gulp.src(src)
        .pipe(uglify().on('error', function (e) {
            console.log(e);
        }))
        .pipe(gulp.dest(dst));
});

gulp.task('copy', function () {
    var src = [
        './node_modules/backbone/backbone-min.js',
        './node_modules/underscore/underscore-min.js',
        './node_modules/alertifyjs/build/alertify.min.js',
        './node_modules/backbone.syphon/lib/backbone.syphon.min.js',
        './node_modules/jquery/dist/jquery.min.js',
        './node_modules/tether/dist/js/tether.min.js',
        './node_modules/requirejs/require.js',
        './node_modules/js-cookie/src/js.cookie.js',
        './node_modules/html5sortable/dist/html.sortable.min.js',
        './node_modules/autocomplete-js/dist/autocomplete.min.js',
        './node_modules/bootstrap/dist/js/bootstrap.min.js'
    ];
    var dst = assets + 'js/web/lib/';

    var i = 0;
    gulp.src(src)
        .pipe(uglify().on('error', function (e) {
            console.log(e);
        }))
        .pipe(chmod({
            owner: {read: true, write: true, execute: false},
            group: {read: true, write: false, execute: false},
            others: {read: true, write: false, execute: false}
        }))
        .pipe(rename(function (path) {
            path.extname = '.min.js';
            path.basename = path.basename.replace(/([-.])min/, '').replace(/\.bundle/, '').toLowerCase();
            console.log(path.basename);
        }))
        .pipe(gulp.dest(dst));

    // Fonts
    gulp.src('./node_modules/font-awesome/fonts/**').pipe(gulp.dest(assets + 'fonts/'));
});
Воеводский Михаил
14 мая 2017, 20:42
2
+3
provisioner понятное дело не работает на текущих версиях.
Попробуй этот пакет: yadi.sk/d/y-lau_ll3J8xM3
Когда-то собирал Provisioner под 2.4, это может быть поправленный пакет.
Виктор Руденко
28 апреля 2017, 03:21
1
+1
Готовое решение: ld+json

[[pdoCrumbs?
	&showHome=`1`
	&tplWrapper=`@INLINE <script type="application/ld+json">
{
 "@context": "http://schema.org",
 "@type": "BreadcrumbList",
 "itemListElement":
[ [[+output]] ]
}
</script>`
	&tplHome=`@INLINE {
   "@type": "ListItem",
   "position": [[+idx]],
   "item":
   {
    "@id": "[[+link]]",
    "name": "Главная"
    }
  },`
	&tplCurrent=` @INLINE {
   "@type": "ListItem",
   "position": [[+idx]],
   "item":
   {
   	"@id": "[[+link]]",
    "name": "[[+menutitle]]"
    }
  }`
	&tpl=`@INLINE {
   "@type": "ListItem",
   "position": [[+idx]],
   "item":
   {
    "@id": "[[+link]]",
    "name": "[[+menutitle]]"
    }
  },`
]]
yani
26 апреля 2017, 08:10
1
+1
да, только не стандартным migx
Нужна своя таблица в БД и настройки
jonybang.blogspot.ru/2015/09/migx-db-modx.html
Владимир
25 апреля 2017, 15:46
2
+1
Файл assets/components/tinymcerte/js/mgr/tinymcerte.js

После (у меня это 29 строка)
this.cfg.file_browser_callback = this.loadBrowser;
добавить
this.cfg.valid_elements = '*[*]';
Володя
20 апреля 2017, 09:42
1
+2
$fenom->addModifier("dateformatter", function ($input) use ($modx) {
    switch ($input) {
           case "01":
              return $modx->lexicon('abcd.month.january');
              break;
            default:
              return $input;
      }
});
Сергей Шлоков
20 апреля 2017, 09:37
1
+2
Очень много ошибок в коде.

1. Ты используешь в функции модификатора переменную $modx. А откуда она взялась? Её нужно пробросить через замыкание
...
$fenom->addModifier('dateformatter', function ($input)  use ($modx){
...
2. Загружать сервис не обязательно — он уже загружен.
3. Этот код содержит лишние строки
$output = $monthname; // Эта строка для чего?
return $output;
// Можно заменить на 
return $monthname;
4. Так как $monthname может быть не определена, в switch нужно добавить
default:
	$monthname = '';
Попробуй всё это собрать самостоятельно.
Володя
07 апреля 2017, 16:27
1
+2
можно например вот так
github.com/modxcms/revolution/blob/fbf126690f6ce903faeaeb9f1d958211fc2203c9/core/model/modx/processors/resource/data.class.php#L62-L73
public function getCacheSource() {
        $this->resource->_contextKey= $this->resource->get('context_key');
        $buffer = $this->modx->cacheManager->get($this->resource->getCacheKey(), array(
            xPDO::OPT_CACHE_KEY => $this->modx->getOption('cache_resource_key', null, 'resource'),
            xPDO::OPT_CACHE_HANDLER => $this->modx->getOption('cache_resource_handler', null, $this->modx->getOption(xPDO::OPT_CACHE_HANDLER)),
            xPDO::OPT_CACHE_FORMAT => (integer) $this->modx->getOption('cache_resource_format', null, $this->modx->getOption(xPDO::OPT_CACHE_FORMAT, null, xPDOCacheManager::CACHE_PHP)),
        ));
        if ($buffer) {
            $buffer = $buffer['resource']['_content'];
        }
        return !empty($buffer) ? $buffer : $this->modx->lexicon('resource_notcached');
    }
то есть проверяется есть ли _content, если есть ресурс из кеша
Николай
01 апреля 2017, 14:48
4
+1
Постарался чуть более универсальное решение написать для тех случаев, когда обратный слеш нужен не только для папок, но и для документов.

Те. сайт/категория/товар/
<?php
if ($modx->context->key == 'mgr') {return;}
$uri=$_SERVER['REQUEST_URI'];
if (substr($uri, -1) != '/' && $uri != '/' && !strpos($uri, '?')&& !strpos($uri, '.')) {
	$url = $modx->getOption('site_url');
	if(substr($url, -1)=='/'){
		$url=substr($url, 0, -1);
	}
	$url .= $uri.'/';
	$modx->sendRedirect($url,array('responseCode' => 'HTTP/1.1 301 Moved Permanently'));
}
Дмитрий
29 марта 2017, 12:44
2
+1
Примерно так это выглядит для Revo (взял из одного проекта, и не проверяя подкорректировал).
<?php
set_time_limit(500);
$modx->setDebug(E_ALL & ~E_NOTICE); // sets error_reporting to everything except NOTICE remarks
$modx->setLogLevel(modX::LOG_LEVEL_DEBUG);
$result = $modx->query("SELECT k2.id,k2.title, k2.fulltext, k2.introtext, k2.created, k2.hits, k2.alias, FROM `joomlasite_k2_items` k2";
if (!is_object($result)) {
    return 'No result!';
} else {
    while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
                $data['pagetitle'] = $row['title'];
                $data['content'] = $row['introtext'];
                $data['template'] = 4;
		$data['context_key'] = 'web';
                $data['createdon'] = strtotime($row['created']);
                $data['tvs'] = true;
                $data['tv43'] = $row['hits'];
                $response = $modx->runProcessor('resource/create', $data);
                if ($response->isError()) {
                    html .= ($modx->error->failure($response->getMessage())) . '<br />
</br>?';
                } else {
                    $object = $response->getObject();
                    $html .= "
Был обновлен документ с ID {$object['id']}";
                }
}
return $html;
Но дело в том, что в Revo есть процессоры, а в Evo, вроде бы (последний раз работал с Evo в 2014), нет.
А смысл простой — взять нужные данные из таблиц Джумлы, завернуть их в массив и вставить с помощью какой-то матери в таблицу для Evo. Если погуглить, то можно найти такую ссылку. Осталось только присобачить пример выше к примеру по ссылке и добавлять данные как-то так, судя по статье:
// где $new_document это массив с данными из базы.
$newDocId = $modx->db->insert( $new_document, $modx->getFullTableName('site_content') );