Баха Волков

Баха Волков

С нами с 10 ноября 2016; Место в рейтинге пользователей: #12
Баха Волков
18 июля 2018, 09:27
1
+1
<?php
$obj = json_decode($value);

return '/stock-photo/' . $scriptProperties['row']['id'] . '/' . $obj[0]->image;
Баха Волков
17 июля 2018, 22:09
0
Сделайте через сниппет

Вот как Павел сказал, только код вот этот используйте:

<?php
$obj = json_decode($value);

return $obj[0]->image; // "image" название поля в migx
// Если у вас используется другой источник файлов, то
return 'путь к источнику' . $obj[0]->image;

Да, надо что-то дописать, и никак не могу нагуглить плейсхолдер для id ресурса. Безрезультатно перепробовал эти: [[+id]], [[*id]], [[+docid]], [[+record.id]]
Плейсхолдер — где?) Плейсхолдер — куда?) Плейсхолдер — откуда?)

А еще страница с этим Collections загружается просто адски долго! Это норма?
Думаю, что нет, если до ваших стараний загружалась быстро, то есть большая вероятность, что вы неправильное что нибудь сделали
Баха Волков
17 июля 2018, 20:34
0
Ну или так:

<?php
$obj = json_decode($value);

return $obj[0]->image;
Баха Волков
17 июля 2018, 17:33
0
Единственное, что из-за простой задачи запускать сниппет необязательно вроде. Делайте так:

<?php
$obj = json_decode($value);

return $obj[0]->{'image'};
Баха Волков
17 июля 2018, 16:53
0
Не помню, как-то пытался через сниппет, но не заводилось. Поэтому и через js делал
Баха Волков
17 июля 2018, 16:50
0
Мда… Оказывается miniShop2 преобразился и в хорошую сторону. Раньше помнится мне, что приходил массив со всеми опциями товаров и уже в чанке проверку производить нужно было заполнено ли оно (могу ошибаться), сейчас приходит массив только с теми свойствами которые заполнены.

Решение

Написать сниппет, который узнавал бы все доступные опции категории товара, и скормить ему массив с msProductOptions, ну и вывести
Баха Волков
17 июля 2018, 16:18
+1
collections.renderer.migximage = function (value, metaData, record, rowIndex, colIndex, store) {
	if (value != '' && value != null) {
		var jsonString = value;
		var jsonData = JSON.parse(jsonString);
		var link = jsonData[0].image;   // "image" название поля migx где храниться картинка
		return '<img src="' + link + '" width="64">';
	}
};
Баха Волков
16 июля 2018, 22:35
0
Мне кажется, что это кэш браузера
Баха Волков
16 июля 2018, 03:12
0
[[!+gl.current.data.resource]]
Что возвращает данный плейсхолдер?
Баха Волков
15 июля 2018, 09:01
4
0
Ссылку получать нужно так:

[[~id ресурса]]
{id ресурса | url}

// Прямое указание id ресурса
[[~2]]
{2 | url}

//  Динамичное указание id ресурса
[[~[[+id]]]]
{$id | url}
[[~[[*id]]]]    // Вдруг нужна циклическая ссылка :)
{$_modx->resource.id | url}    // Вдруг нужна циклическая ссылка :)

// ну а если ваш плейсхолдер [[!+gl.current.data.resource]] возвращает именно id, то
[[~[[!+gl.current.data.resource]]]]
{var $myplace = $_modx->getPlaceholder('gl.current.data.resource')}    // Вдруг еще понадобится
{$myplace | url}

