Удалить index из URL ресурсов, дочерних главной
24 июля 2016, 19:29
<?php
switch ($modx->event->name) {
case 'OnWebPagePrerender':
$modx->resource->_output = str_replace('"index/', '"', $modx->resource->_output);
break;
case 'OnPageNotFound':
$uri = explode('?', $_SERVER['REQUEST_URI']);
if ($res = $modx->findResource('index' . $uri[0])) {
$modx->sendForward($res);
}
break;
case 'OnHandleRequest':
if (strpos($_SERVER['REQUEST_URI'], 'index/') !== false) {
$url = str_replace('index/', '', $_SERVER['REQUEST_URI']);
$modx->sendRedirect($url, array('responseCode' => 'HTTP/1.1 301 Moved Permanently'));
}
break;
default:
break;
}
return;Читать дальше
Полнотекстовый поиск с помощью pdoResources
13 июля 2016, 12:29
Добавляем полнотекстовый индекс в таблицу
Читать дальше
ALTER TABLE `modx_customextra_items` ADD FULLTEXT(`name`);После чего появляется возможность использовать MATCH
[[!pdoResources?
&class=`customExtraItem`
&loadModels=`customextra`
&sortby=`{"name":"ASC"}`
&where=`[
"MATCH(customExtraItem.name) AGAINST ('[[!#get.search]]')"
]`
&tpl=`@INLINE <p>{$name}</p>`
]]Читать дальше
Прикрепление картинки к объекту на ExtJS
07 июля 2016, 19:54
MyComponent.window.EditPersonal = function(config) {
config = config || {};
var self = this;
Ext.applyIf(config,{
title: _('mycomponent.title.win_edit')
,url: MyComponent.config.connectorUrl
,autoHeight: true
,width: 950
,modal: true
,fileUpload: true
,enctype : 'multipart/form-data'
,baseParams: {
action: 'mgr/tgmupersonal/update'
}
// ...Читать дальше
Простой ExtJS ComboBox со списком значений
07 июля 2016, 18:57
var storeitems = new Ext.data.ArrayStore({
id: 'gender-items'
,fields: ['value',{name: 'gender', type: 'string']}
,data: [['m','Мужской'],['f','Женский']]
});
MyComponent.combo.gender = function(config) {
config = config || {};
Ext.applyIf(config,{
store: storeitems
,displayField: 'gender'
,valueField: 'value'
,hiddenName: 'gender'
,mode: 'local'
,triggerAction: 'all'
,editable: false
,selectOnFocus: false
,preventRender: true
,forceSelection: true
,enableKeyEvents: true
});
MyComponent.combo.gender.superclass.constructor.call(this,config);
};
Ext.extend(MyComponent.combo.gender,MODx.combo.ComboBox);
Ext.reg('tyumsmubase-combo-gender',MyComponent.combo.gender);Читать дальше
Как вывести только контейнеры MODX
05 июля 2016, 13:58
Будут выведены только те ресурсы, у которых есть дочерние.
Читать дальше
[[pdoResources?
&parents=`0`
&select=`{
"modResource":"id, pagetitle",
"Children":"COUNT(Children.id) as count"
}`
&leftJoin=`{
"Children":{"class":"modResource", "on":"modResource.id = Children.parent"}
}`
&sortby=`{"id":"ASC"}`
&where=`{"parent":0, "Children.id:IS NOT":null}`
&groupby=`modResource.id`
&limit=`0`
&tpl=`@INLINE <p>{$id}. {$pagetitle} - {$count} {$count | decl : "дочерний ресурс|дочерних ресурса|дочерних ресурсов"}</p>`
&showLog=`0`
]]Читать дальше
Типовой файл .gitignore для кастомного компонента MODX
05 июля 2016, 11:58
.gitignore config.core.php ht.access .htaccess index.php /connectors/ /manager/ /assets/* !/assets/components/ /assets/components/* !/assets/components/mycomponent/ !/assets/components/cmpgeneratorpro/ /assets/components/cmpgeneratorpro/* !/assets/components/cmpgeneratorpro/build/ /assets/components/cmpgeneratorpro/build/* !/assets/components/cmpgeneratorpro/build/_build_mycomponent/ /core/* !/core/components/ /core/components/* !/core/components/mycomponent/
Читать дальше
Сообщение об успешной отправке AjaxForm в модалке
13 июня 2016, 14:32
FancyBox
<script>
$(document).on('af_complete', function(event, response) {
var form = response.form;
if (response.success) {
$.fancybox.close();
$.fancybox('<h1>' + response.message + '</h1>');
}
});
</script>Читать дальше
Пример leftJoin в pdoResources. Вывод картинок Gallery
09 июня 2016, 16:04
[[pdoResources?
&tpl=`@INLINE <img src="[[++assets_url]]gallery/[[+filename]]">`
&sortby=`{"id":"ASC"}`
&limit=`0`
&where=`{"album":1}`
&class=`galAlbumItem`
&loadModels=`gallery`
&select=`{
"galAlbumItem": "*",
"galItem": "*"
}`
&leftJoin=`{
"galItem":{"class":"galItem", "on":"galItem.id = galAlbumItem.item"}
}`
]]Читать дальше
Минимальный вызов ms2Gallery
24 мая 2016, 10:43
{'ms2Gallery' | snippet : [
'tpl' => '@INLINE {foreach $files as $file}
<a href="{$file["url"]}" class="fancybox2" rel="gal-{$file["resource_id"]}">
<img src="{$file["url"] | phpthumbon : "w=730&h=435&zc=1"}"
alt="{$file["resource_id"] | respurce : "pagetitle"}"
title="{$file["resource_id"] | respurce : "pagetitle"}">
</a>
{/foreach}',
'resource' => $_modx->resource.id
]}Читать дальше
Импорт правил для autoRedirector из CSV
10 мая 2016, 14:39
Загружаем CSV в папку assets/components/autoredirector/. В этой же папке создаём файл, в котором указываем имя файла для импорта. Открываем файл в браузере.
Читать дальше
<?php
define('MODX_API_MODE', true);
require dirname(dirname(dirname(dirname(__FILE__)))) . '/index.php';
if (($handle = fopen(dirname(__FILE__) . '/import.csv', "r")) !== FALSE) {
$modelPath = $modx->getOption('autoredirector_core_path',null,$modx->getOption('core_path').'components/autoredirector/').'model/';
$modx->addPackage('autoredirector', $modelPath);
$processorProps = array('processors_path' => $modx->getOption('autoredirector_core_path',null,$modx->getOption('core_path').'components/autoredirector/').'processors/');
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$uri = str_replace($modx->getOption('site_url'), '', $data[0]);
$id = $data[1];
$arRule = array('uri' => $uri, 'res_id' => $id);
if (!$modx->getObject('arRule', $arRule)) {
$response = $modx->runProcessor('mgr/item/create', $arRule, $processorProps);
if ($response->isError()) {
print '<span style="color: #c00;">AutoRedirector creating error. Message: ' .
$response->getMessage() . '<br></span>';
$modx->error->reset();
} else {
print '<span style="color: #060;">AutoRedirector created rule. URL: ' .
$uri . '<br></span>';
}
} else {
print '<span style="color: #666;">AutoRedirector rule dublicate. URL: ' .
$uri . '<br></span>';
}
}
fclose($handle);
}
Читать дальше
RSS
Объектная