Making a Dynamic PHP link


#1

SHORT VERSION

I need PHP to work in a DHTML menu (within a javascript file), that is in its own html file (which is called into the main pages with a php include) to swap the en/ to fr/ in the file path so that someone viewing a specific page in English can click the French button on the menu to get to that same page in French.

LONG VERSION

So here is the issue: I am redesigning a site for an organization.The site is bilingual - English and French. The menu at the top and the left side is an HTML page on it’s own. All the pages main body of the site call in the menu part with a line of PHP. Here is an example image:

Here is the problem: The button in the menu to get to the French part of the site needs to go to the same page in French that the person was reading in English instead of just going to the home page for the French side. I.E - someone was reading www.site.com/en/sexytopic.html and they click on the French button in the menu; it needs to take them to www.site.com/fr/topicsexy.html instead of just www.site.com/fr/home.html. It needs to go to the French version of every page that someone is reading, and vice versa for French to English.

Someone in another forum gave me the following advice:

In the beginning of your "sexytopic.html" document (I'm assuming you've set it up to be parsed by php) insert the following code:

<?php $address = __FILE__; ?>

…then wherever you want the link to go (even in other included files) add:

<?php echo str_replace('/en/', '/fr/', $address); ?>

  • this replaces all occurrences of “/en/” in “$address” with “/fr/” - to get the opposite effect, swap the first two variables around!

I would get the following error:

Access forbidden! You don't have permission to access the requested object. It is either read-protected or not readable by the server.

If you think this is a server error, please contact the webmaster.

Error 403

localhost
02/20/07 10:39:15
Apache/2.2.3 (Win32) DAV/2 mod_ssl/2.2.3 OpenSSL/0.9.8d mod_autoindex_color PHP/5.2.0

And the address bar would show:

http://localhost/en/<?php%20echo%20str_replace('/en/',%20'/fr/',%20$address);%20?>

my .htaccess has the parsing code in it…

AddType application/x-httpd-php .php .html .htm

So I don’t know why it’s doing this. The menu button is part of a DHTML menu, and the actual place where the link for the button is is in a .js file for the menu. Pasring the .js file causes the button to act like a rollover graphic with no link.

stm_aix("p0i6","p0i1",[2,"","../graphics/buttons/en/francais1.gif","../graphics/buttons/en/francais2.gif",98,30,0,"<?php echo str_replace('/en/', '/fr/', $address); ?>"]);

Is this what is causing the problems? doing a plain link on a page gets the address bar to display http://www.wnstudios.ca/home/eday2010/domains/wnstudios.ca/public_html/test/fr/New_Page.html after you click the switchy link on http://www.wnstudios.ca/test/en/New_Page.html.


#2

PROBLEM SOLVED! Here is how it was done:

In the menu file this code was put:

[code]<?php
/** Take care of all scripting variables before hand… */
// Is there French in the Script Name? If so, replace a copy of it with /en/
if ( strstr(’/fr/’, $_SERVER[“SCRIPT_NAME”] ) ) {
$swapLanguageURL = str_replace(’/fr/’,’/en/’, $_SERVER[“SCRIPT_NAME”]);
$currentLang = ‘french’;
} else { // It must be English, so lets swap it with /fr/
$swapLanguageURL = str_replace(’/en/’,’/fr/’, $_SERVER[“SCRIPT_NAME”]);
$currentLang = ‘english’;
}

?>[/code]

Then in the button this was put:

a href="<?=$swapLanguageURL;?>" ...

WOOOOOOOOT!!!