Exclude visibilty of entity to the specific url by means of php

<?php 
if(arg(0) == 'user' && arg(2) != 'edit' )
return true;
else 
return false 
?>

 

E.g., the sport article, whose path is http://www.example.com/sport.

<?php
  $url = request_uri();
  $pos = strpos($url, "article");
  if ($pos === false && arg(0) =='sport') {
    return TRUE;
   }
 ?>

 

Either using the following code:

<?php
  $arg1 = arg(1);
  $arg2 = arg(2);
  // Check arg(1) is not empty, or is_numeric() returns TRUE for NULL.
  return (arg(0) == 'video' && !empty($arg1) && !is_numeric($arg1) && empty($arg2));
?>

 

The code I reported shows the block for paths like "video/video1"; if you want to show the block also for paths such as "video/video1/edit", then the following code should be used.

<?php
  $arg1 = arg(1);
  return (arg(0) == 'video' && !empty($arg1) && !is_numeric($arg1));
?>

Using arg() doesn't work if the path you are looking for is a path alias. Suppose that "video/video1" is a path alias for "node/10"; in that case arg(0) will return "node," and arg(1) will return "10." The same is true for $_GET['q'] that will be equal to "node/10."

This happens because Drupal, during its bootstrap, initialize $_GET['q'] with the following code:

  // Drupal 6.
  if (!empty($_GET['q'])) {
    $_GET['q'] = drupal_get_normal_path(trim($_GET['q'], '/'));
  }
  else {
    $_GET['q'] = drupal_get_normal_path(variable_get('site_frontpage', 'node'));
  }
  // Drupal 7.
  if (!empty($_GET['q'])) {
    $_GET['q'] = drupal_get_normal_path($_GET['q']);
  }
  else {
    $_GET['q'] = drupal_get_normal_path(variable_get('site_frontpage', 'node'));
  }

If you what you are checking is a path alias, then you should use the following code:

// Drupal 6.
$arg = explode('/', drupal_get_path_alias($_GET['q']);
return (arg[0] == 'video' && !empty($arg[1]) && !is_numeric(arg[1]) && empty($arg[2]));
// Drupal 7.
$arg = explode('/', drupal_get_path_alias();
return (arg[0] == 'video' && !empty($arg[1]) && !is_numeric(arg[1]) && empty($arg[2]));
Tags: