Андрей П

Андрей П

С нами с 05 ноября 2015; Место в рейтинге пользователей: #294
Виталий Серый
16 ноября 2017, 11:55
1
0
В данном случае это, на мой взгляд, оптимальная реализация, но предложу немного мутировать.
В настройках контекста создать переменную, пусть будет ctx_res, в которой через запятую перечислить все требуемые id.
Алиасы ресурсов привести в соответствие.
И вывести, например, через pdoMenu
{'pdoMenu' | snippet:[
	'parents' => 0,
	'resources' => 'ctx_res' | option,
	'tpl' => 'tpl',
]}

tpl:
<div class="content__item content__item{$idx}">
	<a href="{$id | url}" class="content__heading content__heading--{$idx}">{('gg_' ~ $alias) | lexicon}</a>
	<a href="{$id | url}" class="content__heading-a">
		<p>{$id | resource : 'introtext'}</p>
	</a>
	<span class="content__more{$idx}"> {'gg_more' | lexicon}</span>
	<a href="{$id | url}" class="content__more"> {'gg_more' | lexicon}</a>
</div>
Виталий Серый
16 ноября 2017, 11:18
1
0
Через if или switch
{set $items = [
	'2' => 'gg_about',
	'4' => 'gg_invest',
	'3' => 'gg_trade',
]}

{if $_modx->context.key == 'eng'} {* {if $_modx->config.cultureKey == 'en'} *}
    {set $items = [
	'12' => 'gg_ne_about',
	'14' => 'gg_invest_li',
	'13' => 'gg_trader',
    ]}
{elseif $_modx->context.key == 'deu'} {* {if $_modx->config.cultureKey == 'de'} *}
    {set $items = [
	'22' => 'gg_about',
	'24' => 'gg_invest_on',
	'23' => 'gg_trade_in',
    ]}
{/if}
Виталий Серый
15 ноября 2017, 18:10
1
+2
Мне нравится делать примерно вот так:
{set $items = [
	'2' => 'gg_about',
	'4' => 'gg_invest',
	'3' => 'gg_trade',
]}

{set $idx = 1}
{foreach $items as $id => $lex}
	<div class="content__item content__item{$idx}">
	    <a href="{$id | url}" class="content__heading content__heading--{$idx}">{$lex | lexicon}</a>
	    <a href="{$id | url}" class="content__heading-a">
	        <p>{$id | resource : 'introtext'}</p>
	    </a>
	    <span class="content__more{$idx}"> {'gg_more' | lexicon}</span>
	    <a href="{$id | url}" class="content__more"> {'gg_more' | lexicon}</a>
	</div>
	{set $idx = $idx + 1}
{/foreach}
Антон Грошев
09 ноября 2017, 02:13
1
0
Решил таким методом:

{var $par =  $modx->runSnippet('pdoResources', ['parents' => 5,'limit' => 0,'returnIds' => 1,'fastMode' => 1,'scheme' => 'uri','level' => 1,'depth' => 0]) | split}
{set $cnt = $modx->getCount('modResource', ['parent:IN' => $par ])}
{'pdoMenu' | snippet : [
'parents' => 5, 'displayStart' => 1, 'countChildren' => 1, 'fastMode' => 1, 'scheme'=> 'uri', 'level' => 2,
'showLog' => 0,  'firstClass' => '', 'lastClass' => '',  'hideContainers' => 0,  'parentClass' => 0,
'tplOuter' => '@INLINE <ul class="gallery-cats clearfix">[[+wrapper]]</ul>', 
'tplInner' => '@INLINE [[+wrapper]]',
'tplStart' => '@INLINE <li[[+classes]]><a href="{{~5}}">Minden </a> ('~ $cnt ~')</li>[[+wrapper]]',
'tpl' => '@INLINE <li[[+classes]]><a href="{{~5}}?year={$alias}">{$pagetitle}</a> ([[+children]])</li>'
]}
Максим Кузнецов
07 ноября 2017, 12:29
5
+6
На fenom-е посимпатичнее будет:

{foreach $_modx->resource.pagetitle | split : ' ' as $pagetitle_word}
	{if $pagetitle_word | length > 3}
		{var $words[] = $pagetitle_word}
	{/if}
{/foreach}

{set $random_word_position = rand(1, $words| length)}
{set $random_word = $words[$random_word_position - 1]}

