Здравствуйте уважаемые форумчане.
У меня возникла такая проблема:нужно реализовать отображение созданного с помощью hook_block_info и hook_block_view.
Реализовать отображение этого блока надо с помощью hook_permission.
Гугл толком ничего не выдает именно по настройке отображения блока,выдает почему то на настройку отображения страниц через hook_menu.
Нашел такое решение:
<?php/**
* Implements hook_permission().
*/
function my_module_permission() {
return [
'my_module_custom_permission' => [
'title' => t('My Module Custom Permission'),
'description' => t('Explain what this permission allows the user to do.'),
],
];
}
/**
* Implements hook_menu_alter().
*/
function my_module_menu_alter(&$items) {
$items['admin/structure/block/manage/block/5/configure']['access arguments'] = ['my_module_custom_permission'];?>
Но и оно не хочет работать.
Подскажите пожалуйста что я не так делаю,знающие люди .
Комментарии
А зачем так всё усложнять? Есть же стандартный механизм отображения блоков для ролей
Да,но дело в том что это мое обучающее задание )
Хотелось бы выполнить его так как от меня требуется.
Нагугленное решение не хочет работать потому что там:
а. управление доступом для редактирования блока
б. не весь код есть
В решении утверждалось что именно этот путь надо указывать.
Хотя там была вроде как поправка на то что такой путь надо указывать для тех блоков которые были созданы классически через Структура/Блоки/Добавить блок.
А можно само задание посмотреть?
1. hook_menu
Создать собственную страницу, в дальнейшем будет главной вашего сайта, а также создать страницы "403"
и "404", изменить адреса этих страниц в системных настройках сайта.
2. hook_block_info & hook_block_view
Создать блок, в котором будет выводиться произвольный текст, также блок должен иметь заголовок.
Блок должен выводиться на каждой странице сайта.
3. hook_permission
Создать доступ, который будет контролировать просмотр контента в предварительно созданном блоке.
Если определенный пользователь имеет доступ, тогда отображать текст что есть в блоке, если доступ отсутствует, тогда
писать надпись "access to view this content is denied.".
Ну в принципе ничего сложного. Создаете permission, а потом в hook_block_view проверяете:
<?php
if (!user_access('YOUR PERMISSION')) {
$block['content'] = 'sorry, access denied';
}
?>
Спасибо вам)
Это и вправду просто!
Мне как начинающему немного сложно пока что разобраться с родными функциями Drupal )
Благодаря вам я смог разобраться,в этом )
Стыдно что сам не разобрался
Данная тема закрыта,но мне хотелось бы еще спросить у вас какая функция(по типу user_access) будет проводить проверку в Drupal 8?
Там permission реализуется через yml и все совсем по другому в связи с чем у меня опять возникли трудности )
Вчера целый день убил ,пробовал совершенно разные пути.
От testblock до пути редактирования блока.
Самое интересное что со страничками данный код работает.
А вот с блоками нет(пробовал и на родных блоках Drupal).
Не могли бы вы подсказать какой путь будет правильным и что мне надо дописать в коде?