Всем привет! Тут на днях столкнулся с проблемой: есть сайт (motorespect.com), в нем 2 раздела: новости и статьи, оба организованы в формате блога с помощью сниппета articles. Появилась задача: нужно в каждой статье и в каждой новости, после основного контента, поставить ссылки, типа — «предыдущая новость» «следующая новость». Я 2 дня рыл modx и гугл, толку ноль! Так понимаю, что у articles нет встроенного плейсхолдера для этой задачи… хотел наваять простенький сниппет, который будет возвращать ссылку по ID текущей страницы +, — 1, да вот незадача: все ресурсы от articles упрятаны в один контейнер, у каждого есть свой ID, но идентификаторы присваиваются статьям/новостям по времени их добавления! То есть, если последняя добавл.новость имеет id = 300, а статья — 295, то — если добавляем статью — ей присваивается id=301, а не 296… получается, что все ресурсы articles валятся в общую кучу, но в каждой из них есть своя метка принадлежности своему контейнеру… я так это понял! К сожалению, pdotools не годится для этой задачи: проблема с настройкой сервера хостинга… Пытался с помощью getResurces вывести — указав родительский контейнер, не могу сообразить как поставить сортировку (или фильтр), чтобы выводил соседние ресурсы… Друзья, подскажите, в какую сторону глядеть??? Я в MODx новичок, система очччень нравится, огромное желание её освоить! Пока, к сожалению, пытаюсь набираться опыта у более взрослых коллег… С уважением, Алексей.

Да, там действительно не хватает проверки пользователя по логину. Создал себе тикет.

$alreadyExists = $this->modx->getObject('modUser',array('username' => $username)); if ($alreadyExists) { $this->addFieldError('username', "Username already taken. Please choose another. "); return $contractor;

        } Разобрался, кто заинтересован, предлагаю такое решение

Добрый день. Столкнулся с такой проблемой, переопределяю процессор basket/web/orders/submit protected function createContractor(){ $contractor = null;

    $email = $this->getProperty('email');
    if ($this->getProperty('username')) {
    $username = $this->getProperty('username');
    }
    else{
     $username = $email;   
    }
    
 
    
    // Выполняем поиск существующего пользователя по username
    $c = $this->modx->newQuery('modUser');
    $c->innerJoin('modUserProfile', 'Profile');
    $c->where(array(
        'Profile.username:LIKE' => $username,
    ));
    
    
    if($user = $this->modx->getObject('modUser', $c)){
        if($this->allowGetUserByUsername){
            return $user; 
        }
        else{
            $this->addFieldError('username', "Username already taken. Please choose another. ");
            return $contractor;
        }
    } В результате регистрация как бы проходит, но пользователь не создается совсем

Андрей, я дал направление, а вы уже развивайте под свои нужды. И если вопросы еще есть — создавайте отдельную тему и там спрашивайте. Не стоит флудить, ведь все уведомления идут топикстартеру, а это уже оффтоп.

мне нужно замаскировать регистрацию, как бы сделать это все из чекаунта, чтобы его не перекидывало на страницу регистрации если он не зарегистрирован. это выходит и шаблон и процессор переопределять придется, чтобы у пользователя не только имя и почта в бд добавлялась но и пароль

Простейший способ: в шаблоне прописать условие {if !$modx->user->id} .... {else} .... {/if}

Причем чтобы это разумеется только в чекаунте проявлялось. Добавил в корзину и при подтверждении заказа если не авторизирован — предлагалась форма регистрации

Добрый день Николай, а подскажите алгоритм действий, чтобы наоборот запретить заказывать без полной регистрации