Skip to main content
Drupal code

Main navigation

  • Home
  • Snippets
User account menu
  • Log in

Breadcrumb

  1. Home

Disable reaching a node by its internal path (node id)

By admin , 29 February, 2024

Tags

  • access
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Drupal\node\NodeInterface;

function MYMODULE_preprocess_page(&$variables) {
  if (isset($variables['node']) && \Drupal::currentUser()->isAnonymous()) {
   $node = $variables['node'];
   if ($node instanceof NodeInterface) {
     if ($node->getType() === 'your_node_type') {
       $path = \Drupal::request()->getPathInfo();
       if (preg_match('#/node/\d+/*$#', $path)) {
         throw new NotFoundHttpException();
       }
     }
   }
 }
}

Tags Cloud

dependency injection(21) form(18) drush(14) views(11) twig(11) preprocess(9) field(8) node(7) translate(7) render(6) tabs(6) controller(5) config(5) phpstorm(5) file(5) entityTypeManager(5) routes(5) comment(4) database(4) jquery(4) service(4) roles(4) phpunit(3) php(3) cache(3) entity(3) slick(3) block(3) custom entity(3) javascript(3) user(3) taxonomy(3) guzzle(3) url(3) phpstan(2) event(2) commerce(2) template(2) schema(2) migration(2) libraries(2) date(2) access(2) ajax(2) photoswipe(2) permissions(2) logger(2) vscode(2) suggestions(2) states(2) title(2) fieldset(2) redirect(2) mysql(2) git(1) request(1) attribute(1) service provider(1) csv(1) PHPDoc(1) table(1) eslint(1) deprecation(1) theme(1) errors(1) wsod(1) settings.php(1) watchdog(1) pager(1) widget(1) module(1) file.usage(1) queue(1) exif(1) imagemagick(1) image(1) media(1) uuid(1) drupal.org(1) tests(1) renderer(1) array(1) exposed form(1) page manager(1) transliteration(1) random(1) entityQuery(1) development(1) mail(1) webform(1) register(1) textarea(1) label(1) input(1) batch(1) import(1) messenger(1)
RSS feed
Powered by Drupal