|
Правила •
Регистрация •
Справка Сообщения за день • Поиск |
|
|
|
Опции темы | Опции просмотра |
Напильникъ - наше все
|
Нашел еще один смешной косячок - на этот раз с мета-генератором.
Достало меня уже, что даже при просмотре конкретной темы в форуме в заголовок страницы все равно шел заголовок вида "Название форума : Форум : Описание сайта". Это было неудобно и для пользователей (если открыто несколько страниц с разными темами одного форума - найти нужную только по заголовкам панели заголовкам в панели задач/предпросмотре мягко говоря проблематично), и для поисковых пауков (тот же Гугль регулярно рапортовал, что есть много страниц с дублирующимся заголовком). Как обычно, ларчик открывался просто. Текущая реализация мета-генератора использует только ОДИН модуль для генерации заголовка и мета-тега, основываясь на следующем правиле: 1. Смотрим на директорию metagenerator в каталоге модуля 2. Если такой директории нет - идем по старому пути (т.е. в подпапке метагенератора в модуле system) 3. В директории метагенератора ищем ПЕРВЫЙ файл, название которого совпадает с именем одной из GET переменных. Подход понятен и вполне работоспособен для новостей, глоссария, статей и многих других модулей - но дает сбой на нашем любимом (не у всех) newbb_plus - именно потому, что при отображении в дефолтном модуле темы форума мы имеем ДВЕ GET переменные: forum и topic_id. Соответственно во всех случаях (неважно, смотрим мы сам форум или тему форума) для генерации заголовка и мета-тега используется модуль forum.php. Эта неприятность неактуальна для доработки форума от Zormax'а, но что делать любителям дефолтных вещей или людей, у которых форум уже закастомизирован по самое не балуй? Один из самых простых способов - это простейшая модернизация модуля метагенератора forum.php: анализируем внутри модуля наличие GET переменной topic_id, и если эта переменная задана - генерируем мету и заголовок для темы, если нет - то генерируем мету и заголовок для форума. В результате получаем вот такое содержимое файла forum.php: PHP код:
Последний раз редактировалось ZlydenGL, 03-17-2010 в 09:50 Причина: Добавил простые примечания в код Не ошибается только тот, кто ничего не делает. Ковчег построил любитель. Профессионалы строили Титаник. |
||||
|
|
Напильникъ - наше все
|
Продолжаем ковырять "старую" официальную версию форума
Есть в дефолтной инсталляции форума очень неприятный косяк: если производится перемещение сообщения пользователя в другой форум/тему, то тема-источник "прячется" и появляется в списке тем только после синхронизации сообщений и тем форума. Исправляется это, впрочем, элементарно - в файле mcs_post.php после 116 строчки PHP код:
PHP код:
Не ошибается только тот, кто ничего не делает. Ковчег построил любитель. Профессионалы строили Титаник. |
||||
|
|
Младший участник
|
Всплыло при попытке обновить runcms до 1.6.2, в модуле newbb_plus ткнул свернуть категорию, и больше она не развернулась.
При копании выловил такой javascript: modules/newbb_plus/include/newbbplus.js Код:
function save_collapsed(objid, addcollapsed){ var collapsed = get_cookie("newbbplus_collapse"); var tmp = ""; if (collapsed != null){ collapsed = collapsed.split(","); for (i in collapsed){ if (collapsed[i] != objid && collapsed[i] != ""){ tmp = tmp + collapsed[i]; tmp = tmp + ","; } } } if (addcollapsed) tmp = tmp + objid; expires = new Date(); expires.setTime(expires.getTime() + (1000 * 86400 * 365)); set_cookie("newbbplus_collapse", tmp, expires); } Javascript зачем-то перебирал все свойства объекта, конкретно в версии 1.6.2 выдавая явную чушь. Как следствие кука не обновлялась. Либо я что-то не понимаю, либо подразумевался цикл по элементам массива collapsed, а не по свойствам. Кстати, тут у вас на сайте по-прежнему тот же цикл по свойствам объекта, хотя кука и обновляется корректно, файл clientscript/vbulletin_global.js Заменил цикл на: for (i = 0; i < collapsed.length; i++), все заработало: куки сохраняются. Решил написать сюда: вдруг у кого тоже глюки возникнут, или вдруг я ошибаюсь и цикл все-таки по свойствам нужен... Последний раз редактировалось iltmpz, 08-21-2010 в 02:57 |
||||
|
|
Младший участник
|
Еще вопрос по форуму:
при включенной в админке отладке, в форуме перед каждым сообщением того юзера, под которым залогинен, выдаются ошибки: Цитата:
Пробовал подставлять в код запроса свой UID - разницы не заметил, вроде ничего нового в сообщении не появилось. Все же что с этим делать? Забить или есть какой-то фикс? Последний раз редактировалось iltmpz, 09-08-2010 в 22:46 |
||||
|
|
[исход]
|
Цитата:
Правила нашего Форума :: О клубе пользователей RUNCMS :: Рекомендации по публикации сообщений :: Прежде чем задать вопрос воспользуйтесь Поиском ------------------------------------------------------------------- Если что-то не работает, задавая вопрос, ! ОБЯЗАТЕЛЬНО ! пишите версию RUNCMS/модуля/PHP/MySQL и текст самой ошибки. |
||||
|
|
Младший участник
|
да, спасибо, ошибка исчезла
|
||||
|
|
Напильникъ - наше все
|
Вестник Напильника - очередная заметка хозяйке тайги
Ситуация: есть форум, в котором анонимусы могут писать в один из разделов - в основном связанном с техническими проблемами (оно и понятно - как можно написать о проблеме к примеру с авторизацией, если не можешь авторизоваться?), но также в этом разделе обсуждаются общие технические вопросы (доработки, предлагаемые пользователями, обсуждения того или иного функционала и т.д.). И вот тут начинается хитрая засада: раз анонимусы могут оставлять сообщения в этом разделе, то и для спамеров этот раздел полностью открыт. Естественно, автоодобрение сообщений от анонимусов в пресловутом разделе отключено, но... Подписка! Если пользователи подписываются на технические темы (а таких, несмотря на вялые отзывы, оказывается немало), то и рассылку от спамеров они получают, поскольку отправку сообщений производит файл post.php, НЕ производя дополнительных проверок! А потом сисадмин долго чешет репу и бьет бубен, почему домен у некоторых почтовиков в черном списке. В то время как решение есть вполне простое... Итак, берем файл modules/newbb_plus/post.php и правим его: заменяем фрагмент PHP код:
PHP код:
Не ошибается только тот, кто ничего не делает. Ковчег построил любитель. Профессионалы строили Титаник. |
||||
|
|
Младший участник
|
Цитата:
тот же файл: файл modules/newbb_plus/post.php PHP код:
Смысл в том, что 99,9% спамеры постят на форум ссылки. И 99,9%, реальный гость постить ссылку не будет. Если же сильно надо, то он всегда ее изменит, чтобы она не выглядела как ссылка. Вот при отправке сообщения я проверяю, содержит ли отправляемый анонимусом текст ссылку и если да, то возвращает ошибку о запрете сообщений для гостей. Все. После этого спам пропал весь. Ни капчей, ни чего другого не надо. 2 раза за месяца постили какие-то бессмысленные буквы - просто удалил вручную. |
||||
|
|
Младший участник
|
Созрел вопрос по newbb_plus:
У меня версия 0.81, но админка не изменилась. В общем, мой окончательно умерший-было форум внезапно оживился, и появилась необходимость в разделении тем, переносе сообщений из темы в тему и т.п. Есть ли такой функционал где-нибудь? Посмотрел в базу - операции элементарные: поправить поля: pid topic_id forum_id в таблице _bbplus_posts для этого сообщения и pid для следующего сообщения. Но писать это самому неохота - вдруг уже есть готовый скриптик? |
||||
|
|
Старожил
|
Всё для Sony Ericsson |
||||
|
|
|
|
|
Powered by: vBulletin Version 3.0 Copyright ©2000-2025, Jelsoft Enterprises Ltd. |
Все разделы прочитаны - Руководство форума - Архив - Вверх |