Menus σε custom cms - σχεδιασμός βδ

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
Lykos22
Δημοσιεύσεις: 89
Εγγραφή: 29 Μαρ 2011 16:28
Τοποθεσία: UK

Menus σε custom cms - σχεδιασμός βδ

Δημοσίευση από Lykos22 » 21 Ιουν 2015 12:04

Θα ήθελα μία βοήθεια σχετικά με το ποιός είναι ο πιο κατάλληλος τρόπος να σχεδιάσω τη βάση ώστε να αποθηκεύω μενού για την υλοποίηση ενός custom cms.

Καταρχήν ας αναφέρω μερικές παρατηρήσεις μου:

Υποθέτουμε ότι εχουμε ένα site το οποίο έχει 2 μενού, ένα στο header (κύριο μενού), και ένα στο footer.

Περίπτωση 1η: τα 2 μενού να είναι ίδια

Κώδικας: Επιλογή όλων

// header menu
Home - About - Services - Blog - Contact

// footer menu
Home - About - Services - Blog - Contact
 
Περίπτωση 2η: τα 2 μενού να είναι διαφοτρετικά

Κώδικας: Επιλογή όλων

// header menu
Home - About - Services - Blog - Contact

// footer menu
Home - Terms & Conditions - Privacy Policy - Contact
 
Ποιός πιστεύετε ότι είναι ο ποιο σωστός τρόπος να σχεδιάσω τους πίνακες στη βάση μου?

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Menus σε custom cms - σχεδιασμός βδ

Δημοσίευση από dva_dev » 21 Ιουν 2015 12:43

Θα μπορουσες απλα να βαλεις ενα ακομα, πρωτο, επιπεδο στο μενου που να δειχνει τη θεση header, footer, sidebar,..., ωστε το καθε μενου να ξεκιναει ουσιαστικα απο το 2ο επιπεδο και μετα.
Η υλοποιηση κατα τ' αλλα μενει ιδια

Άβαταρ μέλους
grigorakis4
Δημοσιεύσεις: 126
Εγγραφή: 16 Οκτ 2012 14:15
Τοποθεσία: ATHENS
Επικοινωνία:

Menus σε custom cms - σχεδιασμός βδ

Δημοσίευση από grigorakis4 » 21 Ιουν 2015 12:47

το εαν ειναι ιδιο το μενου στο header και στο footer νομιζω οτι αυτο εχει ξεπεραστει.... πρεπει να βαλεις τις κυριες σελιδες σου στο header και σελιδες επικοινωνια, οροι χρησης, κατηγοριες με αρθρα στο footer.


θα σου προτεινα εαν το cms δεν θα προσθετει κατηγοριες να βαλεις τα στοιχεια απο το μενου σε εναν πινακα διαφορετικα εαν υποθεσουμε οτι το μενου θα εχει ενα μονο επιπεδο δηλαδη μενου και υπομενου κανε κατι τετοιο:

$data = //αποτελεσματα απο την βαση σου σε μορφη array

$array = array();

foreach( $data as $d ){

if( count( $data ) ){
if( !$d['parent_id'] ){
$array[$d['id']] = $d;
}else{
$array[$d['parent']]['child'] = $d;
}
}

}


return $array
Εικόνα

Άβαταρ μέλους
grigorakis4
Δημοσιεύσεις: 126
Εγγραφή: 16 Οκτ 2012 14:15
Τοποθεσία: ATHENS
Επικοινωνία:

Menus σε custom cms - σχεδιασμός βδ

Δημοσίευση από grigorakis4 » 21 Ιουν 2015 12:49

και η βαση σου μπορει να ειναι καπως ετσι:

menou_id, menu_title, parent_id, slug
Εικόνα

Άβαταρ μέλους
Lykos22
Δημοσιεύσεις: 89
Εγγραφή: 29 Μαρ 2011 16:28
Τοποθεσία: UK

Menus σε custom cms - σχεδιασμός βδ

Δημοσίευση από Lykos22 » 21 Ιουν 2015 13:05

dva_dev έγραψε:Θα μπορουσες απλα να βαλεις ενα ακομα, πρωτο, επιπεδο στο μενου που να δειχνει τη θεση header, footer, sidebar,..., ωστε το καθε μενου να ξεκιναει ουσιαστικα απο το 2ο επιπεδο και μετα.
Τι εννοείς με το επίπεδο ??? θα μπορούσες να μου αναπαραστήσεις τον πίνακα για να καταλάβω???
grigorakis4 έγραψε: το εαν ειναι ιδιο το μενου στο header και στο footer νομιζω οτι αυτο εχει ξεπεραστει.... πρεπει να βαλεις τις κυριες σελιδες σου στο header και σελιδες επικοινωνια, οροι χρησης, κατηγοριες με αρθρα στο footer.

θα σου προτεινα εαν το cms δεν θα προσθετει κατηγοριες να βαλεις τα στοιχεια απο το μενου σε εναν πινακα διαφορετικα εαν υποθεσουμε οτι το μενου θα εχει ενα μονο επιπεδο δηλαδη μενου και υπομενου κανε κατι τετοιο:

