Виталий Серый

Виталий Серый

С нами с 17 января 2013; Место в рейтинге пользователей: #106
Виталий Серый
10 апреля 2018, 01:38
5
0
На текущий момент без изменения сниппета msProducts сгруппировать не получится.
Надо править либо сам сниппет, либо создать копию (если не прав, то править надо меня).

После 28 строки добавить что-то вроде такого
// Add grouping
$groupby = array(
    'msProduct.id',
); //строка 28
if(!empty($scriptProperties['groupby'])){
    $groupby = array(
        $scriptProperties['groupby'],
    );
}

Так же при желании все необходимое можно добавить в вызове сниппета вместо создания нового
{'!mFilter2' | snippet:[
    'class' => 'msProduct',
    'parents' => 0,
    'element' => 'msProducts',
    'innerJoin' => '{
                "Category": {
                    "class": "msCategory"
                 }
            }',
    'select' => '{
                "Category": "*"
            }',
    'groupby' => 'Category.id',
    'tpl' => '@INLINE <p><a href="{$uri}">{$pagetitle}</a></p>',
    ....
]}
Виталий Серый
07 апреля 2018, 13:00
+1
На счет текущего состояния по площадкам для обсуждения четко подмечено.
Виталий Серый
26 марта 2018, 18:59
0
Решил вспомнить как выглядит доработанный скрипт установки, а ссылка умерла.
Виталий Серый
22 марта 2018, 19:41
0
Как вызывается плейсхолдер на странице?
Виталий Серый
20 февраля 2018, 16:08
+1
Возможно причина в этом.
Виталий Серый
14 февраля 2018, 21:10
1
+1
Можно поизвращаться при желании. Но лучше прислушаться к Максиму и реализовать через js, готовых велосипедов, наверное, полно.
{set $page_key = 'num'}
{set $page = $.get.$page_key?:1}
{set $limit = 3}
{if ($page is numeric) && (($page + 0) is not decimal)}
    {set $total = $rows | length}
    {set $pages = ($total - ($total % $limit)) / $limit}
    {set $pages = ($total % $limit) ? ($pages + 1) : $pages}
    {set $page = $page > $pages ? 1 : $page}
    {set $offset = $limit * ($page - 1)}
    {set $idx = 0}
    {foreach $rows as $val}
        {*<p>{$idx} - {$offset} - {$offset + $limit}</p>*}
        {set $idx = $idx + 1}
        {if $idx <= $offset || $idx > ($offset + $limit)}
            {continue}
        {/if}
        <div>{$idx} - {$val}</div>
    {/foreach}
    {macro link($curr_page, $dir='<', $total, $page_key,$tpl)}
        {set $classes = ['btn btn-light']}
        {set $page = ($dir == '>') ? ($curr_page + 1) : ($curr_page - 1)}
        {if (($curr_page >= $total) && ($dir == '>')) || (($curr_page <= 1) && ($dir != '>'))}
            {set $classes[] = 'disabled'}
            {set $disabled = 1}
        {/if}
        {if $disabled}
            <span class="{$classes | join:' '}">{$tpl}</span>
        {else}
            <a href="?{$page_key}={$page}" class="{$classes | join:' '}">{$tpl}</a>
        {/if}
    {/macro}
    {if $pages >= 2}
        <div class="pagination">
            {macro.link curr_page=$page total=$pages page_key=$page_key tpl='<<'}
            {foreach 1..$pages as $num}
                {set $classes = ['btn btn-light']}
                {if $num@first}{set $classes[] = 'first'}{/if}
                {if $num@last}{set $classes[] = 'last'}{/if}
                {if $num == $page}{set $classes[] = 'active'}{/if}
                <a href="?{$page_key}={$num}" class="{$classes | join:' '}">{$num}</a>
            {/foreach}
            {macro.link curr_page=$page dir='>' total=$pages page_key=$page_key tpl='>>'}
        </div>
    {/if}
{/if}
Виталий Серый
30 ноября 2017, 18:23
+2
Возможно имеет смысл зафиксировать идею в виде баннера, дабы не терялось.
Свой скромный вклад подписал на патреоне.
Виталий Серый
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}
Виталий Серый
30 сентября 2017, 12:45
+2
Не надо пресмыкаться, надо спокойней реагировать, не более.
Если не сложно, решение Константина было бы неплохо поместить в сам пост, чтобы проще было искать.
Виталий Серый
30 сентября 2017, 12:12
+1
Спасибо за реакцию.
В очередной раз убеждаюсь, что стоит тихо почитывать документацию, Василия, Николая, Сергея, Илью, Ивана, Павла, Михаила, Евгения, Боба, Марка и иже с ними, читать код, самостоятельно экспериментировать и вникать.
И плевать на подобные вопросы, обсосанные уж много раз и в конечном счете с единственным посылом — «сделайте всю работу за меня».
Виталий Серый
30 сентября 2017, 00:44
0
В документации есть примеры, @index, @first, @last должны подойти.
Виталий Серый
23 мая 2017, 22:48
+2
Если правильно уловил суть, то вот как работать с MODX Api.
Виталий Серый
17 мая 2017, 14:20
0
Вот это не подходит?