Закрыть
Загрузка данных
Логин:   Пароль:      
Регистрация   Забыли пароль?

Важные объявления:

Призовой фонд bigstreet




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

Фонд помощи разработчикам bigstreet

+ 500 рублей

15 горячих:


Сообщество

Прошу помощи!

Пожалуй, без этого сообщества не обойтись, так как постов на данную тему много, а сообщества нет. Одни могут здесь найти ответ на свои проблемы, другие – понять, с какими проблемами сталкиваются новички.

Публикации   Пользователи   RSS
Закрыть
Загрузить:
Указать:
Выравнивание:    Копирайт:
Альт
Цвет шрифта Закрыть
Белый Розовый Серебряный Оливковый Красно-коричневый Лимонный Зеленый Темно-синий Желтый Красный Серый Фиолетовый Водный Зеленовато-голубой Голубой
Выделить маркером Закрыть
Розовый Серебряный Оливковый Красно-коричневый Лимонный Зеленый Темно-синий Желтый Красный Серый Фиолетовый Водный Зеленовато-голубой Голубой Черный
Смайлики ;) Закрыть
Улыбка Нахмуриться Подмигивание Язык Смех Смущение Нерешительность Сюрприз Поцелуй Вопль Класс Денежки Ошибся Невинность Плач Рот на замке

Onair - не работает пагинация

В модуле onair отображается только одна (1-я) страница с последними коментами. При попытке перейти на стр. 2 (и далее) скрипт выдает 404-ю, с системным сообщением

«Ошибка: Запрошенное действие 2 модуля onair не обнаружено.»

