Heine

  • home
  • drupal
  • drupal core commits
  • about
Home › Drupal

Drupal 6: $base_path doesn't always point to the frontpage

Heine — Sun, 17/05/2009 - 19:13

Dear themers,

<a href="<?php print $base_path ?>" title="<?php print t('Home'); ?>" ...

.... in page.tpl.php breaks Home functionality on many multilingual sites.

Consider a multilingual site with English (prefix 'en') as the default language and Dutch (prefix 'nl') as a second language. While browsing the site in Dutch (eg http://example.com/nl/node/5), the homelink created with $base_path leads to http://example.com/, which is the default English content. Quite an unpleasant surprise for your visitors.

The correct URL to the homepage is $front_page. As this variable holds a URL, you still need to convert it to HTML by calling check_url on it:

<a href ="<?php print check_url($front_page) ?>" ...

If you maintain a theme on Drupal.org that doesn't use $front_page, please consider this a bugreport. Thanks.

Average: 4.2 (11 votes)
  • Drupal
  • Multilingual
  • Planet Drupal
  • Theming
  • Login or register to post comments

Theme resources...

Nicholas Thompson (not verified) — Mon, 18/05/2009 - 08:51

Good point - the URL to the frontpage should be $front_page (/me goes off to check Abessive!)...

But $base_path has its place; access to theme resources. Shouldn't you link to images using:

echo theme('image', base_path() . path_to_theme() . '/images/blah.png');

Also - should you use $base_path or base_path()?

  • Login or register to post comments

$base_path, $directory

Heine — Mon, 18/05/2009 - 11:25

In page.tpl.php $base_path is available, so by all means, use $base_path there. In other .tpl.php files you need to call base_path() yourself, or make your own $base_path variable in template.php.

template_preprocess() always fills $directory —why not $base_path is beyond me—, so there's no need to call path_to_theme().

Now, theme_image accepts as path: "Either the path of the image file (relative to base_path()) or a full URL." The code above should read:

print theme('image', $directory .'/images/blah.png');

  • Login or register to post comments

Recent posts

  • Unserializing user-supplied data, a bad idea
  • Planet Drupal past and current
  • Help! - Cannot access a global variable.
  • Why is my module's update hook not listed on update.php's selection form?
  • How do I add a class to a link generated with l()
more

Security reviews

  • Afraid custom code makes your site vulnerable?
  • You don't really trust that module you just downloaded from Drupal.org?

Sleep better after a security review.

Tags

Captcha CSRF Drupal embed Input Format modx OpenID Performance Planet Drupal rants Security Varnish
more tags
  • home
  • drupal
  • drupal core commits
  • about

Copyright © 2010 by Heine Deelstra. All rights reserved.