$data = //αποτελεσματα απο την βαση σου σε μορφη array

$array = array();

foreach( $data as $d ){

if( count( $data ) ){
if( !$d['parent_id'] ){
$array[$d['id']] = $d;
}else{
$array[$d['parent']]['child'] = $d;
}
}

}


return $array
Βασικά θέλω να έχω τη δυνατότητα να επιλέγω ποια σελίδα θα πάει σε ποιο μενου, δηλαδή τα μενού μου να έχουν και κοινές και μη-κοινές σελίδες, δηλαδή τη 2η περίπτωση που ανέφερα.

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Menus σε custom cms - σχεδιασμός βδ

Δημοσίευση από dva_dev » 21 Ιουν 2015 16:23

Βασικα υπεθεσα οτι η τρεχουσα υλοποιηση σου ειναι με adjacency model οποτε στο root επιπεδο εχεις dummy root nodes με τα διαφορα σημεια που θελεις να εχεις μενου, και τα πραγματικα enu items ξεκινούν απο το επομενο επιπεδο και μετα.

Π.χ. ο πινακας θα μπορουσε να ειναι
Menus(id,parentid,menu)
Με εγγραφες
1,null,'header menu'
2,null,'footer menu',
3,null,'sidebar menu',

Και συνεχιζεις με τα πραγματικα μενου
4,1,'menu 1',
5,1,'menu 2',
...
12,2,'footer 1',
13,2,'footer 2',
...
23,3,'side 1',
24,3,'side 2',
...

Οποτε για το header παιρνεις ολα τα υπομενου του 'header menu', κ.λπ.

Άβαταρ μέλους
Lykos22
Δημοσιεύσεις: 89
Εγγραφή: 29 Μαρ 2011 16:28
Τοποθεσία: UK

Menus σε custom cms - σχεδιασμός βδ

Δημοσίευση από Lykos22 » 21 Ιουν 2015 16:51

dva_dev έγραψε:Βασικα υπεθεσα οτι η τρεχουσα υλοποιηση σου ειναι με adjacency model οποτε στο root επιπεδο εχεις dummy root nodes με τα διαφορα σημεια που θελεις να εχεις μενου, και τα πραγματικα enu items ξεκινούν απο το επομενο επιπεδο και μετα.
Έχω σκοπό να χρησιμοποιήσω Nested Sets (Mptt) τουλάχιστον για το μενού στο header.

Από ότι έχω παρατηρήσει σχεδόν σε όλα τα sites τα κύρια μενού που βρίσκονται στο header (μπορούν να) έχουν n-επίπεδα, ενώ τα υπόλοιπα μενού όπως το footer menu έχουν μόνο ένα επίπεδο και γι αυτό συνήθως διαφέρει από ότι το κεντρικό.

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Menus σε custom cms - σχεδιασμός βδ

Δημοσίευση από dva_dev » 21 Ιουν 2015 19:11

Και με nested sets να παίξεις παρόμοιο πράγμα είναι.
Από ότι έχω παρατηρήσει σχεδόν σε όλα τα sites τα κύρια μενού που βρίσκονται στο header (μπορούν να) έχουν n-επίπεδα, ενώ τα υπόλοιπα μενού όπως το footer menu έχουν μόνο ένα επίπεδο και γι αυτό συνήθως διαφέρει από ότι το κεντρικό.
Εμφανισιακά διαφέρει, δεν είναι απαραίτητο όμως να διαφέρει και στη δομή. Κάνε nested sets χωρίς άλλα επίπεδα πιο μέσα.

Άβαταρ μέλους
Lykos22
Δημοσιεύσεις: 89
Εγγραφή: 29 Μαρ 2011 16:28
Τοποθεσία: UK

Menus σε custom cms - σχεδιασμός βδ

Δημοσίευση από Lykos22 » 21 Ιουν 2015 22:01

dva_dev έγραψε:Και με nested sets να παίξεις παρόμοιο πράγμα είναι.
Από ότι έχω παρατηρήσει σχεδόν σε όλα τα sites τα κύρια μενού που βρίσκονται στο header (μπορούν να) έχουν n-επίπεδα, ενώ τα υπόλοιπα μενού όπως το footer menu έχουν μόνο ένα επίπεδο και γι αυτό συνήθως διαφέρει από ότι το κεντρικό.
Εμφανισιακά διαφέρει, δεν είναι απαραίτητο όμως να διαφέρει και στη δομή. Κάνε nested sets χωρίς άλλα επίπεδα πιο μέσα.
Άρα λοιπόν μπορώ να έχω σε ένα πίνακα όλα τα μενου μου (header, footer κλπ) και (θα πρέπει) να έχω n διαφορετικά roots ανάλογα με το πόσα είναι τα μενού μου συνολικά, σωστά?

Κώδικας: Επιλογή όλων

Παράδειγμα πίνακα

id
title
layout_posotions
left
right

------------------------------

Records

// roots
1, header_menu, header,1, 20
2, footer_menu, footer, 1,8


// menu items
3, Home, header, 2,3
4, About, header, 4, 8
....

10, Home, footer, 2,3
11, Terms & Conditions, footer, 4, 5
....


Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες