Константин Ильин

Константин Ильин

С нами с 10 февраля 2014; Место в рейтинге пользователей: #152
Константин Ильин
09 ноября 2017, 10:22
0
Причем придется добавить еще цикл, для поиска родителя у которого установлены права.
Т.е. я про вложенность, если вложенность 3 уровня или более. Но это блин, замедлит работу.
Константин Ильин
08 ноября 2017, 10:39
0
Приветствую Сергей!

Интересует пункт с правами родителя и дочерних документов.
Попробовал выставить права
- все - запрещено
- гости - запрещено
- Users - разрешено
Но неавторизированный пользователь все равно может просматривать дочерний документ.
Я полагаю такой функционал не сделан?
Подскажите пожалуйста как проще ограничить доступ к дочерним ресурсам? дочерних ресурсов много в ручную конечно же не вариант(все-таки 21 век)

Мысль написать плагин, чтобы слать всех на страницу авторизации если не авторизирован, но это как то «велосипедно», хотелось бы по уму.
Константин Ильин
17 октября 2017, 15:07
+1
В классе /core/components/modnodejs/model/modnodejs/modnodejs.class.php, была проблема с путем до файла.

joxi.ru/eAO0K3BIxg6Per
Константин Ильин
17 октября 2017, 14:35
0
Подскажите пожалуйста в чем проблема
joxi.ru/1A5QnldhnPzxjA
Ошибка что нет файла, его действительно нет. Смотрел на гите там тоже нет.

вроде процесс ноды запустился
joxi.ru/4Ak0YP5Iy40DMr

что не так? куда копать примерно?
Константин Ильин
03 октября 2017, 21:07
0
На вскидку:
есть событие OnUserSave, т.е. в плагине можно на это событие создавать тикет.

if ($modx->event->name == 'OnUserSave') {
    if ($user && $mode == 'new') {

    	//тут создаем тикет
    }
}
Константин Ильин
03 октября 2017, 01:04
0
В том проекте был смысл такой, что при определении региона показывать магазины в этом регионе, ну или городе. Это так сказать для юзабилити было. Но то решение с адресом тоже присутствовало на сайте. Просто Илон Маск не добрался до этой проблемы ;)
Константин Ильин
01 октября 2017, 12:31
+1
Самое простое это создать еще один чанк и готовить вывод заранее, а потом выводить в основном [[+subMIGX]]

foreach ($rows as $key => $row) {

    .......

    if(!empty($row['tv_name2'])){
        $subArr = json_decode($row['tv_name2'],1);

        foreach ($subArr as $keySub => $rowSub) {
            $row['subMIGX'] .= $pdo->getChunk($chunk, $rowSub, false);
        }
    }
    
   .......
}
Константин Ильин
01 октября 2017, 11:33
0
нужен вложенный foreach
$subArr = json_decode($row['tv_name2'],1);

эту строчку лучше вынести за foreach, т.к. лучше один раз присвоить переменной, чем каждый раз обращаться.
$pdo = $modx->getService('pdoTools');
Константин Ильин
01 октября 2017, 09:17
+1
$output = $pdo->getChunk($chunk, $row, false);
Вы каждый раз переписывайте значение $output, а не «соединяете» с предыдущим. Нужно делать конкатенацию результата.
вот так:
$output .= $pdo->getChunk($chunk, $row, false);
На счет кеширования точно сказать не могу, но насколько я понимаю кешируется сниппет и все что в нем, если вызывать его кешированным.
Константин Ильин
30 сентября 2017, 12:10
0
Ну я поэтому и взял в кавычки неадекват)

for и foreach это конечно понятно, просто у вас так прозвучало, что мол должен существовать другой метод, без циклов)

Главное разобрались!
Бывает у многих и я этим грешил, спать надо Сергей)
Константин Ильин
30 сентября 2017, 11:54
-1
Не за что!
Ну минуса справедливые ведь) Вы просто тут какой-то «неадекват» развели) Еще и умниками «всех» называете))
Константин Ильин
30 сентября 2017, 11:18
2
+1
Зачем сниппет писать, если можно пару строчек взять из getImageList ну или просто применить свои навыки программирования, благо феном позволяет все на месте писать.

умник ворвется крича что «цикл foreach тебя спасет»
А как еще можно пройтись по массиву?