Во всех остальных модулях пагинация работает исправно.
Подскажите пожалуйста, как решить проблему? Видел на многих проектах (также, как и на bigstreet.ru) Прямой Эфир функционирует как положено — все страницы доступны.
Дистр качался с SVN, правда уже давненько. Пробовал заменить файлы модуля onair, а также файлы, связанные с комментариями из папок system/mappers/ и system/essences на новейшие из SVN — результат тот же… мойсайт.ru/onair/ — работает, мойсайт.ru/onair/2 (/3, /4 и так далее) — выскакивает 404-я. Наверняка проблема уже всплывала, если есть решение дайте пожалуйста ссылку.
tommyred 25 февраля 2009 21:35 комментариев: 14
:) 2,13 :(
просмотров: 934

Комментарии:
Быстрое решение, которое должно сработать:
В файле modules/onair/controller.php замените ВСЕ содержимое НА:
  1. <?php
  2. //if (!$oRouter->getRequestAction()) {
  3.         $oRouter->setCurrentAction('index');
  4. //}
  5. ?>
p00h   26 февраля 2009 10:46
:) 0 :( #
Стоп! Код не верен, т.к. не учитывает наличие экшена user.action.php. Сейчас додумаю...
Негде потестить, поэтому приходится мыслить теоритически.
p00h   26 февраля 2009 10:50
:) 0 :( #
Вообще, переключение по страницам раздела onair (onair/2, onair/3...) должно работать корректно.
p00h   26 февраля 2009 10:59
:) 0 :( #
Спасибо за ответ. В том то и дело, что у многих эфир работает корректно… хотя у некоторых, (например на фотомоушене) — тоже видимо с этим проблема. Сравнил имеющуюся у меня версию модуля onair с новейшей версией с SVN — на первый взгляд добавилось лишь кеширование, поэтому работать должно бы в любом случае. Но увы =(
tommyred tommyred   26 февраля 2009 11:47
:) 0 :( #
Я тоже испытываю здесь проблемы, а на одном из сайтов очень даже серьезную. Вот пример: Иду по ссылки Эфир

вариант №1
  1.  
  2. Ошибка:
  3.  
  4. SQL Error: The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay at /home/мой_сайт/мой_сайт.ру/system/mappers/comments.mysql.mapper.php line 214
  5.  
  6. Array
  7. (
  8.     [code] => 1104
  9.     [message] => The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay
  10.     [query] =>
  11.                 SELECT SQL_CALC_FOUND_ROWS
  12.                         c.*,
  13.                         u.user_login AS author_login,
  14.                         u.user_avatar_ext AS author_avatar_ext,
  15.                         t.*
  16.                 FROM
  17.                         users AS u,
  18.                         comments AS c
  19.                         LEFT JOIN (SELECT topic_id, topic_title FROM topics WHERE is_hidden IS NULL) AS t ON t.topic_id=c.essence_id
  20.                         LEFT JOIN (SELECT image_id, photo_title FROM photos WHERE photo_publish IS NOT NULL) AS p ON p.image_id=c.essence_id
  21.                 WHERE
  22.                         u.user_id=c.author_id
  23.                 ORDER BY
  24.                         c.comment_added
  25.                 DESC LIMIT 0, 30
  26.                
  27.     [context] => /home/мой_сайт/мой_сайт.ру/system/mappers/comments.mysql.mapper.php line 214
  28. )
  29.  
  30.  
  31. # По вашему запросу ничего не найдено.
  32.  


Перезагружаю и вариант №2
  1.  
  2. По вашему запросу ничего не найдено.
  3.  


И было такое, что вариант №3 заходишь, а там все в порядке, не считая перехода по страницам

И каждый раз как в рулетке не знаешь, что увидишь. Вот так!

Понятно, что в моем случае что-то не лады с запросами к БД и всего скорей проблема сидит в comments.mysql.mapper.php — сижу разбираюсь.
inetlover inetlover   26 февраля 2009 15:21
:) 0 :( #
Давайте вместе!
Значится в index.php у нас устанавливается модуль и его action
  1. /**
  2.  * Set current action
  3.  */
  4. if (!System_Router::getCurrentAction() and System_Router::getRequestAction())
  5. {
  6.         if (System_Router::checkAction(System_Router::getRequestAction())) {
  7.                 System_Router::setCurrentAction(System_Router::getRequestAction());
  8.         } else {
  9.                 System_Router::setCurrentModule('errors');
  10.                 System_Router::setCurrentAction('404');
  11.         }
  12. }

Когда вылетает ошибка у нас срабатывает код
  1. else {
  2.                 System_Router::setCurrentModule('errors');
  3.                 System_Router::setCurrentAction('404');
  4.         }
  5.  
а срабатывает он потому, что метод
  1. System_Router::checkAction(System_Router::getRequestAction())
возвращает false, т.е. в случае адреса sitename/onair/2 движок ищет файл modules/onair/2.action.php =)
p00h   26 февраля 2009 15:42
:) 0 :( #
Кроме того, в файле modules/onair/controller.php
  1. <?php
  2. if (!System_Router::getRequestAction()) {
  3.         System_Router::setRequestAction('index');
  4. }
  5. ?>
который делает следующее:
Если в строке URI не указано ничего после имени модуля (sitename.ru/onair/ — указано только имя модуля onair) — использовать action
index
. В нашем же случае (sitename.ru/onair/2) получается, что имя
action
является
2
. Поэтому и выпадает ошибка «не найдено действие модуля», т.к. файла такого нет.
А теперь немного модифицируем код:
  1. <?php
  2. if (!System_Router::getRequestAction() or preg_match('/^\d+$/', System_Router::getRequestAction())) {
  3.         System_Router::setRequestAction('index');
  4. }
  5. ?>
теперь мы попросим систему устанавливать action
index
также в случаях, когда в адресе
sitename.ru/onair/2
стоят только цифры.
p00h   26 февраля 2009 15:59
:) 0 :( #
Конечно, поковыряюсь в коде, но ради эксперимента взял папку onair из версии BigStreet-CMS-alpha-2 и заменил. И переход по страницам заработал. А сейчас продолжу разбираться дальше.
inetlover inetlover   26 февраля 2009 16:12
:) 0 :( #
Да, действительно, модуль из версии альфа-2 ведет себя корректно в плане пагинации. Но в последней редакции были добавлены файлы user.action.php и user.tpl — они видимо отвечают за вывод всех коментов юзера на странице его профиля во вкладке Комментарии. Соответственно в случае отката на модуль из v.alfa-2 коментов в профиле юзера мы не увидим =(
tommyred tommyred   26 февраля 2009 16:47
:) 0 :( #
Так точно!
inetlover inetlover   26 февраля 2009 16:52
:) 0 :( #
Поспешишь запостить без отладки, проработав в голове — людей насмешишь. Вот рабочий код.
  1. <?php
  2. if (!System_Router::getRequestAction() or preg_match('/^\d+$/', System_Router::getRequestAction())) {
  3.         System_Router::setCurrentAction('index');
  4. }
  5. ?>
p00h   26 февраля 2009 16:09
:) 2 :( #
Спасибо за решение.
inetlover inetlover   26 февраля 2009 16:44
:) 0 :( #
Да, за решение спасибо. Но у меня в случае внесения соответствующей правки в controller.php слетает кодировка на странице модуля onair и в хедере наблюдаю warning-сообщение:

Warning: Cannot modify header information — headers already sent by (output started at Z:\home\bst.ru\www\modules\onair\controller.php:2) in Z:\home\bst.ru\www\index.php on line 342
Warning: Cannot modify header information — headers already sent by (output started at Z:\home\bst.ru\www\modules\onair\controller.php:2) in Z:\home\bst.ru\www\index.php on line 345

Если не затруднит, подскажите как это вылечить? Пока что сделал следующее — в controller.php, вместо:

  1. <?php
  2. if (!$oRouter->getRequestAction()) {
  3.         $oRouter->setCurrentAction('index');
  4. }
  5. ?>


вставил:

  1. <?php
  2. $oRouter->setCurrentAction('index');
  3. ?>


То есть код, аналогичный коду из версии альфа-2. Соответственно коменты в профилях потерял.
tommyred tommyred   26 февраля 2009 16:55
:) 0 :( #
Тысяча извинений, p00h ))) просто видимо кеш или накосячил в коде первый раз. На самом деле все просто отлично! Еще раз спасибо.
tommyred tommyred   26 февраля 2009 17:04
:) 0 :( #
Написать комментарий
Только зарегистрированные пользователи могут оставлять комментарии.





Подписаться на рассылку
"Бесплатный движок bigstreet.ru"


 
© 2009. | О сайте | Инструкции | Обратная связь
© Powered by BigStreet RC1-maps SVN Сервис коротких адресов День святого Валентина
www.webmoney.ru Участник проекта CMS Magazine


Работа с БД:
 Время - 2.3899
 Запросов - 12
Работа с кэшем:
 Время - 0.7157
 Записей - 2
 Прочтений - 5
Общее время:
 3.654