Олег Захаров

Олег Захаров

С нами с 14 октября 2017; Место в рейтинге пользователей: #134
Максим
18 апреля 2017, 10:00
1
0
data-src="[[~1342]]?from=[[*id]]", 

{if $.get.from}
<input type="hidden" name="pageLink" value="{$_modx->config.site_url}{$.get.from | resource : 'uri'}">
{/if}
Данным способом можете цеплять любые параметры страницы.
Максим
16 апреля 2017, 17:06
1
0
<a class="btn btn-shadow" data-fancybox="ajax" data-type="ajax" data-src="[[~1342]]" href="javascript:;">Напишите нам</a>
Володя
11 апреля 2017, 07:26
5
+2
примерно так можно
s6200.h3.modhost.pro/katalog/11999.html
joxi.ru/E2pMqLGS9YgaRA
{foreach $options as $name => $values}
    <div class="form-group">
        <label class="col-md-2 control-label" for="option_{$name}">{('ms2_product_' ~ $name) | lexicon}:</label>
        <div class="col-md-10">
            <select name="options[{$name}]" class="input-sm form-control" id="option_{$name}">
                {foreach $values as $value}
                    <option value="{$value}">{$value}</option>
                {/foreach}
            </select>
        </div>
    </div>    
        
        
    <div class="form-group form-inline embroidery_parent" style="display:none;">    
        <label class="col-md-2 control-label" for="option_{$name}"></label>
        <div class="col-md-10">
			<input type="text" name="options[embroidery_text]" placeholder="Текст вышивки" class="input-sm form-control" value="">
		</div>
    </div>
    
{/foreach}

<script>
$(document).on('change', '.ms2_form', function (e) {   
    
    var embroidery = $(this).find('select[name="options[embroidery]"]');
    var embroidery_text = $(this).find('input[name="options[embroidery_text]"]');
    if (embroidery.val() == 'да') {
        embroidery_text.closest('.embroidery_parent').show();
    }
    else {
        embroidery_text.closest('.embroidery_parent').hide();
        embroidery_text.val('');
    }
});
</script>
Nikita
10 апреля 2017, 22:30
1
0
По идее — обычный текст. Логика такая: человек жмет галку «добавить вышивку» открывается текстовое поле и он туда вписывает, например, свои инициалы: «И.В. Пупкин» или любой другой текст, который он хочет вышить на рубашке/футболке.
Дмитрий
19 марта 2017, 21:16
1
0
Ну, вообще, если почитать документацию, то можно увидеть сниппет CRCalc, который как раз этим и занимается.
Ну или можно написать свой сниппет, который будет принимать значение цены, валюту, в которую нужно пересчитать и выдавать уже готовую стоимость.
Типа такого:
<?php
/** @var array $scriptProperties */
/** @var currencyrate $currencyrate */
if (!$currencyrate = $modx->getService('currencyrate', 'currencyrate', $modx->getOption('currencyrate_core_path', null, $modx->getOption('core_path') . 'components/currencyrate/') . 'model/currencyrate/', $scriptProperties)) {
	return 'Could not load currencyrate class!';
}
if(empty($input)) {return '';}
$list = $currencyrate->getList();
//тут можно по-нормальному отформатировать данные
$input = (trim(str_replace(' ','',$input)));
if(!empty($divider)) {
	$divider = $list[$divider];
	$output = $currencyrate->formatPrice(($input / $divider), $format, $noZeros);
}
return $output;
Виталий Серый
03 марта 2017, 22:43
3
+1
Все тоже самое, только тв запрашивать у требуемого ресурса.
{set $rows = json_decode(15 | resource : 'migx_tv', true)}
{foreach $rows as $row}
    {$row.image}
{/foreach}
Юрий Фомин
27 января 2017, 18:56
3
+2
Таки дописал велосипед про автоматизацию создания/удаления и редактирования ресурсов в контекстах-дублях.

