Василий Наумкин

Василий Наумкин

С нами с 08 декабря 2012; Место в рейтинге пользователей: #1
Василий Наумкин
11 января 2013, 17:05
0
По умолчанию выбирается все записи из таблицы, значит их нужно ограничить.

Нам подойдёт ограничение по классу, автору и статусу:
$where = array(
    'Ticket.class_key' => 'Ticket'
    ,'Ticket.published' => 1
    ,'Ticket.deleted' => 0
);
if (!empty($_REQUEST['uid'])) {
    $where['Ticket.createdby'] = intval($_REQUEST['uid']);
}

Вот и всё.
Также можно приджойнить TicketsSection, чтобы выбирать названия и урлы на разделы.
Василий Наумкин
11 января 2013, 16:11
0
Вот мой чанк из настроек профиля — там просто добавляется класс disabled, если выставлен плейсхолдер с провайдером…

<div class="alert alert-block ">
    <div class="row">
        <div class="span4">Пожалуйста, привяжите эти сервисы к своей учетной записи при помощи <b>HybridAuth</b>.</div>
        <div class="span3">
            <a href="[[+login_url]]&provider=Yandex" class="srv yandex [[+yandex.provider:isnot=``:then=`disabled`:else=``]]" title='Яндекс'></a>
             
            <a href="[[+login_url]]&provider=Google" class="srv google [[+google.provider:isnot=``:then=`disabled`:else=``]]" title='Google'></a>
             
            <a href="[[+login_url]]&provider=Twitter" class="srv twitter [[+twitter.provider:isnot=``:then=`disabled`:else=``]]" title='Twitter'></a>
             
            <a href="[[+login_url]]&provider=Facebook" class="srv facebook [[+facebook.provider:isnot=``:then=`disabled`:else=``]]" title="Facebook"></a>
             
            <a href="[[+login_url]]&provider=Vkontakte" class="srv vkontakte [[+vkontakte.provider:isnot=``:then=`disabled`:else=``]]" title="Вконтакте"></a>
        </div>
    </div>
</div>
Василий Наумкин
11 января 2013, 15:24
0
Нужно добавить эти ссылки самостоятельно.
Василий Наумкин
11 января 2013, 15:22
0
Нужно авторизоваться на другом сервисе, будучи уже залогиненным на сайте — новая запись привяжется.
Василий Наумкин
11 января 2013, 00:23
0
Вижу, что у таблиц префиксов нет.

Вместо site_content обычно modx_site_content. Как то ты установил свой сайт хитро. Погляди в phpmyadmin — таблицы с префиксом? Если да, то однозначно проблема в этом.

Я я пока забудусь сном.
Василий Наумкин
10 января 2013, 23:57
0
Верхняя панель, отчеты, журнал ошибок.
Василий Наумкин
10 января 2013, 23:44
0
Смотреть логи сервера и системный журнал MODX.

Больше ничего не могу посоветовать.
Василий Наумкин
10 января 2013, 16:40
1
0
Нужно просто поставить почтовый сервер:
sudo apt-get install sendmail

Обслуживание входящей почты советую отдать Яндексу.

Если будут проблемы с отправкой почты на тот же домен, по которому отзывается сервер (sendmail будет думать, что он должен доставить почту сам себе и не отправит её на Яндекс) — вот тут лечение.
Василий Наумкин
10 января 2013, 10:52
0
Tickets работают только с авторизованными юзерами.

Советую использовать HybridAuth, тогда залогиниться можно будет в один клик.
Василий Наумкин
10 января 2013, 05:47
0
Да, есть глюк с удалением связей. Лечим заменой в плагине на строке 43:
$q = $modx->newQuery('ModKits',array('rid:IN' => $ids));
$q->orCondition(array('gid:IN' => $ids));
$modx->removeCollection('ModKits', $q);
на
$modx->removeCollection('ModKits', array('rid:IN' => $ids));
$modx->removeCollection('ModKits', array('gid:IN' => $ids));

С msGetResource я что-то накрутил, видимо. Сейчас нет времени разбираться, но твоё решение вполне себе нормальное.

P.S.
1. Ты про блог у меня на сайте? Если да, то только через премодерацию в разделе «Вопросы». Пиши сюда заметку — если понравится, перенесу в другой блог.
Ну а вообще, есть как минимум 2 сообщества про MODX на LiveStreet, там свободная регистрация и создание блогов.

2. Комплекты будут, но поумнее сделанные. Система скидок — отдельная тема, она будет значительно позже.

3. Ты имеешь в виду, построить дерево товаров? Так Wayfinder и сейчас это может. В MS2 будут более продвинутые товары и там (скорее всего) стандартные сниппеты смогут сразу выводить цену и другие характеристики, сами того не подозревая.
Василий Наумкин
10 января 2013, 05:16
1
0
Практически всё на этом сайте делает Tickets. Использовать Articles + Quip никому не советую.

