Andrey

Andrey

С нами с 08 августа 2016; Место в рейтинге пользователей: #213

Виртуальные вкладки для страницы пользователя!

Приветствую сообщество!

Вопрос собственно в следующем!
Как бы мне сделать вкладки как на здесь на modx.pro для одного юзера! (заметки, комменты, избранное)
П.С.
Говорить о том, что «надо сначала воспользоваться поиском» не надо, пишу это как раз потому, что воспользовался!

Понимаю есть ааахренеть сколько мануалов и примеров, например здесь:
https://modx.pro/howto/7909-page-users-on-modxpro/
но тем не менее пример у меня не работает, даже не хочет работать элементарно страница пользователя!
Сама страница пользователя у меня тем не менее есть и организована так:

<?php
// обрабатываем только события OnPageNotFound, на случай, если отметили галкой и другие в настройках плагина
if ($modx->event->name != 'OnPageNotFound') {
    return false;
}
// на случай, если у нас настройки кто-то менял, получаем значение переменной, через которую передаются ссылки в modx от веб-сервера
$alias = $modx->context->getOption('request_param_alias', 'q');
// проверяем, что такая переменная есть, иначе и обрабатывать нечего
if (!isset($_REQUEST[$alias])) {
    return false;
}
// наш запрос, который нужно разобрать и обработать
$request = $_REQUEST[$alias];
// разбиваем ссылку на составляющие,
// как правило, будет что-то вроде users/username, на выходе будет массив с этими значениями
$chunks = explode('/', $request);
// на всякий случай проверяем, что у нас есть корневой ресурс для пользователей, страница users
if (!$users = $modx->getObject('modResource', ['id' => 571])) {
    $modx->log(modX::LOG_LEVEL_ERROR, 'Entry point resource for users not found.');
    return false;
}
// а теперь обрабатываем нам запрос. 
switch ($chunks[0]) {
    // сверяем первую часть ссылки с алиасом нашего ресурса для пользователей, должны совпадать
    case $users->get('alias'):
        // еще одна проверка существования ресурса (наверное можно удалить, взял пример из реального проекта)
        if (!$usersSection = $modx->findResource($chunks[0])) {
            return false;
        }
        // у меня ссылки генерились с html, поэтому я вырезаю расширение перед поиском самого юзера 
        $userAlias = str_replace('.html', '', $chunks[1]);
        // еще одна проверка + убираем концевые слеши и редиректим на нормальную ссылку
        if ($chunks[1] != $userAlias || (isset($chunks[2]) && $chunks[2] == '')) {
            $modx->sendRedirect($chunks[0] . '/' . $userAlias);
        }
        // пробуем найти пользователя по username из запроса, если не нашли, то посылаем 404 заголовок
        // тут важно вручную послать страницу 404, иначе, если вернем просто ошибку, то у нас опять запустится обработчик 
        // 404 ошибки, опять запустится наш плагин, опять тут будет ошибка и привет бесконечный круг и ААААА! Ничего не работает!!!!!
        if (!$user = $modx->getObject('modUser', ['id' => $userAlias])) {
            $modx->sendForward($this->getOption('error_page'), $this->getOption('error_page_header', null, 'HTTP/1.0 404 Not Found'));
        }
        // пользоввателя нашли, теперь подгружаем его данные (профайл, расширенные поля и тд)
        /** @var modUserProfile $profile */
        $profile = $user->getOne('Profile');
        $extended = $profile->get('extended');
        // прописываем все наши данные в плейсхолдеры, чтобы потом на странице их вывести
        $modx->setPlaceholders($user, 'user.');
        $modx->setPlaceholders($profile, 'user.');
        $modx->setPlaceholders($extended, 'user.');

		// тут у меня еще момент, что пользователь может указать, что у него профиль приватный и его никому показывать нельзя,
        // поэтому в таком случае тоже 404 возвращаем. Но можно удалить
        // profile private, we should return not found error
        // if (isset($extended['private']) && $extended['private'] == 1) {
        //     $modx->sendForward($this->getOption('error_page'), $this->getOption('error_page_header', null, 'HTTP/1.0 404 Not Found'));
        // }

        // ну и отправляем нашу страницу с шаблоном профиля пользователя, где уже выводим всю его подноготную
        $modx->sendForward($usersSection);
        break;
}
Сделана по этому примеру:
https://modx.pro/help/9820/

Прошу помощи! Но так, чтобы не пришлось менять вид чанков и политики вызова данных пользователя на фронт! Заранее спасибо за любою помощь!
Andrey
16 мая 2017, 21:07
modx.pro
1
3 585
0

Убрать ресайзер у videoGallery

Приветствую сообщество!

Нужна помощь. И собственно вопрос уже в заголовке.

Требуется убрать ресайзер (или поправить размеры и качество превью), который обрезает качество и разрешение картинки при заливании ролика на сайт.
Не шарю в php и не очень хорошо ориентируюсь в js чтобы прочухать код компонента, но беглым взглядом ничего похожего не нашел. (заливаю через фронт, через форму Тикета)

Боюсь чего натворить. Подскажите пожалуйста как исправить ситуацию!
Andrey
27 апреля 2017, 00:16
modx.pro
1 031
0

Вызов нескольких pdoPage на странице

Приветствую сообщество!

В общем проблема следующего характера:
1. Есть список пользователей в форме таблицы с ссылками на страницу-паспорт каждого пользователя!
2. Есть страница-паспорт, сделанная с помощью плагина (Виртуальная страница пользователя)
3. На каждой такой странице идет вызов 4 pdoPage объектов, каждый отвечает за отображение того или иного блока активности пользователя!
Andrey
16 декабря 2016, 00:22
modx.pro
2 590
0

Ошибка php AjaxForm!

Приветствую сообщество!

