Наверх

Шпаргалки по MODX RSS

Пример 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>";
}

Читать дальше

Обрезка пустых областей картинки

03 ноября 2015, 15:41

<?php
if (isset($options) && $options) {
  $width = $height = $options;
}
if (!isset($bg) || !$bg) {
  $bg = '#fff';
}
if (substr($input,0,1) == '/') $input = substr($input,1);
$path_info = pathinfo($input);
$cropedFile  = 'assets/images/croped/'.$width.'/';
if (!file_exists($cropedFile)) {
  mkdir($cropedFile, 0700);
}
$cropedFile .= $path_info['basename'];
if (!file_exists($cropedFile)) {
  $im = new Imagick($input);
  $im->trimImage(0);
  $im->writeImage($cropedFile);
}
$input = $cropedFile;
$output = $modx->runSnippet('phpthumbof', array('input' => $input, 'options' => 'w='.$width.'&h='.$height.'&zc=0&bg='.$bg));

return $output;

Читать дальше

Красивый вывод истории GIT-коммитов

20 февраля 2015, 14:47

git log --all --graph --pretty=format:'%Cred%h%Creset -%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative

Читать дальше

Пошаговая работа скрипта в Console

11 декабря 2014, 10:46

<?php
// Сколько ресурсов обрабатывать за раз
$step = 1;
// Если процесс уже остановлен, сбрасываем OFFSET
if (!isset($_SESSION['Console']['completed'])) {
    $_SESSION['console_offset'] = 0;
}
$offset = isset($_SESSION['console_offset']) && $_SESSION['console_offset'] ? $_SESSION['console_offset'] : 0;
// Формируем запрос
$q = $modx->newQuery('modResource');
$total = $modx->getCount('modResource', $q);
// Пропускаем все уже обработанные объекты
$q->limit($step, $offset);
$resources = $modx->getCollection('modResource', $q);
// Обработка
foreach ($resources as $resource) {
    print "<p>Processing resource <b>".$resource->get('pagetitle')."</b></p>";
    sleep(0.5);
}
// Меняем offset
$_SESSION['console_offset'] = $offset + $step;
if ($_SESSION['console_offset'] >= $total) {
  $sucsess = 100;
  $_SESSION['Console']['completed'] = true;
  unset($_SESSION['console_offset']);
} else {
  $sucsess = round($_SESSION['console_offset'] / $total, 2) * 100;
  $_SESSION['Console']['completed'] = false;
}
for ($i=0; $i<=100; $i++) {
    if ($i <= $sucsess) {
        print '=';
    } else {
        print '_';
    }
}
$current = isset($_SESSION['console_offset']) ?
           $_SESSION['console_offset'] :
           ($sucsess == 100 ? $total : 0);
print "\n";
print $sucsess.'% ('.$current.')'."\n\n";

Читать дальше

Хлебные крошки в админке MODX

10 октября 2014, 10:47

<?php
if ($modx->event->name == 'OnDocFormPrerender') {    
	if (!$modx->controller->resourceArray) {
		return;
	}
	$id = $modx->controller->resourceArray['id'];	
	$resources = array();
    foreach ($modx->getParentIds($id, 10, array('context' => 'web')) as $parentId) {
		if ($parentId) array_push($resources, $parentId);		
    }
    $resources[] = $id;
	natsort($resources);
	$level = 0;
    $childTemplates = '<a style="color: #333;" href="/manager/index.php">Панель</a>' .
    ' <span style="color: #333;">|</span> ';
    foreach ($resources as $resourceId) {
      $resource = $modx->getObject('modResource', $resourceId);
      if ($resourceId == $id) {
          $childTemplates .= '<span style="color: #333;">'.$resource->get('pagetitle').'</span>';
      } else {
          $childTemplates .= '<a style="color: #333;" href="/manager/index.php?a=30&id='.
          $resource->get('id').'">'.$resource->get('pagetitle').'</a> <span style="color: #333;">|</span> ';
      }
      $level++; 
    }

	
	$modx->controller->addHtml('
	<script>'."
		Ext.onReady(function() {		
			var title = Ext.select('#modx-resource-header');
			var pagetitle = Ext.select('#modx-resource-pagetitle');
			
			title.createChild('<p style=\"padding-bottom: 15px;\">$childTemplates</p>');
			pagetitle.on('keyup', function(){
				title.createChild('<p style=\"padding-bottom: 15px;\">$childTemplates</p>');
			});			
		});					
		</script>	
	".'</script>');
	
	return;
}

Читать дальше

Авторизация

через сервис Loginza:

Подписка или RSS

Буду присылать новые статьи — никакого спама



Шаблоны MODX

1 2 Дальше »

Объектная
модель
MODX