Простой 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); }
Читать дальше
Запретить Tickets заполнять introtext
14 марта 2016, 17:04
<?php if ($modx->event->name == "OnDocFormSave") { if ($resource->class_key != 'Ticket') return; $introtext = $resource->get('introtext'); $generateIntrotext = $resource->getIntroText($resource->get('content'), false); if (empty($resource->getProperty('disable_jevix'))) { $generateIntrotext = $resource->Jevix($generateIntrotext); } if ($introtext == $generateIntrotext) { $resource->set('introtext', ''); $resource->save(); } }
Читать дальше
Авторизация в админке сайта MODX (если потеряли пароль админа)
15 февраля 2016, 15:14
<?php define('MODX_API_MODE', true); require 'index.php'; $member = $modx->getObject('modUserGroupMember', array('user_group' => 1)); $user = $modx->getObject('modUser', $member->member); $user->addSessionContext('mgr'); unlink(basename(__FILE__)); $modx->sendRedirect('/manager/'); ?>
Читать дальше
Выборка ресурсов с TV-параметрами
19 ноября 2015, 18:51
<?php $q = $modx->newQuery('modResource'); $q->leftJoin('modTemplateVarResource', 'Price', 'modResource.id = Price.contentid AND Price.tmplvarid = 14'); $q->leftJoin('modTemplateVarResource', 'Currency', 'modResource.id = Currency.contentid AND Currency.tmplvarid = 15'); $q->groupby('modResource.id'); $q->select(array( 'modResource.*', '`Price`.`id` AS `Price_id`, `Price`.`tmplvarid` AS `Price_tmplvarid`, `Price`.`contentid` AS `Price_contentid`, `Price`.`value` AS `Price_value`', '`Currency`.`id` AS `Currency_id`, `Currency`.`tmplvarid` AS `Currency_tmplvarid`, `Currency`.`contentid` AS `Currency_contentid`, `Currency`.`value` AS `Currency_value`', 'IFNULL(`Price`.`value`, 0) AS `Price_value`', 'IFNULL(`Currency`.`value`, "RUB") AS `Currency_value`' )); $q->where(array( array( 'Price.value:!=' => 0, 'Price.value:IS NOT' => NULL ), array( 'Currency.value' => 'RUB', 'OR:Currency.value:IS' => NULL ) )); $count = $modx->getCount('modResource', $q); $q->limit(100); if ($q->prepare() && $q->stmt->execute()) { $resources = $q->stmt->fetchAll(PDO::FETCH_ASSOC); } print "<p>Всего ресурсов найдено: ".$count."</p><p> </p>"; foreach($resources as $resource) { print "<p><b>".$resource['pagetitle'] . " (".$resource['id'].")</b> - " . $resource['Price_value'] . " " . $resource['Currency_value'] . "</p>"; }
Читать дальше