В общем дело такое, пользуюсь AjaxForm для модуля «Обратная связь» и вот раньше такой ошибки не было, а теперь появилась:
Notice: Undefined variable: hook in /home/s/stark44/starknet/public_html/core/cache/includes/elements/modsnippet/216.include.cache.php on line 41
Собственно содержимое файла:
<?php
// Register API keys at https://www.google.com/recaptcha/admin
$site_key = $modx->getOption('recaptchav2.site_key', null, '');
// reCAPTCHA supported 40+ languages listed here: https://developers.google.com/recaptcha/docs/language
$lang = $modx->getOption('cultureKey', null, 'en');

$recaptcha_html = $modx->getChunk('recaptchav2_html', array(
    'site_key' => $site_key,
    'lang' => $lang,
    ));

if ($hook) { 
    $hook->setValue('recaptchav2_html', $recaptcha_html); // This won't re-render on page reload there's validation errors
    return true;
} else { // This works at least
    return $recaptcha_html;
}
return;
Самое интересное, что форма работает нормально, письма отправляет! Но вот ошибка реально раздражает, методом проб и ошибок, понял, что она возникает из за сниппета recaptchav2 как бы с одной стороны не смертельно установить другую, но очень уж нравится гугловская!

Может кто подскажет чего и куда копать!
Заранее спасибо!
Andrey
27 ноября 2016, 18:38
modx.pro
2 205
0

Вывод Embede-ссылки в ленту [videoGallery]

Приветствую сообщество!

Сразу к делу, пользуюсь компонентом videoGallery для добавления видео с фронта на сайт по этой инструкции:
modx.pro/components/6799-add-videogallery-videos-from-frontend/

Все круто, на созданную страницу видео вывожу так:
[[pdoResources?
&parents=`0`
&resources=`[[*id]]`
&includeTVs=`video`
&tvPrefix=``
&decodeJSON=`0`
&tpl=`@INLINE 
{set $video_json = json_decode($_modx->resource.video, true)}
Andrey
16 ноября 2016, 04:54
modx.pro
2
1 167
+1

Не отображает общий рейтинг одного тикета!

Приветствую сообщество!

Собственно вопрос в следующем! Вот у меня несколько разделов с тикетами, там есть куча тикетов и все дела!
И все было здорово, пользователи голосовали за тикет и вроде все работает как часы!
Настроил голосование так, чтобы пользователь мог проголосовать, поставив Плюс! (Минус и Воздержаться я убрал)
И вот теперь, чтобы долго не разводить дискуссию, наглядная картинка, что происходит сейчас:

Это начало происходить совсем недавно! Буквально несколько дней назад!
Подскажите в какую сторону копать!
Заранее спасибо!
Andrey
13 ноября 2016, 02:13
modx.pro
664
-1

фильтр по ТВ-полю через "where"

Приветствую сообщество!

В общем прочитав один триллион страниц и еще немного гугл, я понял, что все же своими силами не решу данную задачу!

В общем в чем суть! Есть два раздела!
Раздел номер один — статьи! (контейнер с тикетами)
Раздел номер два — Кино! (контейнер с тикетами)
В Разделе Кино, есть фильм или сериал и на странице этого сериала выводятся новости из контейнера Статьи, которые ясное дело с ними связаны! Как я это хотел сделать?
В форме добавить статью есть поле (2TypeTV), которое содержит автопоиск, этот автопоиск включает в себя скажем список из pagetitle раздела Кино! И когда я через форму заполняю точное название (например фильм «Васаби»), то эта статья отображается в разделе Кино на странице этого фильма в той самой вкладке! Собственно доя этой задачи подошла вот эта конструкция:
&where=`{"pagetitle":"[[*2TypeTV]]"}`
Andrey
03 ноября 2016, 00:27
modx.pro
1 420
0

CSS классы для +/- рейтингов

Приветствую сообщество!

Наверняка сейчас в меня полетят тухлые помидоры, но хоть убейте не нашел решения!
Задача то не сложная, по по скольку я не почти не шарю не в php не в java, то для меня это сущий ад!
Итак, задача то простенькая:
Необходимо сделать так, что бы выводимому рейтингу присваивался определенный класс, например:
green и red
для того, чтобы в результате выводить при положительном рейтинге что то вроде такого:
<span class="green">800</span>
а прим отрицательном так:
<span class="red">-75</span>
Я реально понимаю и примерно представляю какими средствами необходимо воспользоваться или как можно этого достичь! Но знаний реально мало, поэтому очень прошу помощи!

Спасибо за любую подсказку и даже за помидор брошенный в мою сторону!
Andrey
01 ноября 2016, 19:49
modx.pro
989
0

Управление группами пользователей из фронтэнда

Приветствую сообщество!

Искал, перерыл весь интернет и ищу уже слишком давно!
В общем какой смысл, из него же вытекает название темы!

Необходимо:
1. Сделать так, чтобы пользователь мог создавать Подгруппы в определенной группе (пользотвателей разумеется) из фронтэнда с возможностью лидеру группы назначать роли новым пользователям в группе! Для чего? (Но именно так, чтобы новая группа добавлялась как подгруппа, для Родительской группы)
2. Для того, чтобы организовать, что то вроде групп или пабликов в ВК, где пользователь мог либо сам присоединяться, либо по заявке! Для чего?
Andrey
03 октября 2016, 10:39
modx.pro
1 080
+1

Виртуальная страница пользователя

Вот была тема:
Страница пользователя как на modx.pro

Здесь было описано как сделать страничку пользователя с кучей мануалов! Вроде все понятно и вообще не чего трудного!

Делал все как написано в инструкции, которая расписана можно сказать так, что и «чайник» вроде меня разберется!
Andrey
14 сентября 2016, 13:21
modx.pro
8
2 559
0