Удалить 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); }
Читать дальше