Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
[MODX Evolution] Плагин загрузки элементов (чанков и сниппетов) из файлов
<?php
/**
* LoadElement
*
* Загрузка элементов из файлов
*
* @version 2.0.0
* @license http://www.gnu.org/copyleft/gpl.html GNU Public License (GPL)
* @category plugin
* @author Agel Nash <modx@agel-nash.ru>
* @internal @legacy_names LoadElement
* @internal @properties &extChunk=Расширения чанков (<i>через запятую</i>);input;txt,html &extSnippet=Расширения сниппетов (<i>через запятую</i>);input;php &pathElement=Папка с элементами (<i>относительно корня сайта</i>);input;assets/element/ &namespace=В какой Namespace загружать элеменыт;input;custom
* @internal @modx_category API
* @internal @events OnWebPageInit,OnManagerPageInit,OnPageNotFound
*/
if (!defined('MODX_BASE_PATH')) { die('HACK???'); }
if(!isset($namespace)) {
$namespace = 'custom';
}
$extChunk = (!empty($extChunk) && is_scalar($extChunk)) ? $extChunk : 'txt,html';
$extChunk = array_map('trim', explode(",", $extChunk));
$found = $modx->findElements('chunk', MODX_BASE_PATH . $pathElement . '/chunk/', $extChunk);
foreach ($found as $name => $code) {
$modx->addChunk($name, $code, $namespace . '#');
}
$extSnippet = (!empty($extSnippet) && is_scalar($extSnippet)) ? $extSnippet : 'txt,html';
$extSnippet = array_map('trim', explode(",", $extSnippet));
$found = $modx->findElements('snippet', MODX_BASE_PATH . $pathElement . '/snippet/', $extSnippet);
foreach ($found as $name => $code) {
$modx->addSnippet($name, $code, $namespace . '#');
}
@atomoc

This comment has been minimized.

Copy link

commented Jun 2, 2015

Не работает, в отличие от 0.2 версии. У меня возникла идея обновить до 0.3 из-за отображения пустого экрана на неопубликованных ресурсах, вместо ошибки 404, строки:

$path = str_replace(self::getPath('snippet'), '', $item->getPath().'/');
if(!empty($path)){
    $snippetName = str_replace("/", "\\", $path) . $snippetName;
}

должны это исправить?

@atomoc

This comment has been minimized.

Copy link

commented Jun 2, 2015

Вряд ли, потому как даже:

class LoadElement{
}

способствует выводу белого экрана.

@atomoc

This comment has been minimized.

Copy link

commented Jun 2, 2015

Не знаю зачем плагину событие OnPageNotFound, но убрав его всё становится как надо, правда лишь в версии 0.2.

@MrSwed

This comment has been minimized.

Copy link

commented May 16, 2016

@AgelxNash
L62
$modx->snippetCache[$snippetName . "Props"] = array();
В новых реализациях modx, snippet properties, только как строка и больше не проверяется на пустоту.
modxcms/evolution@e0ffb3e#commitcomment-17488835

@Deesen

This comment has been minimized.

Copy link

commented Mar 1, 2017

I had to replace all '/' by DIRECTORY_SEPARATOR for windows-compatibilty.

@atomoc

This comment has been minimized.

Copy link

commented May 22, 2017

Евгений, скажи, в начале каждого сниппета нужно указывать:

if ( !defined('MODX_BASE_PATH') ) die('HACK???');

я правильно понимаю? На сколько было бы критично пренебречь этим правилом?

@AntonFix

This comment has been minimized.

Copy link

commented Jun 18, 2018

Это еще работает?

@AgelxNash

This comment has been minimized.

Copy link
Owner Author

commented Jun 22, 2018

@AntonFix Да, работает. Обновил код который работает еще и с версии 1.4.4

@AgelxNash

This comment has been minimized.

Copy link
Owner Author

commented Jun 22, 2018

@atomoc Есть ситуации, когда можно принебречь. Но если не в даваться в подробности, то лучше не стоит.

@AgelxNash

This comment has been minimized.

Copy link
Owner Author

commented Jun 22, 2018

@Deesen See the new version

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.