de juiste content ophalen.
deze ziet er zo uit:
[navigation]
home.php = "Home"
about.php = "About"
simple-code.php = "Simple codes"
[content]
home.php = "/content/home"
about.php = "/content/about"
simple-code.php = "/content/simple-code"
zo haal ik de links op en output ik ze..
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
if (file_exists("index.ini") && is_array($content = parse_ini_file("index.ini", true)))
{
if (array_key_exists("navigation", $content))
{
foreach ($content["navigation"] as $basename => $title)
{
if (array_key_exists($basename, $content["content"]))
{
echo "<li><a " . ($basename == basename(parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH)) ? "class=\"current\"" : false) . " href=\"/" . $basename . "\">" . $title . "</a></li>";
}
}
}
}
?>
if (file_exists("index.ini") && is_array($content = parse_ini_file("index.ini", true)))
{
if (array_key_exists("navigation", $content))
{
foreach ($content["navigation"] as $basename => $title)
{
if (array_key_exists($basename, $content["content"]))
{
echo "<li><a " . ($basename == basename(parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH)) ? "class=\"current\"" : false) . " href=\"/" . $basename . "\">" . $title . "</a></li>";
}
}
}
}
?>
en dit gaat goed maar alleen wanneer ik dan de juiste content op wil halen door op de link te klikken krijg ik niet het relatieve pad maar krijg ik
localhost/home.php
ipv localhost/content/home/home.php
mijn switch om te bepalen wat ik op moet halen ziet er zo uit.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
if (!isset($_GET['page'])) {
$_GET['page'] = 'home';
}
switch($_GET['page']){
case 'home':
$file = '/content/home/home.html';
break;
case 'about':
$file = '/content/about/about.html';
break;
case 'simple-script':
$file = '/content/simple-code/simple-script.html';
break;
case 'sitemap':
$file = '/content/sitemap/sitemap.php';
break;
default:
$file = '404.html';
break;
}
include_once $file;
?>
if (!isset($_GET['page'])) {
$_GET['page'] = 'home';
}
switch($_GET['page']){
case 'home':
$file = '/content/home/home.html';
break;
case 'about':
$file = '/content/about/about.html';
break;
case 'simple-script':
$file = '/content/simple-code/simple-script.html';
break;
case 'sitemap':
$file = '/content/sitemap/sitemap.php';
break;
default:
$file = '404.html';
break;
}
include_once $file;
?>
maar ik ben de draad even kwijt. weet iemand wat ik fout doe en wat ik anders moet doen?
Gewijzigd op 11/05/2012 23:31:14 door Reshad F
Maak er zo'n route file van:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
[home]
url = home.php
content = /content/home/home.html
[about]
url = about.php
content = /content/about/about.html
[simple_code]
url = simple-code.php
content = /content/simple-code/simple-script.html
url = home.php
content = /content/home/home.html
[about]
url = about.php
content = /content/about/about.html
[simple_code]
url = simple-code.php
content = /content/simple-code/simple-script.html
Vervolgens maak je en het menu en de switch dynamisch (wat zo heeft een dynamische ini natuurlijk helemaal geen nut).
en ik weet niet hoe ik zo een twee die 2 dingen dynamisch kan maken.. enig tip of opstapje?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Navigatie
=========
<?php
$routes = parse_ini_file('routing.ini', true);
foreach ($routes as $name => $data) : ?>
<li><a href="<?php echo $data['url'] ?>"><?php echo $name ?></a></li>
<?php endforeach; ?>
Content
=======
<?php
if (isset($routes[$_GET['page']])) {
$page = $routes[$_GET['page'];
include $page['content'];
}
?>
=========
<?php
$routes = parse_ini_file('routing.ini', true);
foreach ($routes as $name => $data) : ?>
<li><a href="<?php echo $data['url'] ?>"><?php echo $name ?></a></li>
<?php endforeach; ?>
Content
=======
<?php
if (isset($routes[$_GET['page']])) {
$page = $routes[$_GET['page'];
include $page['content'];
}
?>
Gewijzigd op 12/05/2012 10:13:22 door Wouter J
Hij is nu zo te lezen, en daarmee kun je hele nare dingen doen...
Gewijzigd op 12/05/2012 10:20:38 door Bart V B
Even nog een tip voor reshadd. Bij dit soort gevallen moet je gewoon even de array die je terug krijgt van de parse_ini_file var_dumpen. Dan zie je wat er allemaal in zit en op welke manier. Je komt er dan als het goed is wel uit hoe je een pagina/link zou moeten opvragen.
Quote:
Bart, je kan hem toch alleen maar lezen? Dus opzich kan je er niks raars mee doen.
Op zich niet nee, maar wel als hij niet de juiste chmod waardes heeft.
En afgezien wat er allemaal wel of niet mee kan gebeuren, je ini files behoren gewoon niet in in de document_root te staan he. ;)
dus een ini file zoals ik al had.
en dan wanneer ik klik op de link dat ik dan de path krijg geinclude. maar het probleem is dat mijn link er nu zo uitziet en ik dus op de verkeerde pagina kom.
/home, /about, /scripts
wat het eigenlijk moet zijn is /websitenaam(localhost)/home.html alleen zie ik niet wat er fout aan is dit is de output
Code (php)
overigens moet dit geinlcude worden dus een switch er achter zetten. denk ik nu verkeerd of doe ik gewoon iets fout?
edit: ik heb even gekeken wat voor array ik krijg met print_r en heb op basis hiervan dus een switch in elkaar gezet. weet alleen niet of dit de juiste manier is. ik denk het ook niet omdat ik localhost/about.html krijg ipv dat deze geinclude wordt.
Gewijzigd op 13/05/2012 12:27:35 door Reshad F