<?php
if ($modx->event->name == 'OnDocFormSave') {
    // собираем дублированные контексты (web - оригинальный контекст)
	$contexts = $modx->getCollection('modContext', array('key:NOT IN' => ['mgr','web']));
	
	// получаем родителя создаваемого ресурса
	$parent = $resource->get('parent');
	if ($parent != '0') {
        $parentId = $modx->getObject('modResource', $parent);
        $parentAlias = $parentId->get('alias');
	}
    $alias = $resource->get('alias');
    $id = $resource->get('id');
    // проходимся по контекстам
	foreach ($contexts as $context) {
	    
	    $response = $modx->getObject('modResource', array('context_key'=>$context->key, 'alias' => $alias));
	    // если ресурс уже существует то тогда просто обновляем поля (кроме контента)
	    if ($response) {
    	    $response->set('pagetitle', $resource->get('pagetitle'));
    	    $response->set('longtitle', $resource->get('longtitle'));
    	    $response->set('description', $resource->get('description'));
    	    $response->set('content', '[[!OriginalFields?&id=`'.$id.'`&field=`content`]]');
            // ... много остальных полей
    	    $response->set('deleted', $resource->get('deleted'));
    	    $response->save();
	    } else {
	        // создание нового ресурса
    	    $newResource = $modx->newObject('modDocument');
    	    // заполняем поля ресурса
    	    $newResource->set('context_key', $context->key);
    	    $newResource->set('pagetitle', $resource->get('pagetitle'));
    	    $newResource->set('longtitle', $resource->get('longtitle'));
    	    $newResource->set('description', $resource->get('description'));
    	    $newResource->set('content', '[[!OriginalFields?&id=`'.$id.'`&field=`content`]]');
            // ... много остальных полей
    	    $newResource->set('deleted', $resource->get('deleted'));
    	    
    	    // поле родителя для создания дубля в нем а не в корне
    	    if ($parent != '0') {
    	        $res = $modx->getObject('modResource', array('context_key'=>$context->key, 'alias'=>$parentAlias));
    	        $parntId = $res->get('id');
    	    } else {
    	        $parntId = $parent;
    	    }
    	    $newResource->set('parent', $parntId);
            // сохраняем свежеиспеченый ресурс
    		$newResource->save();
	    }
	}
	// очищаем кеш
	$modx->cacheManager->clearCache();
}

// удаление ресурсов в дублирующих контекстах
if ($modx->event->name == 'OnDocFormDelete') {
    // собираем дублированные контексты (web - оригинальный контекст)
    $contexts = $modx->getCollection('modContext', array('key:NOT IN' => ['mgr','web']));
    
    // проходимся по контекстам
    foreach ($contexts as $context) {
        
        // получаем нужные (верней не нужные поэтому и удаляемые) нам ресурсы
        $response = $modx->getObject('modResource', array('context_key'=>$context->key, 'alias' => $resource->get('alias')));
        
        // помечаем как удаленные
        $response->set('deleted', $resource->get('deleted'));
        $response->save();
        
        // удаляет полностью
        // $response->get('id');
        // $response->remove();
    }
	$modx->cacheManager->clearCache();
}
Владимир
21 января 2017, 19:22
1
0
$_modx->getPlaceholder('+EUR')
— в комменте выше есть ответ на ваш вопрос
Володя
12 января 2017, 14:05
1
+1
{'!CRcalc'|snippet:[
    'input' => $_modx->getPlaceholder('+EUR'),
    'divider' => 'USD',
]}
Konstantin
10 сентября 2016, 19:31
1
0
Вот кстати ответ на вопрос — как вывести картинку из ms2Gallery используя pdoTools -> pdoResources

[[!pdoResources?
                        	&class=`msProductFile`
                        	&tpl=`@INLINE [[+rank]] - [[+url]]`
                        	&where=`{"product_id":"[[+id]]", "path:LIKE":"%/120x90/","rank":1}`
                        	&limit=`1`
                        	&sortby=``
                        	&sortdir=``
                        	&showLog=`0`
                        ]]
«rank»:1 — это указываем вторую картинку в товаре, если нужна первая то указываем «rank»:0