Вы здесь

Как скрыть страницу, но полоьзоваться ее материалами в блоках views

0

Здравствуйте друзья.

Иногда возникает необходимость создать специфические блоки контента, в виду чего я просто формирую новый тип материала, и в рамках страницы закидываю нужные мне элементы в Drupal, подтягивая их потом в блоки через views.

Можно ли скрыть такого рода страницы, как будто их вообще нет на сайте, но при этом не получить ограничений для работы с его полями через views?

Заранее благодарен сообществу.

Версия Drupal: 
7.x
Категория: 
Block APINode API
Вопрос задан 07.11.2015 - 10:52
Аватар пользователя Turon
Turon
17

формирую новый тип материала, и в рамках страницы закидываю нужные мне элементы в Drupal, подтягивая их потом в блоки через views

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

Комментарий оставлен 07.11.2015 - 11:07

Скрыть от пользователей и от поисковых систем - 404 на запрос по url например, как будто этих страниц и нет.
Менее размытые формулировки..? Добавляю новый тип материала, создаю страницу этого типа - например сертификаты, вывожу в блок изображения сертификатов из полей этой страницы, обрабатывая их скриптом для отображения в виде слайдера, при этом сама страница сертификатов должна отсутствовать по url-запросу из браузера например...

Комментарий оставлен 07.11.2015 - 11:30

Ответы

0

UPD: правильно использовать hook_node_access. Решение от imarat:

function MODULE_node_access($node, $op, $account){
    if ($node->type == 'type' and $op == 'view') {
        return NODE_ACCESS_DENY;
    }
}

Дополнительно можно скрыть её от поисковиков в robots.txt как-то так:
Disallow: /sertificat/*

Ответ дан 07.11.2015 - 11:30
Аватар пользователя shu
shu
178

Приведённый код позволяет выдать 404 ошибку на все страницы с типом ноды "sertificat"

Комментарий оставлен 07.11.2015 - 11:34

Т.е. если таких блоков например 10, что равняется 10 страницам - все их нужно обработать через модуль? Других решений нет..? Через robots не катит, нужно именно физически скрыть доступ, чтобы по урлу не работало.

Комментарий оставлен 07.11.2015 - 11:37

нельзя так делать, это костыль
при том еще и легко ломающийся

правильно так

function MODULE_node_access($node, $op, $account){
    if ($node->type == 'type' and $op == 'view') {
        return NODE_ACCESS_DENY;
    }
}
Комментарий оставлен 07.11.2015 - 11:54