Ritsuka Опубликовано 5 Декабря 2009 Жалоба Поделиться Опубликовано 5 Декабря 2009 (изменено) Модификация упрощена. Оставлена только страница редиректа, но переписана под максимальную производительность. hidelinks.zip Обновления от 5 дек:- отключен [hide]- переписано полностью с целью оптимизации количества запросов к БД и проходов с заменой Обновления от 6 дек:- исправлена ошибка в javascript - не обнулялись старые формы перехода Изменено 6 Декабря 2009 пользователем Ritsuka Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Kosiak Опубликовано 5 Декабря 2009 Жалоба Поделиться Опубликовано 5 Декабря 2009 (изменено) Ajax-редирект полностью скрывает ссылку от поисковиков (т.е. в строке состояния браузера она не появляется)? Если так, то вещь очень необходимая (ещё бы разрешить прямые ссылки только для администратора (либо прямые ссылки по специальному значению атрибута rel) - было бы вообще шикарно). Изменено 5 Декабря 2009 пользователем Kosiak Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Ritsuka Опубликовано 5 Декабря 2009 Автор Жалоба Поделиться Опубликовано 5 Декабря 2009 Kosiak, скрытие от поисковиков полное. Реальная ссылка выводится в форму через ajax-запрос. Пока что не скрываются только ссылки в пределах форума. Можно сделать исключения по любой схеме: группа автора поста, дополнительный параметр в ссылке, "белый список" разрешенных сайтов. Т.к. у меня потребности в скрытии ссылок нет, говорите вы, как нужно сделать Идиотское название вполне соответствует текущему уровню реализации идеи Предложения по названию так же приветствуются Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
steroid Опубликовано 5 Декабря 2009 Жалоба Поделиться Опубликовано 5 Декабря 2009 Ritsuka, если это возможно, конечно, отдельно хук редерикта, без хайда.. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Ritsuka Опубликовано 5 Декабря 2009 Автор Жалоба Поделиться Опубликовано 5 Декабря 2009 (изменено) Ritsuka, если это возможно, конечно, отдельно хук редерикта, без хайда.. См. первый пост.hook2.zip Изменено 5 Декабря 2009 пользователем Ritsuka Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Evrika Опубликовано 5 Декабря 2009 Жалоба Поделиться Опубликовано 5 Декабря 2009 Если без хайда то хук можно считать нормальным и ставить на "боевой форум" ? очень полезно кстати. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Ritsuka Опубликовано 5 Декабря 2009 Автор Жалоба Поделиться Опубликовано 5 Декабря 2009 Evrika, я не знаю. С одной стороны, все вроде правильно написал и обкатал на двух форумах. С другой стороны - хуку всего 6 часов от роду, так что... могут быть скрытые ошибки. В любом случае, можно поставить и удалить - это же хук, а не модификация кода. Он только переопределяет один шаблон, добавляет группу ajax-вызовов и создает дополнительную табличку в БД. Все обратимо и отменяется при удалении хука. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
WildRAID Опубликовано 5 Декабря 2009 Жалоба Поделиться Опубликовано 5 Декабря 2009 По два preg_match_all при выводе каждого поста, независимо от его содержания. И замена str_replace'ом. *__*Сурово же.. На вложенности все сломается. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Kosiak Опубликовано 5 Декабря 2009 Жалоба Поделиться Опубликовано 5 Декабря 2009 Пока что не скрываются только ссылки в пределах форума.Это как? В постах же скрываются? Если имеете ввиду ссылки например в копирайте или в сайдбаре, там, где права группы не работают, то можно ввести специальный аттрибут например rel="extlink", который будет из ссылки делать JS код (если это возможно конечно) Предложения по названию так же приветствуютсяHide Links, например или Redirect Links, (это если без хайда в посте, т.к. ИМХО в этом хуке он лишний) отдельно хук редерикта, без хайда..и это правильно, т.к. они решают разные задачи Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Ritsuka Опубликовано 5 Декабря 2009 Автор Жалоба Поделиться Опубликовано 5 Декабря 2009 Сурово. Есть идеи? Можно изменить встроенный bbcode-класс и превратить url-ы в javascript-вызовы там, это будет быстрее и результат парсинга будет кешироваться, но это вмешательство в код форума... Пока мне не удалось найти способ расширить через хук существующий bbcode-класс. Кажется, такой возможности и нет. А тег [hide] я добавил только на пробу. Изначальная задумка - отдельный custom bbcode-класс, парсящий hide с option и оставляющий взамен него "хвосты" вида <!--hide:%id%--> и последующая обратная замена опять же по preg_match_all и с проверкой условий (хранимых в отдельной табличке вместе со скрытыми данными) на контент или сообщение о невыполненных условиях. Тогда в везде кроме форумных постов будет текст <!--hide:22-->, не видимый невооруженным глазом, и данные будут спрятаны надежно и с условиями. Я не хочу переписывать скрипты форума. У меня был модифицированный портал, каждое обновление его приходилось переписывать, а не обновляться тоже нельзя - много ошибок. Вот и получается - либо пишем красиво, но ненадолго, либо основательно, но медленно. Кстати, не так и грузит - учтите, у нас всего по 20 постов на страницу. Единственно что, хочу собрать все $from в один супермассив и сделать только один запрос к БД на одну страницу темы, а не по запросу на каждую ссылку. А вообще, хорошо, что хотя бы посмотрели. Спасибо. Если еще выскажете свои идеи - будет совсем хорошо Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Evrika Опубликовано 5 Декабря 2009 Жалоба Поделиться Опубликовано 5 Декабря 2009 Ммм.. интересно конечно и руки чешутся поставить но боязно ставить на свое детище а тестфорума нет)) а вообще мне кажется если есть великолепная "Десятка" хуков и модов важных и нужных, то сей хук я отнесла бы в "первое" число))) Спасибо Ritsuka) Буду ждать обкатанной версии. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Ritsuka Опубликовано 5 Декабря 2009 Автор Жалоба Поделиться Опубликовано 5 Декабря 2009 (изменено) "Мысля пошла" (с) Переписываю хук заново, подождите ставить, скоро будет гораздо аккуратнее и быстрее. Решил не гнаться за двумя зайцами, а сделать качественный один хук для внешних ссылок. Изменено 5 Декабря 2009 пользователем Ritsuka Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Evrika Опубликовано 5 Декабря 2009 Жалоба Поделиться Опубликовано 5 Декабря 2009 "Мысля пошла" (с) Переписываю хук заново, подождите ставить, скоро будет гораздо аккуратнее и быстрее. Решил не гнаться за двумя зайцами, а сделать качественный один хук для внешних ссылок. Кстати, а без запросов к БД никак? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
WildRAID Опубликовано 5 Декабря 2009 Жалоба Поделиться Опубликовано 5 Декабря 2009 (изменено) Сурово. Есть идеи? Как минимум - использовать preg_replace_callback. Для пролистывания циклов - foreach вместоwhile(list($id, $post) = each($post_data))http://ru.php.net/manual/en/function.each.php#75692 Если никак нельзя избавиться от preg_match_all, то следует делать проверку strpos'ом на наличие хотя бы одного вхождения [hide]. Это если учесть, что пост с хайдом будет один на сотню. Изначальная задумка - отдельный custom bbcode-класс, парсящий hide с option и оставляющий взамен него "хвосты" вида <!--hide:%id%-->В точности так я и сделал. Что в двойке, что в тройке. И прошелся по всем граблям, которые возникают от такого подхода. Можно много про это написать, но проще посмотреть код. В конечном счете, это единственный способ реально что-то скрыть. Вернее, ничего умнее я не придумал. ~__~ Я не хочу переписывать скрипты форума.В 90% случаев это придется делать, если модификация затрагивает стандартные функции форума на хоть немного глубоком уровне. Система хуков - полный фейл. Кстати, не так и грузит - учтите, у нас всего по 20 постов на страницу.Сделайте профилирование xdebug'ом на больших постах. Думаю, это добавляет не менее 20% к общему времени, что есть адски много. Пяток таких модов, и сервер будет тянуть вдвое меньше юзеров. Кстати, а без запросов к БД никак?На первый взгляд - без проблем. Если хранить информацию по внешним ссылкам и скрытым текстам в таблице posts в виде сериализованных массивов. Это точно эффективнее, чем дополнительный запрос. Изменено 5 Декабря 2009 пользователем WildRAID Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Ritsuka Опубликовано 5 Декабря 2009 Автор Жалоба Поделиться Опубликовано 5 Декабря 2009 Обновлено. Теперь только скрытие внешних ссылок, только один дополнительный sql-запрос и один проход preg_replace на страницу. Для меня это приемлемо за тот функционал, что дает модуль. WildRAID, если честно, мое мнение таково, что выполняя extend класса с целью override построенной из шаблона функции под ip.board 3 со всеми его итерациями и не кеширующим кешем, переживать из-за миллисекунд разницы при использования each вместо foreach просто смешно. И форум я так же переписывать не буду. Хуки - это очень хорошо, жаль, что вы не хотите в них разбираться. Кстати, а без запросов к БД никак? На первый взгляд - без проблем. Если хранить информацию по внешним ссылкам и скрытым текстам в таблице posts в виде сериализованных массивов. Это точно эффективнее, чем дополнительный запрос.Минимизировал количество запросов до одного на страницу. Меньше никак. Предложенный WildRAID вариант требует модификации кода форума. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Demeter Опубликовано 5 Декабря 2009 Жалоба Поделиться Опубликовано 5 Декабря 2009 (изменено) Ritsuka, большое человеческое спасибо, нужная вещь ! Замечено: 1. Если внутренняя ссылка начинается с www (а url форума прописан без www) - определяется как внешняя Можно ли сделать, чтобы внутренними определялись ссылки forum.xxx и www.forum.xxx ? 2. При редактировании сообщения с внешними ссылками (т.е. изменить - там что-то редактируем, добавляем, не обязательно ссылки) - после сохранения внешние ссылки открываются 3. Иногда (как здесь, например) все ссылки на одной СТРАНИЦЕ форума ведут на одну в итоге.Т.е. в сообщении о переходе на внешнюю ссылку показывается правильная ссылка, при переходе - переводит на одинаковую для всех в данном сообщении ссылкуПричем, при перезагрузке страницы может выбираться другая ссылка. Такое происходит в рамках всех сообщений на одной странице Изменено 6 Декабря 2009 пользователем Demeter Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
tryer Опубликовано 6 Декабря 2009 Жалоба Поделиться Опубликовано 6 Декабря 2009 Установил хук..Но при кликанье на cskre в посте - тупо переходит на неё и всё..Нет такой картинки и предупреждения, как в описании хука в посте №1 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Kosiak Опубликовано 6 Декабря 2009 Жалоба Поделиться Опубликовано 6 Декабря 2009 Иногда (как здесь, например) все ссылкиУ вас все ссылки, даже внутренние имеют аттрибут rel=nofollow external и noindex, а смысл этого мода избавиться от таких конструкций, особенно на внутренних ссылках, т.к. метод IPS как химиотерамия или ковровые бомбардировки - убивает спам, но также убивает внутисайтовую перелинковку и нормальное перетекание PR по сайту...Нужно использовать только один метод. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Demeter Опубликовано 6 Декабря 2009 Жалоба Поделиться Опубликовано 6 Декабря 2009 Kosiak, спасибо, дельное замечаниеrel=nofollow external и noindex - убрал, но проблема переадресации всех внешних ссылок на одну в рамках одной страницы форума осталась Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Ritsuka Опубликовано 6 Декабря 2009 Автор Жалоба Поделиться Опубликовано 6 Декабря 2009 Ritsuka, большое человеческое спасибо, нужная вещь ! Замечено: 1. Если внутренняя ссылка начинается с www (а url форума прописан без www) - определяется как внешняя Можно ли сделать, чтобы внутренними определялись ссылки forum.xxx и www.forum.xxx ? 2. При редактировании сообщения с внешними ссылками (т.е. изменить - там что-то редактируем, добавляем, не обязательно ссылки) - после сохранения внешние ссылки открываются 3. Иногда (как здесь, например) все ссылки на одной СТРАНИЦЕ форума ведут на одну в итоге.Т.е. в сообщении о переходе на внешнюю ссылку показывается правильная ссылка, при переходе - переводит на одинаковую для всех в данном сообщении ссылкуПричем, при перезагрузке страницы может выбираться другая ссылка. Такое происходит в рамках всех сообщений на одной странице Большое спасибо за доверие и за то, что решились протестировать хук на рабочем форуме. 1. Да, это недоработка. Сейчас займусь исправлением. 2. Это не ошибка. Вы ведь говорите о быстром ajax-редактировании сообщения? При его использовании новое содержимое сообщения вставляется в форум в обход любых фильтров. После обновления страницы та же ссылка будет уже скрыта. Учитывая назначение хука - так ли критично, что если авторизованный пользователь, автор поста, имеющий право редактировать свои сообщения, при использовании быстрого редактирования сообщения через ajax будет на один раз видеть реальные ссылки? В общем, попробую это тоже учесть, но, кажется, "овчинка выделки не стоит". 3. Да, ошибку подтверждаю. У вас какие-то проблемы с форумом - графика и скрипты грузятся ооооочень медленно, что затрудняет поиск и отладку проблемы. Как только наладится - все проверю. tryer, у вас какая версия форума? Кажется, на версиях младше 3.0.3 не работает переопределение одного шаблона... 3. Нашел ошибку. У вас не уничтожаются старые popup'ы, а просто скрываются... Сейчас сделаю принудительное уничтожение, 5 минут. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Demeter Опубликовано 6 Декабря 2009 Жалоба Поделиться Опубликовано 6 Декабря 2009 У вас какие-то проблемы с форумом - графика и скрипты грузятся ооооочень медленно, что затрудняет поиск и отладку проблемы. Как только наладится - все проверю. Странно, у меня все очень быстро Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Ritsuka Опубликовано 6 Декабря 2009 Автор Жалоба Поделиться Опубликовано 6 Декабря 2009 Замените файл /public/js/ritsu.hidelinks.js на исправленный и обновите через Ctrl+F5. Хук переустанавливать не нужно.ritsu.hidelinks.js.zip Сейчас обновлю архив с хуком. Насчет форума - у меня ваша страница грузится полностью почти 2 минуты... Не знаю почему так. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Demeter Опубликовано 6 Декабря 2009 Жалоба Поделиться Опубликовано 6 Декабря 2009 3-я проблема решилась, 1-я - осталась Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
tryer Опубликовано 6 Декабря 2009 Жалоба Поделиться Опубликовано 6 Декабря 2009 Версия форума 304. Переустановил хук - всё так же - при кликанье на ссылку переход без окошка предупреждающего...Странно, что делаю не так? ДОБАВЛЕНО:Переместил хук в самый конец в списке и обновил кэш - и всё ЗАРАБОТАЛО!!!!!Спасибо за прекрасный хук! Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Ritsuka Опубликовано 6 Декабря 2009 Автор Жалоба Поделиться Опубликовано 6 Декабря 2009 Странно, что делаю не так?Как вариант, используете другие хуки, перекрывающие topicViewTemplate... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.