Если зайти в сниппет getImageList можно найти такие строчки
.....
$fields['_alt'] = $idx % 2;
$idx++;
$fields['_first'] = $idx == 1 ? true : '';
$fields['_last'] = $idx == $limit ? true : '';
$fields['idx'] = $idx;
.....
Надо просто применить их на феноме:
{set $rows = json_decode($_modx->resource.migx_tv, true)}
{set $idx = 0}
{foreach $rows as $idxArr => $row}
    {set $row['idx'] = $idx++} {* idx от созданной переменной с инкриментом*}
    {set $row['idxForeach'] = $row@index} {* idx от foreach*}
    {*set $idxMIGX = $row['MIGX_id']*} {* idx от MIGX*}
    {if $row@first} 
        {set $row['_first'] = 'first item'}
    {/if}
    {if $row@last} 
        {set $row['_last'] = 'last item'}
    {/if}
    {if !($idx % 2)}
        {set $row['_alt'] = 'odd item'}
    {/if}
    {$row | print_r}
{/foreach}
Константин Ильин
26 сентября 2017, 14:16
0
— если используешь феном то надо вызывать некешированным
— бывает, что в css есть какие-то символы на которые минификс ругается и создает белеберду, у меня так с бутстрапом был глюк, убирал его из списка все норм работало.

после правки css заходить в админку и чистить кеш…
ну так для этого и нужен минификс, собрать все файлы воедино 1 раз и выдавать по запросу. Работай тогда пока без минификс, потом когда закончишь уже соберешь.
Константин Ильин
09 сентября 2017, 11:31
0
В админке при просмотре модификации работает и соответствует сортировке в категории.
А на фронте что-то надо поменять? какой параметр? т.к. там отображается в конце
{$_modx - > runSnippet('!msOptionsPrice.modification', [
        'tpl' => 'tpl.imagess',
        'includeThumbs' => '360x800',
        'sortby' => 'rank',
        'processOptions' => 1
])}
Константин Ильин
09 сентября 2017, 11:10
0
По сути ты правильно описал то что я придумал. Но возможно у тебя есть другое предложение или идея как сортировать опции.
Лучший пример — это ситуация:
Есть 10 неких опций, Тест 1-10. Спустя месяцы захотелось добавить опцию Тест 11, но так чтобы она отображался в карточке товара после опции Тест 3.
т.е.:
Тест 1
Тест 2
Тест 3
Тест 11
Тест 4
...
Тест 10
Что в таком случае делать с опциями msProductData которых нет в категории?
Вот я как то тебе задавал этот вопрос. Повторюсь, а зачем в списке опций для модификации, отображаются те опции которые вообще не должны быть у этой категории? joxi.ru/KAg7zleC4DBalA
т.е. не просто так же идет назначение опции для категории при ее создании в настройках ms2

Блин пока писал пост ты уже что-то сделал)))
Константин Ильин
08 сентября 2017, 16:00
0
{$_modx - > runSnippet('!msOptionsPrice.modification', [
        'tpl' => 'tpl.imagess',
        'includeThumbs' => '360x800',
        'sortby' => 'rank',
        'processOptions' => 1
])}
Володь, подскажи пожалуйста как можно отсортировать опции по rank у категории, rank хранится в ms2_category_options
joxi.ru/D2PVZOJspybd3r
Константин Ильин
04 сентября 2017, 12:37
0
Вот вот, я тоже думал, что она должна быть, но ее нет… капец, как так
Константин Ильин
03 сентября 2017, 19:49
0
Привет Володя, не могу утверждать, что это баг, но ко мне обратились с такой проблемой:
При добавление в моификацию опции, отображались не все опции
joxi.ru/82Qpan0sj73Kem

Чтож полез в процессор «mgr/misc/option/getkeys.class.php», вывел массив в лог joxi.ru/1A5QnldhnYkE4A
Там получил все опции нормально.

Пошел дальше с мыслью, что где-то исключается и как вариант лимит стоит, посмотрел функцию getData(). Там установил лимит на 0 и начали отображаться все опции.
joxi.ru/12M7daECM9X6xr

Версия последняя.
Константин Ильин
05 августа 2017, 09:36
0
Давно уже купил компонент и разобрался. Спасибо.