Блок справа реализован вот так
<ul id="sidebar-pills" class="nav nav-pills">
	<li class="active"><a href="#tab-comments" data-toggle="tab">Комментарии</a></li>
	<li><a href="#tab-tickets" data-toggle="tab">Публикации</a></li>
</ul>
<div class="tab-content">
    <div class="tab-pane fade in active" id="tab-comments">
        [[!TicketLatest?
            &limit=`20`
            &action=`comments`
            &tpl=`tpl.Tickets.comment.latest`
            &cacheKey=`comments`
        ]]
    </div>
    <div class="tab-pane fade" id="tab-tickets">
        [[!TicketLatest?
            &limit=`20`
            &action=`tickets`
            &tpl=`tpl.Tickets.ticket.latest`
            &cacheKey=`tickets`
        ]]
    </div>
</div>

Вкладки переключает Bootstrap, компонент Navs.
Василий Наумкин
09 января 2013, 19:42
0
В директории сайта:
ls -lsh ./

А процессы php вот так:
netstat -nlp | grep php5
Василий Наумкин
09 января 2013, 18:19
0
Это нормально — боты пробую подобрать пароль.

А вот если увидишь, что там кто-то, кроме тебя, смог зайти — это беда.
Василий Наумкин
09 января 2013, 17:24
0
Сомневаюсь.

Проверьте /var/log/auth.log на предмет посторонних заходом на сервер.
Василий Наумкин
09 января 2013, 16:30
0
Все просто: в миникарт данные попадают из сессии, которая очищается при отправке заказа.

А на странице, как правило, snippet miniCart расположен раньше сниппета miniShop, и при его загрузке сессия еще не очищена.

Я советую убирать миникорзину с этой страницы, она там ни к чему.
Василий Наумкин
09 января 2013, 15:46
0
Ну, явно какой то трабл с правами.

Может, директория tmp принадлежит одному юзеру, а процесс php-fpm запущен от другого? В общем, разбирайся, проблему, вроде как, обнаружили.
Василий Наумкин
09 января 2013, 08:58
0
Ну, с именем там будет так же, ибо если нет имени, но оно требуется для работы юзера в MODX — его приходится придумывать. Правда, Hybrid будет использовать идентификатор юзера на сервисе, вместо хэша, как Loginza.

Правильный способ — это дать возможность юзеру поменять имя, почту и другие поля профиля, как у меня. Это умеет и Loginza и Hybrid.

Однако — у Hybrid юзер самостоятелен. То есть, к учетной записи юзера сайта привязываются записи вконтакте, фейсбука и тд. И юзер, входя через любую из привязанных учеток, попадет в учетку своего юзера, с указанным там нужным именем и email. Можно даже сделать обычную авторизацию, а потом к ней добавить Hybrid, для ускорения входа.

А у Loginza связей нет. Там один удалённый сервис — одна учетка на сайте. Она быстрее устанавливается на сайт, но в итоге я не советую ей пользоваться — обнойлвений сниппета точно не будет.

Поэтому, со всех сторон Гибридом пользоваться лучше, и от loginza.ru не будешь зависеть.

P.S. При ответе на комментарий нужно нажимать под ним на ссылку «Ответить».
Василий Наумкин
09 января 2013, 08:38
0
Посмотрел в код страницы — jQuery подключен, но в футере.

А у меня, почему то, MarkItUp вызывается в шапке. В следующей версии исправлю, а пока можешь сам изменить в tickets.class.php на строке 139
$this->modx->regClientStartupScript($this->config['jsUrl'].'web/editor/jquery.markitup.js');
на
$this->modx->regClientScript($this->config['jsUrl'].'web/editor/jquery.markitup.js');

Для комментариев — аналогично, на строке 200. Ну или просто подключи jQuery в шапке сайта.
Василий Наумкин
09 января 2013, 08:29
1
0
Если сломалось сразу и везде — проблема системная. Php не обновлял, настройки не менял?

Алгоритм починки:
1. Смотрим ошибки загрузки в /var/log/nginx/имясайта-error.log
2. Проверяем наличие директорий /var/www/имясайта/tmp/ — именно туда грузятся файлы, сначала.
3. Проверяем конфиги сайтов в /etc/nginx/sites-enabled/имясайта.pool, особенно смотрим на строчки про upload и tmp.

Не помешает также запустить скрипт, восстанавливающий верные права на файлы и директории сайта, 0777 — это не хорошо.
#!/bin/bash

USER="имяюзерасайта"
GROUP="имягруппысайта"

chown -R $USER:$GROUP "/var/www/test/www";
find "/var/www/test/www" -type d -exec chmod 0755 '{}' \;
find "/var/www/test/www" -type f -exec chmod 0644 '{}' \;

Если всё сделано по моей инструкции, то имя юзера и группы совпадают друг с другом, а также, с именем директории сайта.
Василий Наумкин
09 января 2013, 08:20
0
Подключи jQuery.

<script type="text/javascript" src="http://yandex.st/jquery/1.8.3/jquery.min.js"></script>

При двойном вызове скрипта с редактором будет две панели с кнопочками. А у тебя его вообще нет — так что проблема была не там.