Владимир

Владимир

С нами с 28 декабря 2012; Место в рейтинге пользователей: #53
Воеводский Михаил
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') );
Василий Наумкин
28 марта 2017, 15:07
2
+5
Гораздо лучше и проще переопределить функцию из своего скрипта, загруженного позже оригинального:

Например:
$(document).ready(function() {
	mSearch2.load = function (params, callback, animation) {
		// ...
	};
})
Тогда и основной скрипт не нужно будет переименовывать и заморачиваться при обновлениях с добавлением исправлений.