Hey iedereen,
kben momenteel bezig met een eigen site en ik zou graag de mogelijkheid om vanuit een cms, de volgorde van de menu-items aan te passen.

Heeft er iemand van u jullie een makkelijke manier om dit te verwezenlijken ?

Groetjes,
Pieter
Hoe heb je jou menu opgebouwd? Een makkelijke optie is in een database, anders een plain text li/ul menu welke je dan opbouwt met css.
Ik heb mijn tbl als volgt opgebouwd
navi_id ,navi_name,navi_href,navi_title

Nu leest ie al alles uit, maar ik zou ook graag de volgorde kunnen wijzigen (en navi_id is daar niet voor bedoeld, aangezien ik later nog met submenu's wil werken)
de volgorde van de links aanpassen.

ik was ook bezig aan het zoeken op soortgelijk probleem

ik dacht aan soort van id's aan te passen waardoor volgens het nr de volgorde bepaald word

nav_id -- nav_plaats -- nav_naam -- nav_url
1 -- 3 -- info -- /info.php
2 -- 1 -- home -- /home.php
3 -- 5 -- contact -- /contact.php
4 -- 2 -- login -- /login/
5 -- 4 -- gastenboek -- gbook.php

zoiets ongeveer?
maar dan kan je conflicten hebben bij het veranderen van de plaats.
Hetzelfde heb ik dus gebruikt voor een vorige site maar het script om van plaats te veranderen is (nodeloos?) ingewikkeld, aangezien hij vanalles moet controleren etc. Heb jij toevallig hier al een scriptje voor ?

Mijn script :
<?php
$dir="../";
include($dir."config.inc.php");
if (CheckAdmin() == TRUE) {
$query="SELECT * FROM pop_database WHERE tbl_name='$_GET[tbl]'";
$result=mysql_query($query);
if (mysql_num_rows($result)=='1') {
$database=mysql_fetch_array($result);
switch ($_GET['dir']) {
case "up" : $item2=$_GET['item']-1;break;
case "down" : $item2=$_GET['item']+1;break;
default : header("Location: ".$_GET['page']);
}
$query="SELECT * FROM $_GET[tbl]";
$result=mysql_query($query);
$num_rows=mysql_num_rows($result);
if ($item2=="0") {
header("Location: ".$_GET['page']);
}
else if ($item2 > $num_rows) {
header("Location: ".$_GET['page']);
}
else {
$query="UPDATE $_GET[tbl] SET ".
$database['tbl_pos_field']." = '99'
WHERE ".$database['tbl_pos_field']." = '$item2'";
$result=mysql_query($query);
$query="UPDATE $_GET[tbl] SET ".
$database['tbl_pos_field']." = '$item2'
WHERE ".$database['tbl_pos_field']." = '$_GET[item]'";
$result=mysql_query($query);
$query="UPDATE $_GET[tbl] SET ".
$database['tbl_pos_field']." = '$_GET[item]'
WHERE ".$database['tbl_pos_field']." = '99'";
$result=mysql_query($query);
header("Location: ".$_GET['page']);
}
}
else {
header("Location: ".$_GET['page']);
}
}
else {
header("Location: index.php");
}
?>

Is zeer ingewikkeld stand-alone, een beetje ingewikkeld als je het in z'n geheel ziet :-p
Maar stel dat je 'wie zijn we' boven 'gerechten' wil zetten, kan dat dan makkelijk vanuit jouw systeem,

Zoja, kan je broncode ofzo eens bekijken ?
Zoals het nu is niet, want er hangt geen CMS aan. Hij haalt de menu-items nu geloof ik op alfabet uit de DB. Maar als de tabel uitgebreid wordt met één veldje voor de plaats in het menu dan zou dat al moeten kunnen.

Dit is de tabelstructuur:

<?php
// tabelindeling
CREATE TABLE pulldown (
id int(4) NOT NULL auto_increment,
level int(1) NOT NULL,
parent_id int(2) NOT NULL,
titel varchar(64) NOT NULL,
link varchar(512) NOT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM;
?>

En hiermee kun je hem vullen met wat voorbeeldgegevens:

<?php
// voorbeeldgegevens

INSERT INTO pulldown VALUES (1, 1, 0, 'home', 'home.php');
INSERT INTO pulldown VALUES (2, 1, 0, 'wie zijn we', 'wiezijnwe.php');
INSERT INTO pulldown VALUES (3, 1, 0, 'producten', 'producten.php');
INSERT INTO pulldown VALUES (4, 2, 3, 'dranken', 'dranken.php');
INSERT INTO pulldown VALUES (5, 2, 3, 'hoofdgerechten', 'hoofdgerechten.php');
INSERT INTO pulldown VALUES (6, 3, 5, 'vlees', 'vlees.php');
INSERT INTO pulldown VALUES (7, 3, 5, 'vis', 'vis.php');
INSERT INTO pulldown VALUES (8, 3, 5, 'vegetarisch', 'vegetarisch.php');
?>
Dan heb je ongeveer hetzelfde als ik nu heb (maar met submenu's)

Sigh.. zal ik toch maar mijn oude scriptje moeten gebruiken ?
@jan: Hoe laat jij dan je items veranderen van plaats?

Reageren