Іван Клімчук

Іван Клімчук

С нами с 16 декабря 2012; Место в рейтинге пользователей: #7
Іван Клімчук
04 марта 2017, 21:48
+1
Вот да, тоже заметил. Я на работе сидел за 27", а потом дома открыл ноут и слегка офигел, пришлось подключать хотябы 22", чтобы код писать. Но учитывая, что многие перепроверяли и тестировали баги, то открыть github и админку modx + какую-нибудь консоль, то ноута должно хватить.
Іван Клімчук
04 марта 2017, 21:40
+4
Не принимай близко к сердцу, настроение было поэтическое, а белорусский — мой родной язык. :)
За поздравление спасибо.
Іван Клімчук
04 марта 2017, 21:39
+4
А в чем смысл трансляций конференций, когда потом выкладывают записи докладов? Но люди зячем-то просят и ни одна нормальная конфа сейчас не обходится без стрима, при этом качество стрима тоже не всегда самое лучшее. Трансляцию в записи смотреть смысла нет (я потому и написал что в аккаунте Sterc есть отдельные видео, где сама суть), смысл ее был вчера, когда это все было вживую и был эффект присутствия, но для порядку ссылку оставил.
По теме обновок, то да, после всех мерджей будет новая версия, скорее всего уже 2.6.0, так как кроме исправлений багов добавили и пару новых небольших, но фич.
Іван Клімчук
27 февраля 2017, 10:45
0
Автоматически там сделать вряд ли получится, но можно попробовать следующее. Найти исходники тех пакетов, которые вам нужно перенести. Именно исходники, где есть папка _build. Установить modx где-нибудь локально и скопировависходники туда попробовать собрать пакет. Если получилось, тогда скопировать ваш измененный код с сайта и заменить код в пакете, затем заново собрать дополнение. И потом загрузить на новый сайт.
Іван Клімчук
27 февраля 2017, 10:43
0
Вапор копирует весь сайт целиком в пакет, а тут как я понял, нужно какие-то уже ранее установленные пакеты собрать заново и перенести на другой сайт.
Іван Клімчук
26 февраля 2017, 08:28
+3
Про названия переменных уже сказали, это ужасно. Никогда так не делайте, называйте переменные правильно и не придется писать тонны комментариев к коду.
Второ момент, зачем тут такие странные манипуляции?

$g=$modx->getCollection('modResource',array('parent'=>$p));
foreach ($g as $g1){
    $where[]=$g1->get('id');
}
Лучше использовать getIterator, на большом количестве ресурсов памянть не закончится, это раз. Два раза вы делаете проход по массиву, абсолютно бесполезно. Вы же и так перебираете ресурсы, почему не сделать вот так?

foreach ($modx->getIterator('modResource', array('parent' => $parent)) as $resource) {

    $result = $modx->getObject('modTemplateVarResource', array('contentid' => $resource->get('id'), 'tmplvarid' => 1));

    ...
}
Большая вложенность кода в {} ухудшает читабельность кода, поэтому идеальный код — это прямой без ветвлений или стараться их избегать где возможно. Например, вместо проверки, есть ли значение в переменной и выполнения кода внутри if, можно проверить, что если значение пустое, то пропустить остальной код и перейти на следующую итерацию.

if (!$result) {
    continue;
}
$res = $result->get('value');
Про return из сниппета вам уже сказали, лучше собирать весь вывод в буфер в виде массива или строки и потом уже выводить одним return. Это даст возможность в дальнейшем, когда условия задачи изменятся, еще раз пройтись по массиву или строку и применить дополнительные действия над результатом.

Простой пример, у вас сниппет в зависимости от параметра должен выдавать или строку на экран или json в случае ajax-запроса. В таком случае можно сделать так:

$output = [];
foreach ($r as $r1) { 
    $output[] = $r1['text'];
}

return $ajax ? 
    json_encode($output)
    join("", $output);
И последнее, несмотря на то, что параметры в снипете уже присутствуют в виде переменных, лучше получать их значения через API MODX. Это в дальнейшем даст возможность использовать Property Sets (предустановленные параметры) и значения по умолчанию.

