Community Documentation

arg

5 path.inc arg($index)
6 path.inc arg($index = NULL, $path = NULL)
7 bootstrap.inc arg($index = NULL, $path = NULL)
8 bootstrap.inc arg($index = NULL, $path = NULL)

Return a component of the current Drupal path.

When viewing a page at the path "admin/content/types", for example, arg(0) would return "admin", arg(1) would return "content", and arg(2) would return "types".

Avoid use of this function where possible, as resulting code is hard to read. Instead, attempt to use named arguments in menu callback functions. See the explanation in menu.inc for how to construct callbacks that take arguments.

Parameters

$index: The index of the component, where each component is separated by a '/' (forward-slash), and where the first component has an index of 0 (zero).

$path: A path to break into components. Defaults to the path of the current page.

Return value

The component specified by $index, or NULL if the specified component was not found. If called without arguments, it returns an array containing all the components of the current path.

▾ 34 functions call arg()

aggregator_form_category_submit in modules/aggregator/aggregator.admin.inc
Process aggregator_form_category form submissions.
aggregator_form_feed_submit in modules/aggregator/aggregator.admin.inc
Process aggregator_form_feed form submissions.
aggregator_page_category in modules/aggregator/aggregator.pages.inc
Menu callback; displays all the items aggregated in a particular category.
aggregator_page_last in modules/aggregator/aggregator.pages.inc
Menu callback; displays the most recent items gathered from any feed.
aggregator_page_rss in modules/aggregator/aggregator.pages.inc
Menu callback; generate an RSS 0.92 feed of aggregator items or categories.
aggregator_page_source in modules/aggregator/aggregator.pages.inc
Menu callback; displays all the items captured from a particular feed.
block_admin_display_form in modules/block/block.admin.inc
Generate main blocks administration form.
blog_link in modules/blog/blog.module
Implementation of hook_link().
color_form_alter in modules/color/color.module
Implementation of hook_form_alter().
color_scheme_form in modules/color/color.module
Form callback. Returns the configuration form.
comment_admin in modules/comment/comment.admin.inc
Menu callback; present an administrative comment listing.
comment_node_url in modules/comment/comment.module
A simple helper function.
comment_render in modules/comment/comment.module
Renders comment(s).
dblog_init in modules/dblog/dblog.module
filter_admin_delete in modules/filter/filter.admin.inc
Menu callback; confirm deletion of a format.
filter_tips_long in modules/filter/filter.pages.inc
Menu callback; show a page with long filter tips.
forum_nodeapi in modules/forum/forum.module
Implementation of hook_nodeapi().
menu_get_active_help in includes/menu.inc
Returns the help associated with the active menu item.
menu_get_item in includes/menu.inc
Get a router item.
menu_local_tasks in includes/menu.inc
Collects the local tasks (tabs) for a given level.
menu_set_active_trail in includes/menu.inc
Sets or gets the active trail (path to root menu root) of the current page.
openid_user_add_submit in modules/openid/openid.pages.inc
profile_block in modules/profile/profile.module
Implementation of hook_block().
profile_field_form in modules/profile/profile.admin.inc
Menu callback: Generate a form to add/edit a user profile field.
statistics_exit in modules/statistics/statistics.module
Implementation of hook_exit().
statistics_node_tracker in modules/statistics/statistics.pages.inc
statistics_user_tracker in modules/statistics/statistics.pages.inc
system_init in modules/system/system.module
Implementation of hook_init().
template_preprocess_page in includes/theme.inc
Process variables for page.tpl.php
template_preprocess_profile_wrapper in modules/profile/profile.module
Process variables for profile-wrapper.tpl.php.
update_help in modules/update/update.module
Implementation of hook_help().
user_admin_role in modules/user/user.admin.inc
Menu callback: administer roles.
user_block in modules/user/user.module
Implementation of hook_block().
_trigger_normalize_user_context in modules/trigger/trigger.module
When an action is called in a context that does not match its type, the object that the action expects must be retrieved. For example, when an action that works on nodes is called during the user hook, the node object is not available since the user…

File

includes/path.inc, line 162
Functions to handle paths in Drupal, including path aliasing.

Code

<?php
function arg($index = NULL, $path = NULL) {
  static $arguments;

  if (!isset($path)) {
    $path = $_GET['q'];
  }
  if (!isset($arguments[$path])) {
    $arguments[$path] = explode('/', $path);
  }
  if (!isset($index)) {
    return $arguments[$path];
  }
  if (isset($arguments[$path][$index])) {
    return $arguments[$path][$index];
  }
}
?>

Comments

Reminder: Returns internal paths

If you're using Path or Pathauto and configure node 123123 to have the path http://yoursite.com/publication/book/number/123123, the arg() function will still return the internal node path.

For example, even though your address bar shows http://yoursite.com/publication/book/number/123123
print arg(0); // prints 'node'
print arg(1); // prints '123123'

Because publication ,book

Because publication ,book ,number and all this words are alias path not really argument
the argument are o => node and 1=> 123123

And how can I work around this?

I am showing a block view in my sidebar filtering the contents by taxonomy term. My node is at host.com/events/new-york/some-event ... How can I get my view to use "new-york" as an argument in this case?

("new-york" is inserted in the URL based on the taxonomy term of the node which has the content type "events")

Thanks

--

Edit: Managed to get it working using the code below:

if (arg(0) == 'node' && is_numeric(arg(1))) {
    $node = node_load(arg(1));

if (count($node->taxonomy) > 0)  {
  foreach ($node->taxonomy as $term) {
$term = $term->name;
  }
}

$term = strtolower($term); // for some reason needed in my case
}

else {
$term = arg(1);
$term = str_replace('-', ' ', $term); // for some reason needed in my case
}

return $term;

drupal_get_path_alias()

@mtz,

I think drupal_get_path_alias() may be your friend.

Possibly helpful reference on this topic is the discussion at and near this comment:

http://drupal.org/node/246742#comment-971334

arg returning the function name

I am trying to use the arg function to get the node id, however, it returns me the name of the function in which I am using the arg().

<?php
function firstName_lastName () {

drupal_set_message(arg(1), 'check', FALSE);

}
?>

This returns-> 'lastName'

Any ideas why it is not returning the node id?

Thanks

...just a guess, but does

...just a guess, but does your path look something like:

http://www.your.site.com/drupal/lastName/1 ...?

Because, from your question, it seems like you're just grabbing the wrong part of the path.

Did you try:

function firstName_lastName () {

drupal_set_message(arg(2), 'check', FALSE);// note the "2" in arg()

}

What about "node/594#comment-60" arguments

Hi, what about this kind of argument "node/594#comment-60" . How can I read the #comment-60 from the url?

Accessing the URL fragment

The part of the URL you're referring to is called the 'hash' or 'fragment', and I'm afraid you won't be able to access it from the server-side at all, as most browsers do not send this to the server.

You can, however, use JavaScript to get it on the client-side, using the value of location.hash, which returns everything after (and including) the # symbol in the requested URL.

My usage

<?php
$arg
= arg();
if (isset(
$arg[0]) && isset($arg[1]) && $arg[0] == 'node' && is_numeric($arg[1])) {
 
// Do stuff with the node id: $arg[1]
}
?>

Login or register to post comments