{$_modx->runSnippet('!msProducts', [
	'parent' => $_modx->resource.parent,
	'resources' => -$_modx->resource.id,
	'where' => '{
		"pagetitle:LIKE": "%' ~ $random_word ~ '%"
	}',
	...
])}
Володя
25 сентября 2017, 12:56
1
0
<div id="msGallery">
    {if $files?}

        {var $preload = []}

        <div class="fotorama"
             data-nav="thumbs"
             data-thumbheight="45"
             data-allowfullscreen="true"
             data-swipe="true"
             data-autoplay="5000"
             data-maxheight="400">
            {foreach $files as $file}

                {set $preload[] = '<img src='~$file['url']~'>'}

                <a href="{$file['url']}" target="_blank">
                    <img src="{$file['small']}" alt="" title="">
                </a>
            {/foreach}
        </div>
    {else}
        <img src="{('assets_url' | option) ~ 'components/minishop2/img/web/ms2_medium.png'}"
             srcset="{('assets_url' | option) ~ 'components/minishop2/img/web/ms2_medium@2x.png'} 2x"
             alt="" title=""/>
    {/if}
</div>

<div style="position:fixed;left:9999px;opacity:0;">
    {$preload|join}
</div>
Василий Наумкин
12 сентября 2017, 11:40
2
+4
{var $ids = $_modx->getParentIds($_modx->resource.id)}
{if '11' in list $ids}
  Фильтры для пылесосов
{else}
  Фильтры для вытяжек	
{/if}
Код не проверял, но логика примерно такая: получить массив с родителями текущего ресурса и проверить, если ли среди них нужный.
Александр
10 сентября 2017, 17:11
2
+2
{if $_modx->resource.class_key == 'msProduct'}
   {$_modx->runSnippet('ms2Gallery')}
{else}
  {$_modx->resource.content}	
{/if}
Володя
07 сентября 2017, 06:56
2
+2
<div id="msGallery" class="msoptionsprice-gallery">

    <div class="fotorama"
         data-nav="thumbs"
         data-fit_="cover"
         data-allowfullscreen="false"
         data-swipe="true"
         data-enableifsingleframe="false">

        {var $preload = []}

        {if $files?}
            {foreach $files as $file}
                {set $preload[] = '<img src='~$file['medium']~'>'}
                <a href="{$file['medium']}" target="_blank" alt="{$file['name']}" title="{$file['description']}">
                    <img src="{$file['small']}" class="img-responsive" alt="{$file['name']}" title="{$file['description']}">
                </a>
            {/foreach}
        {else}
            <a href="{('assets_url' | option) ~ 'img/noimage.png'}" target="_blank" alt="noimage" title="noimage">
                <img src="{('assets_url' | option) ~ 'img/noimage.png'}" alt="noimage" title="noimage">
            </a>
        {/if}
    </div>

</div>

<div style="position:fixed;left:9999px;opacity:0;">
    {$preload|join}
</div>
то есть добавил скрытый контейнер и в нем подгрузку изображений. Попробуйте…
Sergey Leleko
04 сентября 2017, 14:25
1
0
Вы абсолютно правы! Спасибо за помощь Вам, Алексею Ерохину.
А так же отдельное огромное спасибо Илье Уткину. С учетом всего и вся получился вот такой результат:
{if $_modx->resource.link_ids}	
        <h2>разновидности</h2>
        <div class="row different">
                <div class="col-md-6" style="min-height: 200px;">
                  <ul>
                      {'!pdoResources' | snippet : [
                      'parents' => '0',
                      'limit' => '12',
                      'depth' => '1',
                      'tvPrefix' => '',
                      'includeTVs' => 'link_ids',
                      'resources' => $_modx->resource.link_ids,
                      'tpl' => '@INLINE <li><a href="/{$uri}">{$pagetitle}</a></li>
                            {if $idx == 6}</ul></div>
                            <div class="col-md-6" style="min-height: 200px;"><ul>{/if}',
                      'sortdir' => 'ASC'
                      ]}
                  </ul>
                  </div>
            {/if}
Это решение подразумевает:
1) Один вызов pdoResources, если кол-во перечисленных айди больше 6 то выводится вторая колонка.
2) Если TV вообще пустой то блок не выводится