$parent = $modx->getOption('parent', $scriptProperties, null);
Іван Клімчук
21 февраля 2017, 10:37
0
Это делается средствами php, MODX тут не нужен.
Іван Клімчук
18 февраля 2017, 22:15
+4
Учитывая, что сейчас все работает в utf8 кодировке, то особых проблем быть не должно, но я бы не стал так делать.
Іван Клімчук
18 февраля 2017, 20:57
+1
О! Вот оно то самое решение, которое я не нашел. Только системные настройки нужно менять не глобальные, а для группы (или для отдельного пользователя).
Іван Клімчук
17 февраля 2017, 18:26
+1
Да, это второй альтернативный вариант, но там чуть кода больше писать нужно. Вариант с панелью чуть-чуть проще людям, которые не знакомы с кодом.
Іван Клімчук
17 февраля 2017, 10:39
2
+4
Быстрого и короткого решения нет, но если по механике всего действа, то я так делал. Менеджеры могут видеть только заказы минишопа.
Создал группу, куда поместил этих пользователей. Создал свою политику доступа (вернее две). Одну унаследовал от политики, которая идет с minishop2 (там чуть-чуть подтюнил один момент, чтобы нельзя было удалять заказ. Такой настройки нет в minishop2 сейчас, пришлось подправить исходники, не забыть бы PR Василию выслать), вторую от контент менеджера и поснимал галки со всех действий, которые мне были нужны (в частности запретил изменять как либо все ресурсы — требование заказчика). Затем эти политики доступа привязал в группе к контексту mgr. С правами на этом все, но осталась проблема, что нужно было после входа сразу отправлять пользователя в заказы минишопа, стандартных средств в MODX это сделать я не нашел, но решение есть. Создается панель (dashboard), которая назначается группе и пользователь попадает после входа на эту панель. А в самой панели я создал виджет, которые просто редиректит на заказы минишопа. В итоге, после входа пользователь сразу перенаправляется на нужную страницу.
В общем, коротко не получилось, но я предупреждал, что быстрого и короткого решения нет :)
На следующей неделе, если получится, запишу урок на эту тему.
Іван Клімчук
17 февраля 2017, 10:18
3
+1
Довольно просто, если в целом.
Вот пример моей формы с фильтрами и кнопкой.
<form action="" method="post" id="mse2_filters">
    {if $filters != 'Нечего фильтровать'}
        {$filters}
        <div class="filter">
            <main>
                <div class="txt-center">
                    <button type="reset" class="button-outline">Сбросить фильтры</button>
                    <button type="submit" class="hidden">[[%mse2_submit]]</button>
                </div>
            </main>
        </div>
    {else}
        <div class="centered">
            <p>
                
                {$filters}
            </p>
        </div>
    {/if}
</form>
Іван Клімчук
15 февраля 2017, 10:32
+3
Скопипастить код, выданный Disqus, и вставить его в шаблон на статью не тянет, ну никак.
Іван Клімчук
12 февраля 2017, 21:19
+3
А на сайте несколько контестов? Это известная проблема. В последнем обновлении Джейсон добавил улучшенный логгер битых ссылок, но то ли перестарался, то ли не доглядел и для контекстов не web ошибка показывается всегда. В вашем случае эти ошибки можно пока что игнорировать.
Іван Клімчук
12 февраля 2017, 12:21
+3
Такой кнопки нет, потому что это долгая операция и любой запуск просто не успеет выполнится из-за ограничений по времени выполнения со стороны вебсервера. Поэтому в данном случае тоже имеется ввиду консольный скрипт (вернее процессор).
Іван Клімчук
09 февраля 2017, 21:01
+1
У меня один вопрос — зачем? Google не зашифрован, но что-то не видно успешных копий.
Іван Клімчук
07 февраля 2017, 16:15
+1
О да, я больше скажу, у нас на проекте (который под такие тесты заточен) не один миллион строк кода, которые каждый день допиливаются.
Іван Клімчук
06 февраля 2017, 00:31
0
7 минут многовато конечно, но и 12 тыс ресурсов — дело такое. Учитывая, что проверяются даты и вычисляются коэффициенты важности ресурсов.
Іван Клімчук
06 февраля 2017, 00:29
+1
Ну странно вы реагируете на ответы. Вам предложили решение, которое один в один решает проблему, да, платное. Но проблему решает. А вы в ответ начали, что клиенты не одобряют, нужно тоже самое, но бесплатно, и ушли в рассуждения о том, что в Gallery вот примерно так, но чуть-чуть по другому и простыни кода. Я не минусовал, но я честно не понял вашего ответа.
Іван Клімчук
03 февраля 2017, 15:52
0
На эти страницы у вас настроены 301 редиректы, заголовок отдает X-Powered-By:PleskLin X-Powered-By:PHP/5.6.14

Если у вас панель Pkesk стоит, то возможно там что-то настроено. Но это скорее всего не MODX, а что-то выше уровнем. MODX такие заголовки не шлет.