Добрый день!
Помогите, пожалуйста, решить проблему дубликатов в блоке Представления.
Блок представления доступен для каждого пользователя по адресу /users/имя_пользователя/blog/ и выводит все записи типа "Запись в дневник" пользователя.
Несуществующие и ошибочные ссылки
к примеру /users/имя_пользователя/blog/2589dkfjd
сейчас не ведут на несуществующую страницу, а дублируют страницу вывода дневника
/users/имя_пользователя/blog/
В настройках представления был добавлен Глобальный: Null. Какие настройки необходимо применить?
Комментарии
В том месте, где Вы прочли про Глобальный Нуль, было ведь и ещё что-то написано, правда?
https://drupal.ru/node/142687
Да, верно, эту тему изучили https://drupal.stackexchange.com/questions/48093/how-do-i-set-my-views-t...
Такие настройки не помогают. Это блок представления, здесь нет "Показать Страница не найдена".
Да, верно, эту тему изучили https://drupal.stackexchange.com/questions/48093/how-do-i-set-my-views-t...
Такие настройки не помогают. Это блок представления, здесь нет "Показать Страница не найдена".
"Скрыть представление" - в любом случае убирает все выводы записей пользователя.
"Указать критерии проверки" - также не дает результатов, выводится дубликат блога со всеми записями про любом несуществующем адресе.
Значит где-то в другом месте накосячено. Общие настройки представления можно увидеть?
Настройки представления
Если это блок, а не страница, то сама страница /users/имя_пользователя/blog/ откуда берется и чем формируется?
Обратите внимание на этот комментарий
Вам нужно настраивать представление, которое формирует страницу, а не блок. Валидация не нужна, ключевая настройка "Провалить проверку, если получен любой аргумент". Но глобальный Null настраивать, еще раз, не на блоке, а на странице.
Спасибо, а есть ли какой-то способ вывести информацию, какое представление используется для формирования страницы?
В настройках представления их 6. Удалось выяснить, что за вывод количества сообщений пользователя отвечает настройка "Навигатор - Постранично" в Block. Ну то есть если здесь изменить количество выводимых записей на странице в дневнике пользователя, то именно из этого Block берется значение количества страниц. Если изменить в Page, Data Export, Страница, Page-user-blog - количество страниц не изменится.
Навигатор не привязан к странице, он может быть в любом блоке. Нужно смотреть "Настройки страницы":"Путь". Там должно быть users/%/blog
"Уникальность" в настройках запроса не?
С радостью бы, расскажите, пожалуйста, как сделать?
На последнем экране, который соскринили Ctrl+F "Настройки запроса" - уникальность (галка).
Тут надо читать не тему, а содержимое вопроса. Оно к сформулированной теме не имеет ни малейшего отношения
К сожалению, имеет
Бесконечная куча дублей страницы дневника /users/имя_пользователя/blog
по любой несуществующей ссылке
/users/имя_пользователя/blog%D9%FA
/users/имя_пользователя/blog000
/users/имя_пользователя/blog-kjkjlj
Уникальность в настройках запроса поставили. Все равно отображаются все несуществующие ссылки типа
/users/имя_пользователя/blog%D9%FA
Отображается /users/имя_пользователя/blog
Какие всё же необходимы настройки в Глобальный: Null, если нет настройки "Показать Страница не найдена"?
И при чем здесь "Дубликаты в блоке"?
Создалось огромное количество страниц, которые проиндексировал Яндекс, это дубликаты представлени основной страницы дневника.
И при чем здесь дубликаты в блоке?
Конечно: посмотреть в исходник страницы. Но для этого нужно уметь видеть...
Что в поле Path/Путь у отображений Page, Страница, Page-user-blog?
Page - Путь:/%/blog
Block - Путь не указан
Data export - Путь:/user/%/blog/export
Страница - Путь:/blog
Блок на главной - Путь не указан
Page-user-blog - Путь:/%/blog
Таким образом, ни одна из страниц этого представления не отзывается на путь /users/%/blog.
Я посмотрел на сайт drupal.ru, и там аналогичные пути: https://drupal.ru/user/63384/blog
При этом Ваша проблема тоже присутствует: https://drupal.ru/user/63384/blog/blablabla
Ставлю на то, что это работа не views, а модуля blog, который в семерке входил в ядро, а потом был оттуда изгнан. Как с ним работать - понятия не имею, но проблему решать надо именно в нём.
Можно конечно еще погадать с Вашим блоком, но я не вижу каким образом при формировании отдельного блока можно выдать 404 на всю страницу без программирования. Вроде можно выдать 403. Будем гадать?
Да, конечно, хотелось бы решить.
Есть подозрение (могу ошибаться), что при пути вида /users/xxx/blog/yyy views может брать в качестве второго аргумента слово "blog", то есть нам нужен третий аргумент. Попробуйте добавить в контекстные фильтры ещё один Global:Null, и уж его настройте, чтобы при наличии любого значения он выдавал "Access denied".
Если установлен devel, можно посмотреть кто формирует страницу по адресу /devel/menu/item?path=users/имя_пользователя/blog
Спасибо, по данному запросу для всех дневников пользователей Devel показывает
Значит это не системные пути, а синонимы. Посмотрите в /admin/config/search/path , каким системным путям они соответствуют. А их уже проверить через devel. Подозреваю, что системный путь будет что-то вроде user/40236/blog
Спасибо, да, в синонимах указано, что системный путь ссылки /users/albinadidenko7/blog - user/40236/blog/
Но Devel показывает тут /devel/menu/item?path=user/40236/blog ту же самую
Called from /home/rc/web/romanticcollection.ru/public_html/includes/menu.inc, line 527
Эта строка для нас не принципиальна. В первой строке должно быть "Array..." и при клике на ней должен раскрываться массив.
Спасибо, вот такой массив:
Видно, что страницу user/40236/blog формирует функция user_blog_page(). Значит views тут не причем. Возможно это какой-то кастомный модуль, потому что в ядре такого нет и контрибов я таких не припомню, хотя могу и ошибаться. Но, с учетом изысканий @marassa, возможно, что несуществующая страница /users/имя_пользователя/blog/2589dkfjd формируется чем-то другим. И еще, вполне может быть, что там hook_url_inbound_alter() в каком-нибудь кастоме преобразует урл на лету. Вобщем надо смотреть код. В любом случае, врядли без кодинга можно будет решить проблему.
Еще можно попробовать где-нибудь в шаблоне сделать
dpr(current_path());
и посмотреть, какой системный путь у этой страницы.Раз уж Вы рассекретили свой секретный сайт, я позволил себе по нему немножко полазить и посмотреть код страниц, и вот что я обнаружил:
Цыфры после /blog/ - это не абстрактная ерунда, а id конкретной записи в блоге. Например:
https://www.romanticcollection.ru/users/albinadidenko7/blog ведет на весь блог пользователя, а
https://www.romanticcollection.ru/users/albinadidenko7/blog/66980 ведет на конкретную запись в блоге, и только если записи с таким id не существует, тогда опять выдается весь блог:
https://www.romanticcollection.ru/users/albinadidenko7/blog/blablabla
Так что может быть всё не так ужасно, и бóльшая часть ссылок в яндексе ведут на вполне законные записи в блогах?
Да, вы правы, все записи в дневнике имеют такой вид /users/имя_пользователя/id_ноды
И если записи с таким id не существует, то выводится дневник, а не несуществующая страница.
Конечно, большая часть ссылок в порядке, но яндекс.вебмастер показывает огромное количество таких страниц-дубликатов, а это не очень хорошо для поисковой оптимизации.
И еще наблюдение: если открывается конкретная запись в блоге по корректной ссылке, то Ваш блок views вообще никак не присутствует на странице, то есть это сам модуль Blog при разборе пути решает показывать блок view или показывать ноду с записью.
А на странице /admin/structure/block этот Ваш blog: Block как-то присутствует в явном виде? С какими условиями?