SpAyN,
Мне вот что интересно: в этой теме Вы смогли выложить на форум все эти символы, а содержимое постов записывается именно в базу.
Почему база этого сайта принимает юникодовые символы, а база вашего — нет?
Проверка
"🎁", "♦", "📌", "▼", "🐾", "✔", "🏆", "📢", "⌚", "⭐", "😃", "🎧", "🎤", "📷", "🔥", "🏻", "➰", "💡", "▶", "❤", "🍀", "🌎", "💰", "🤘", "🔋", "🎶", "😳", "⬇"
Мистика! Ни один из моих сайтов эти крякозябры не ест, а тут — пожалуйста!
Вот как выглядят эти крючки при редактировании:
Ris
+657
Репутация
3771
Рейтинг
Есть в ICMS1 такой компонент "Вопросы и ответы". И комментарии к вопросам можно писать, а вот количества комментариев к вопросу посмотреть нельзя, пока не откроешь вопрос.
Сами вопросы отдельно из базы не выбираются, формируется сразу вся страница категории, поэтому количество комментариев к каждому вопросу понятными средствами вычислить довольно затруднительно.
Сейчас у меня это сделано через цикл:
Но я думаю, что устраивать запросы в базу в цикле по 40 раз на странице не очень кошерно. Поэтому есть мысль подсчитать количество комментариев к каждому вопросу прямо при выборке вопросов из базы при формировании страницы с категорией.
Но возникло некоторое затруднение. При поиске в лефтджойненой таблице с каментами вывод самих вопросов начинает дублироваться. Сколько у вопроса каментов — столько сделает дублей вопроса.
Пробовал по-другому :
Тогда оно 5 минут вертит электронами и выдает на страницу один, самый первый вопрос и количество каментов к нему 360000 с лишним...
То есть запрос вытряхивает все каменты к вопросам из базы.
Может кто подскажет, как организовать вывод счетчика по правильному?
____________________________________________________________
В общем, заработало с GROUP BY
Но оооочень долго. 24 секунды думает.
Видимо придется оставить цикл…
Сами вопросы отдельно из базы не выбираются, формируется сразу вся страница категории, поэтому количество комментариев к каждому вопросу понятными средствами вычислить довольно затруднительно.
Сейчас у меня это сделано через цикл:
FOR($e=0;$e<=$rows-1;$e++) { $sql = "SELECT * FROM cms_comments WHERE target = 'anec' AND target_id = ".$quests[$e]['id'].";"; $result = $inDB->query($sql) ; $rows2 = $inDB->num_rows($result); $quests[$e]['comments_vote']=$rows2; }
Но возникло некоторое затруднение. При поиске в лефтджойненой таблице с каментами вывод самих вопросов начинает дублироваться. Сколько у вопроса каментов — столько сделает дублей вопроса.
$sql = "SELECT q.*, c.title cat_title, c.id cid, u.login, u.nickname, r.item_id rid, m.id comm FROM cms_anec_quests q LEFT JOIN cms_faq_cats c ON c.id = q.category_id LEFT JOIN cms_comments m ON m.target_id = q.id AND m.target = 'faq' LEFT JOIN cms_ratings r ON r.item_id = q.id AND r.target = 'quest' AND r.user_id = {$inUser->id} LEFT JOIN cms_users u ON u.id = q.user_id WHERE q.published = 1 ORDER BY q.pubdate DESC LIMIT 15";
$sql = "SELECT q.*, c.title cat_title, c.id cid, u.login, u.nickname, r.item_id rid, COUNT(m.id) comm FROM cms_anec_quests q LEFT JOIN cms_faq_cats c ON c.id = q.category_id LEFT JOIN cms_comments m ON m.target_id = q.id AND m.target = 'faq' LEFT JOIN cms_ratings r ON r.item_id = q.id AND r.target = 'quest' AND r.user_id = {$inUser->id} LEFT JOIN cms_users u ON u.id = q.user_id WHERE q.published = 1 ORDER BY q.pubdate DESC LIMIT 15";
То есть запрос вытряхивает все каменты к вопросам из базы.
Может кто подскажет, как организовать вывод счетчика по правильному?
____________________________________________________________
В общем, заработало с GROUP BY
$sql = "SELECT q.*, c.title cat_title, c.id cid, u.login, u.nickname, COUNT(m.target_id) comm FROM cms_faq_quests q LEFT JOIN cms_faq_cats c ON c.id = q.category_id LEFT JOIN cms_users u ON u.id = q.user_id LEFT JOIN cms_comments m ON m.target_id = q.id WHERE q.published = 1 GROUP BY m.target_id ORDER BY q.pubdate DESC LIMIT ".(($page-1)*$perpage).", $perpage";
Видимо придется оставить цикл…
Была подобная проблема. Сайт периодически зависал, страницы открывались по 5 минут и иногда вываливался can't mysql connect. После перезагрузки сервера работает две минуты нормально и опять переходит на черепашьи скорости.
Техподдержку хостера я задолбал тикетами насмерть. Чуть не до ругани дело доходило.
Исправил проблему уняв прыть поисковых ботов. И хоть меня и пытались убедить, что я в корне не прав, но я вижу факты, то есть разницу было/стало.
instantcms.ru/forum/thread23461.html
Техподдержку хостера я задолбал тикетами насмерть. Чуть не до ругани дело доходило.
Исправил проблему уняв прыть поисковых ботов. И хоть меня и пытались убедить, что я в корне не прав, но я вижу факты, то есть разницу было/стало.
instantcms.ru/forum/thread23461.html
Ну правильно. Нормальные герои, всегда иду в обход))
Как авторизоваться без мыла — уже обговорено.
instantcms.ru/forum/thread21606.html#206468
При отсутствии мыла автоматом записывать в эту колонку логин.Кто нибудь может подсказать, что еще можно сделать?
Создать копию компонента несложно. Скопировать все файлы из компонента groups в папку teams, открыть все файлы в ноутпэде++, заменить во всех открытых файлах group на team. Ну и три таблицы задублировать с такой же заменой. Дел на 5 минут.Дело в том что я хочу что бы и группы были и этот компонент например /groups был /team
Основная сложность в том, что компонент groups очень сильно интегрирован с остальными компонентами инстанта. И интегрировать так же дубль этого компонента будет не так просто.
Нико,
Переименуйте в файле \system\languages\ru\controllers\groups\groups.php все группы в команды и будет Вам счастье.
Переименуйте в файле \system\languages\ru\controllers\groups\groups.php все группы в команды и будет Вам счастье.
Посмотрел что за аннотации.
Похоже, что туда можно впихнуть картинки, ссылки и вроде даже html.
А вот логику типа php туда впихнуть не получится. Поэтому самый рабоче-крестьянский вариант представляется таким.
Вешается аннотация со ссылками. Ссылки ведут на сайт, откуда тупо редиректятся на ютуб. каждый редирект — накрутка счетчика на сайте.
А вот вывести результаты счетчика в аннотацию вряд ли получится.
Похоже, что туда можно впихнуть картинки, ссылки и вроде даже html.
А вот логику типа php туда впихнуть не получится. Поэтому самый рабоче-крестьянский вариант представляется таким.
Вешается аннотация со ссылками. Ссылки ведут на сайт, откуда тупо редиректятся на ютуб. каждый редирект — накрутка счетчика на сайте.
А вот вывести результаты счетчика в аннотацию вряд ли получится.
De.Ground,
Прошу прощения.
В этом вопросе помочь ничем не смогу, поскольку не знаю, что такое аннотации на ютюбе и как туда чего вставлять.
Могу только посоветовать вставить в названия радиокнопок ссылки на ютюб.
Прошу прощения.
В этом вопросе помочь ничем не смогу, поскольку не знаю, что такое аннотации на ютюбе и как туда чего вставлять.
Могу только посоветовать вставить в названия радиокнопок ссылки на ютюб.
<p><b>Какой мультик вам больше нравится?:</b><Br> <p><b>Пример опроса:</b><Br> <input type="radio" name="vote" value="1"><a href="http;//www.youtube.com/watch?v=gVEHBYHj8Sk" >Чебурашка</a><br> <input type="radio" name="vote" value="2"><a href="http://www.youtube.com/watch?v=qiKmt3wOJXQ" >Простоквашка</a><br> <input type="radio" name="vote" value="3"><a href="http://www.youtube.com/watch?v=3fdiJlPex8s" >Ивашка под простоквашкой</a><br> </p> <p><input type="submit" value="Голосовать">
А переделать радиокнопки в чекбоксы со ссылками?
Есть у меня тип контента, подразумевающий спецолимпиаду.
Создал набор, в котором выводятся лучшие посты, которые за определенное время голосования набрали наибольшее количество баллов рейтинга.
Для этого в таблицу cms_rating_log добавил колонку votedate, и добавил в компонент заполнение этой колонки временем голосования. Тут всё работает и замечательно добавляется время в колонку.
Потом создал поле контента, присвоил ему системное имя votedate и пытаюсь создать набор для вывода лучших постов за вчерашний день.
В наборе посты должны выводиться по убыванию рейтинга и с фильтрацией по votedate (не старше двух дней, не моложе одного).
Соответственно при выводе набора ожидаемо получаю ошибку:
Это и понятно, в cms_con_anec такой колонки нет. Теперь нужно подключить в выборку таблицу cms_rating_log. А вот как это сделать — ума не приложу.
Как в инструкции, написал $this->join('rating_log', 'r', 'r.target_id = i.id');
Пробовал засовывать это в разные места \system\controllers\content\model.php — никакого результата.
Кто может подсказать, в каком месте этой модели производится выборка из таблицы контента и как туда присоединить выборку из таблицы рейтинга?
______________________________________________________________________________________________________
Влепил в content\frontend.php строку
$total = $this->model->join('rating_log', 'r', 'r.target_id = i.id')->getContentItemsCount($ctype['name']);
Теперь ошибка выглядит так:
Осталось выяснить, как сменить элиас полю, либо как сделать, чтобы запрос выполнялся не к i.votedate а к r.votedate?
Создал набор, в котором выводятся лучшие посты, которые за определенное время голосования набрали наибольшее количество баллов рейтинга.
Для этого в таблицу cms_rating_log добавил колонку votedate, и добавил в компонент заполнение этой колонки временем голосования. Тут всё работает и замечательно добавляется время в колонку.
Потом создал поле контента, присвоил ему системное имя votedate и пытаюсь создать набор для вывода лучших постов за вчерашний день.
В наборе посты должны выводиться по убыванию рейтинга и с фильтрацией по votedate (не старше двух дней, не моложе одного).
Соответственно при выводе набора ожидаемо получаю ошибку:
Ошибка в запросе БД:
Unknown column 'i.votedate' in 'where clause'
SELECT COUNT(i.id) as count
FROM cms_con_anec i
WHERE (i.votedate >= DATE_SUB(NOW(), INTERVAL 1 DAY)) AND (i.votedate < DATE_SUB(NOW(), INTERVAL 2 DAY)) AND (i.is_parent_hidden IS NULL) AND (i.is_approved = '1') AND (i.is_pub = '1')
Последние вызовы:
getCount() @ D:\open\OpenServer\domains\tren.ru\system\controllers\content\model.php: 1496
getContentItemsCount() @ D:\open\OpenServer\domains\tren.ru\system\controllers\content\frontend.php: 181
renderItemsList()
call_user_func_array() @ D:\open\OpenServer\domains\tren.ru\system\core\action.php: 29
__call() @ D:\open\OpenServer\domains\tren.ru\system\controllers\content\actions\category_view.php: 92
renderItemsList() @ D:\open\OpenServer\domains\tren.ru\system\controllers\content\actions\category_view.php: 92
run()
call_user_func_array() @ D:\open\OpenServer\domains\tren.ru\system\core\controller.php: 278
runExternalAction() @ D:\open\OpenServer\domains\tren.ru\system\core\controller.php: 209
runAction() @ D:\open\OpenServer\domains\tren.ru\system\controllers\content\frontend.php: 28
route()
Unknown column 'i.votedate' in 'where clause'
SELECT COUNT(i.id) as count
FROM cms_con_anec i
WHERE (i.votedate >= DATE_SUB(NOW(), INTERVAL 1 DAY)) AND (i.votedate < DATE_SUB(NOW(), INTERVAL 2 DAY)) AND (i.is_parent_hidden IS NULL) AND (i.is_approved = '1') AND (i.is_pub = '1')
Последние вызовы:
getCount() @ D:\open\OpenServer\domains\tren.ru\system\controllers\content\model.php: 1496
getContentItemsCount() @ D:\open\OpenServer\domains\tren.ru\system\controllers\content\frontend.php: 181
renderItemsList()
call_user_func_array() @ D:\open\OpenServer\domains\tren.ru\system\core\action.php: 29
__call() @ D:\open\OpenServer\domains\tren.ru\system\controllers\content\actions\category_view.php: 92
renderItemsList() @ D:\open\OpenServer\domains\tren.ru\system\controllers\content\actions\category_view.php: 92
run()
call_user_func_array() @ D:\open\OpenServer\domains\tren.ru\system\core\controller.php: 278
runExternalAction() @ D:\open\OpenServer\domains\tren.ru\system\core\controller.php: 209
runAction() @ D:\open\OpenServer\domains\tren.ru\system\controllers\content\frontend.php: 28
route()
Как в инструкции, написал $this->join('rating_log', 'r', 'r.target_id = i.id');
Пробовал засовывать это в разные места \system\controllers\content\model.php — никакого результата.
Кто может подсказать, в каком месте этой модели производится выборка из таблицы контента и как туда присоединить выборку из таблицы рейтинга?
______________________________________________________________________________________________________
Влепил в content\frontend.php строку
$total = $this->model->join('rating_log', 'r', 'r.target_id = i.id')->getContentItemsCount($ctype['name']);
Теперь ошибка выглядит так:
Unknown column 'i.votedate' in 'where clause' FROM cms_con_anec i WHERE (i.votedate >= DATE_SUB(NOW(), INTERVAL 1 DAY)) AND (i.votedate < DATE_SUB(NOW(), INTERVAL 2 DAY)) AND (i.is_parent_hidden IS NULL) AND (i.is_approved = '1') AND (i.is_pub = '1')
Дикарка,
Мне всегда помогало просто очистить таблицу cms_online
Заходите в phpmyadmin, выбираете эту таблицу, жмете вверху "операции" и Очистить таблицу (TRUNCATE).
Мне всегда помогало просто очистить таблицу cms_online
Заходите в phpmyadmin, выбираете эту таблицу, жмете вверху "операции" и Очистить таблицу (TRUNCATE).
Переименовать переменные.
Я так копию компонента делал. Причем не глядя, групповой заменой в ноутпэде++.
Я так копию компонента делал. Причем не глядя, групповой заменой в ноутпэде++.
Александр Потапов,
Буквально позавчера сталкивался. Но у меня пропали блоги только одного клуба. Пытаю модераторов. Пока никто не сознался.
Буквально позавчера сталкивался. Но у меня пропали блоги только одного клуба. Пытаю модераторов. Пока никто не сознался.
А Вы попробуйте не просто кликнуть на ту ссылку, а правой кнопкой — открыть в новой вкладке. Откроется вполне нормальная страница авторизации.И виджет вызываемый ajaxom при нажатии на ссылку вход не пойдет.
Осталось запретить открывать эту ссылку аяксом и вставить на страницу виджет.