// Кстати, для получения полей есть еще FastField
[[#id ресурса.поле или даже тв которое нужно вывести]]
{id ресурса | resource : 'поле или даже тв которое нужно вывести'}

// Пример
[[#1.pagetitle]]    // Получить pagetitle у ресурса с id = 1
{1 | resource : 'pagetitle'}

Как получить родителя по id?
[[*parent]]    // На странице ресурса
{$_modx->resource.parent}
[[+parent]]    // В чанках вывода
{$parent}
[[#[[!+gl.current.data.resource]].parent]]    // Тот случай когда нужно получить id по плейсхолдеру
{$_modx->getPlaceholder('gl.current.data.resource') | resource : 'parent'}
[[pdoField? &id=`[[!+gl.current.data.resource]]` &field=`parent`]]    // Ну или через pdoField
{var $myplace = $_modx->getPlaceholder('gl.current.data.resource')}
{$myplace | resource : 'parent'}

Для корректности, вашем случае нужно поступить вот так:
[[~[[#[[!+gl.current.data.resource]].parent]]]]
{$_modx->getPlaceholder('gl.current.data.resource') | resource : 'parent' | url}
// или
[[~[[pdoField? &id=`[[!+gl.current.data.resource]]` &field=`parent`]]]]
{var $myplace = $_modx->getPlaceholder('gl.current.data.resource')}
{$myplace | resource : 'parent' | url}

UPD
Забыл совсем про uri
Если, что в поле uri хранится ссылка на страницу, но никак не в alias
Баха Волков
15 июля 2018, 08:20
0
Вы объявили о работе, но сообщения у вас отключены, так что никто не может откликнуться. Если вам все ещё нужна помощь, то пишите Вк, telegram или на почту в профиле
Баха Волков
11 июля 2018, 05:02
1
+2
{var $resource_list = $_modx->runSnippet('pdoResources', [  // Восклицательный знак не обязателен
        'parents' => 2,
	'includeContent'=> 1,
	'includeTVs' => 'image',
        'return' => 'json'
])}

{var $all = $resource_list | fromJSON}  // Можно и один раз преобразовать

{if $all}  // Проверка на пустоту, если переменная пустая, то не выводить
<ul class="ul_inline_items">
      {foreach $all as $item}
              <li{if $item@first} class="active"{/if}><a href="#{$item.id}" aria-controls="{$item.id}" role="tab" data-toggle="tab">{$item.pagetitle}</a></li>  // Проверка в одну строку, так же проще
      {/foreach}  
</ul>
<div class="tab-content">
      {foreach $all as $item}
              <div role="tabpanel" class="tab-pane fade{if $item@first} in active{/if}" id="{$item.id}">
                    {$item.content}
              </div>
       {/foreach}
</div>
{/if}

Вот так-то лучше :)
Баха Волков
07 июля 2018, 20:33
+1
Файл:
assets/components/pdotools/js/pdopage.js

Строки 90-95:

$window.on('scroll', function () {
    if (!pdoPage.Reached && $window.scrollTop() > wrapper.height() - $window.height()) {
         pdoPage.Reached = true;
         pdoPage.addPage(config);
    }
});
Баха Волков
07 июля 2018, 18:35
0
Ну так залезайте в файл js который у pdoPage и там поменяйте строку одну
Баха Волков
06 июля 2018, 08:12
+1
Вот это:
[[!+page.nav]]
И вот это:
[[+pagetitle]]
Синтаксис MODX
А все остальное синтаксис fenom

Вот и посоветовал не мешать синтаксис.
Баха Волков
04 июля 2018, 18:57
+1
Нужно вот так:

<div id="pdopage">
            <div class="grid-container">
                <div class="rows">
                  {set $rows = $_modx->runSnippet('!pdoPage', [
	                'ajax' => 1,
                        'ajaxMode' => 'button'
                        'limit' => 5,
                        'tpl' => '@INLINE <h3>{$pagetitle}</h3>',
                        'ajaxTplMore' => '@INLINE <button class="button large btn-more">Загрузить еще</button>'
                      ])}

                   {$rows}

                 </div>
            </div>
{$_modx->getPlaceholder('page.nav')}
</div>

И лучше не мешать синтаксис.
Баха Волков
03 июля 2018, 22:03
0
Я так понимаю что вы говорите о модификациях товара, если так, то msOptionsPrice2 для miniShop2 и у Shopkeeper 3 есть дополнительные параметры товаров