Ну а отладку хотя-бы позволит включить из админки?
Вообще траблшутинг вещь такая, что надо сначала локализовать место трабла.
Что бы я сделал в такой ситуации:
1. Установил на локальном компе денвер, установил бы дефолтный сайт и подключил бы базу от рабочего сайта. База подключается в файле
\system\config\config.php там прописывается db_host, db_base и db_user. Можно просто скопировать этот файл с рабочего сайта и изменить db_host на айпи сайта.
2. Проверить, работает ли в таком виде. Если работает — проблема в файлах на сайте. Если нет — что-то не так настроено в админке.
3. Подбросить шаблон с рабочего сайта, проверить повторится ли проблема. Если проблема в шаблоне — подкинуть стили из дефолтного, убедиться не в этом ли проблема.
Ну и так далее, пока не выяснится в каком файле трабла.
vsemkrot,
А если зарегистрировать нового юзера, назначить его админом прямо через phpmyadmin (поставить ему 1 в колонке is_admin) и войти под ним в админку? Тоже белое поле?
PIN,
Если не проходит авторизация по нику — if(!$user) — предпринимается попытка авторизации по мылу.
Я проверял на чистом, свежеустановленном сайте. Все работает. Авторизует как по нику, так и по мылу.
Возможно, некоторым пользователям не очень удобно авторизовываться по имейл/пароль. На нашем сайте некоторые юзеры вообще не помнят, с какого мыла они регистрировались и спрашивают об этом у администратора сайта.
Поэтому сделал небольшой хак, добавляющий возможность авторизации по нику.
Делать особо ничего не надо, просто изменить public static function login в файле \system\core\user.php
Убираем проверку мыла на мыльность и меняем местами слово email на nickname:
public static function login($nickname,$password,$remember=false){
PIN,
Если честно, я тоже не люблю различных доработок кода не от создателя CMS. При любом обновлении именно в месте хака, как правило, возникают проблемы. Но уведомления на сайте — вещь нужная.
Матроскин интересовался по этому поводу — ему никто ничего не ответил.
Если разработчики озаботятся этим вопросом — огромный им респект!
Сколько тут люди не просили сделать уведомления об ответе в PM — решения так и не нашел. Поэтому пришлось допилить самому.
Итак, нам потребуется доработать всего три файла:
\system\controllers\comments\hooks\user_notify_types.php
\system\controllers\comments\frontend.php
\system\languages\ru\controllers\comments\comments.php
В файле \system\controllers\comments\hooks\user_notify_types.php просто стираем строку 'options'. Получается так:
<?php
class onCommentsUserNotifyTypes extends cmsAction {
В файле \system\languages\ru\controllers\comments\comments.php добавляем строку
define('LANG_COMMENTS_REPLY','На ваш комментарий ответили. Ответ выделен рамкой');
Потом идем в настройки профиля на сайте и выставляем получение уведомлений об ответак на комментарии "на сайте", вот так:
В результате приходят вот такие уведомления:
__________________________________
Если кому-нибудь в окне уведомления недостаточно маленького крестика в углу, а нужна глобальная кнопка "Закрыть" — в файл \system\languages\ru\controllers\comments\comments.php добавляем строку:
В пыхе не понимаю совершенно ничего, поэтому функция получилась примитивной, не содержит никакой информации и просто отправляет на ответ.
Если кто сможет добавить в окно уведомления ник ответившего и информацию на какой странице (заголовок страницы) — буду очень признателен.
Такое чуйство, что надо в админке включить дебаг (даже на продакшене) и хотя бы час помониторить что оно там пишет.
Результаты сохранить и проанализировать.
Rossoman,
Меня интересует, как оно определяет is_voted?
И почему у меня не получается переделать данную процедуру просто скопировав функцию в модель моего компонента и переименовав все слова "comment" в "faq".
Rossoman,
Спасибо за совет, но боюсь при моем знании пехапе я пока не готов к реализации данного метода.
Пока попробую изучить, что написали умные люди в файле components/comments/model.php
Попробую сделать по аналогии.
По крайней мере в таблице cms_comments в столбце "рейтинг" ничего через запятую нет, А однажды оценивший комментарий пользователь повторно голосовалки не видит.
Rossoman,
Сделать еще одно поле в таблице cms_faq_quests?
Но за каждый вопрос голосуют десятки юзеров. И их через запятую в одно поле?
Голосование за комментарии в точности такое же. Как там различаются проголосовавшие юзеры? В таблице cms_comments никакого дополнительного поля нет.
Скажите, каким образом у Вас запоминаются в базе юзеры которые проголосовали? Как называется столбец с проголосовавшими юзерами?
Также, как и юзеры проголосовавшие за комментарии.
В Таблице cms_faq_quests добавлен столбец rating. В этом столбце указывается рейтинг вопроса в соотношении к id вопроса. user_id там не учитывается никак.
Но, в таблице cms_ratings голоса учитываются.
Нужно просто изъять соответствие item_id и user_id из таблицы cms_ratings и в случае совпадения не показывать юзеру голосовалку.
В комментариях это как-то же работает.
Причем видно в каких файлах производится выборка из cms_ratings
И, что интересно в форумах нигде выборка из cms_ratings не используется, хотя там тоже есть голосование за посты!
Следовательно, различение голосовавших от неголосовавших происходит где-то в файле \core\lib_karma.php
И как вы вообще написали компонент, если не можете вытащить значение из базы?
Я не написал компонент, а создал новый компонент из компонента faq. Тупо переименовал все переменные из faq в anec. И это всё работает, как ни странно. То есть вместо вопросов теперь можно размещать шутки\анекдоты\афоризмы\истории и голосовать за это по десятибалльной (да хоть сколькоугоднобалльной) шкале. Голосовалка тупо взята из comments и дополнена. Единственно, что не работает — различение голосовавших юзеров от неголосовавших.
Не зная структуры базы, никто вам не поможет.
В таблицу cms_faq_quests был тупо добавлен столбец rating. А в таблицу cms_rating_targets тупо добавлен столбец quests.
У вас проблема заключается в написании кода? Вам нужно предоставить готовое решение, то есть написать код?
Еще раз переосмыслил всё сказанное.
На самом деле, мне нужно просто разъяснить, как различаются проголосовавшие и неголосовавшие юзеры в компонентах comments и forum.