Александр

Александр

С нами с 05 декабря 2018; Место в рейтинге пользователей: #705
Виталий Серый
13 ноября 2016, 18:44
3
0
Код чанка написать между foreach.
Например:
{foreach $rows as $row}
	<div class="item">
		<div class="title">{$row.title}</div>
		<div class="desc">{$row.description}</div>
		<div class="image"><img src="{$row.image}" alt="{$row.title}" /></div>
	</div>
{/foreach}
Павел Гвоздь
11 июля 2016, 09:01
3
+2
Феномом получить список тегов и вывести второй по счёту:
{if $_modx->resource.tags?}
	{var $tags = json_decode($_modx->resource.tags, 1)}
	{$tags[1] ?: ''}
{/if}
Как-то так…
Павел Гвоздь
16 февраля 2016, 18:59
3
0
Скрипт мигрирует с ТВ типа «Тег» на ТВ типа «tvSuperSelect»:
<?php
$tv_tag = 18; // id тв поля с типом "Тег"
$tv_tss = 17; // id тв поля с типом "tvSuperSelect"
$modx->addPackage('tvsuperselect', MODX_CORE_PATH .'components/tvsuperselect/model/');
$objs = $modx->getIterator('modTemplateVarResource', array('tmplvarid' => $tv_tag));
foreach ($objs as $obj)
{
	$values = explode(',', $obj->value);
	foreach ($values as $value)
	{
		$where = array(
			'resource_id' => $obj->contentid,
			'tv_id' => $tv_tss,
			'value' => $value,
		);
		if (!$modx->getCount('tvssOption', $where))
		{
			$new = $modx->newObject('tvssOption');
			$new->fromArray($where);
			$new->save();
			unset($new);
		}
		$where = array(
			'contentid' => $obj->contentid,
			'tmplvarid' => $tv_tss,
		);
		if ($old = $modx->getObject('modTemplateVarResource', $where))
		{
			$old_values = $modx->fromJSON($old->value);
			$old_values[] = $value;
			$old->set('value', $modx->toJSON(array_unique($old_values)));
			$old->save();
		}
		else {
			$new = $modx->newObject('modTemplateVarResource');
			$new->fromArray($where);
			$new->save();
			unset($new);
		}
	}
}
Запускать в пакете "Console"
Володя
03 декабря 2015, 16:07
2
+1
да все нормально работает.
Ток что попробовал.

t1.vgrish.ru/img/img.php?text=%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82!,%20%D1%8F%20%D0%BD%D0%B0%D0%B4%D0%BF%D0%B8%D1%81%D1%8C%20%D0%BD%D0%B0%20%D0%BA%D0%B0%D1%80%D1%82%D0%B8%D0%BD%D0%BA%D0%B5%20%20))))
<?php
define('MODX_API_MODE', true);
require_once dirname(dirname(__FILE__)) . '/core/config/config.inc.php';
require_once MODX_BASE_PATH . 'index.php';
if (empty($_GET['text'])) {
	die('введите текст');
}
$opts = [
	'background' => MODX_ASSETS_PATH . 'img/background.jpg',
	'font' => MODX_BASE_PATH . 'img/arial.ttf',
	'save' => MODX_ASSETS_PATH . 'img/g/',
	'size' => 30,
	'top' => 200,
	'left' => 200,
	'text' => $_GET['text']
];
$path = $opts['save'] . sha1($opts['text']) . '.jpg';
if (!file_exists($path)) {
	$img = imagecreatefromjpeg($opts['background']);
	$color = imagecolorallocate($img, 250, 0, 0);
	/* выводим текст на изображение */
	imagettftext(
		$img,
		$opts['size'],
		0,
		$opts['left'],
		$opts['top'],
		$color,
		$opts['font'],
		$opts['text']
	);
	imagejpeg($img, $path, 100);
	imagedestroy($img);
}
echo '<img src="' . str_replace(MODX_BASE_PATH, MODX_BASE_URL, $path) . '">';
gist.github.com/vgrish/5212d75feea58e96b08b
Павел Романов
23 февраля 2015, 16:10
1
0
А если сделать так:
@EVAL $parent = $modx->resource->get('parent'); $output = $modx->runSnippet('getImageList',array('tvname'=>'agenti','limit'=>6,'tpl'=>'agentiTpl2','outputSeparator'=>'||','docid'=>$parent)); return $output;
Володя
14 марта 2014, 09:21
1
+1
пошел дальше и немного переписал код, теперь можно несколько независимых пагинаций на странице вызывать
<h2>первый вызов</h2> 
 
[[!AjaxSnippet?
&snippet=`pdoPage`
&element=`msProducts`
&tpl=`tpl.msProducts.row`
&limit=`3`
&depth=`1`
&parents=`4`
&showLog=`0`
&page=`[[!geturi]]` 
&as_mode=`onload`   
&wrapper=`
<div class="pagin [[+key]]"></div>

<div id="[[+key]]" class="ajax-snippet">
			<img src=" " class="as_spinner" style="width:32px;margin:auto;display:block;">
</div>

<div class="pagin [[+key]]"></div>
`
]] 

<h2>второй вызов</h2>
[[!AjaxSnippet?
&snippet=`pdoPage`
&element=`msProducts`
&tpl=`tpl.msProducts.row`
&limit=`3`
&depth=`1`
&parents=`4`
&showLog=`0`
&sortdir=`DESC`
&page=`[[!geturi]]` 
&pageVarKey=`page2`
&as_mode=`onload`   
&wrapper=`
<div class="pagin [[+key]]"></div>

<div id="[[+key]]" class="ajax-snippet">
			<img src=" " class="as_spinner" style="width:32px;margin:auto;display:block;">
</div>

<div class="pagin [[+key]]"></div>
`
]] 

<script>
    
    $(document).on('as_complete', document, function(e,d) {
 
    $(".pagin."+d["key"]).append(d["pagination"]);
 
	$(document).on('click', '.pagination a', function(e) {
	e.preventDefault();
    var url = $(this).attr('href');
    //console.log(url);

    $.post(url, {as_action: d["key"]}, function(response) {
	    if (typeof response.output !== "undefined") {
		    $('.ajax-snippet#'+d["key"]).html(response.output);
		
		    $(".pagin."+d["key"]).html(response.pagination); 

	      }
    }, "json");                  
                    
 
    }); 
});
    
</script>
смотреть тут — s5322.test.modx.pro/ayaks-snippet-neskolko-vyizovov.html
Василий Наумкин
18 сентября 2013, 17:23
9
0
<?php
$tvid = 1; // id нужного ТВ параметра
$res = array(); // Сюда забиваем результаты

$q = $modx->newQuery('modTemplateVarResource', array('tmplvarid' => $tvid));
$q->select('contentid,value');
if ($q->prepare() && $q->stmt->execute()) {
	while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
		$res[$row['contentid']] = $row['value'];
	}
}
print_r($res);

Получишь массив с id ресурсов и значенями ТВ c id = 1.