Post by Louis7777 » Tue Oct 21, 2014 12:26 am

Έχω τροποποιήσει το catalog/view/theme/mycustomtheme/template/module/language.tpl, το stylesheet.css και το common.js και έχω φτιάξει ένα drop down μενού για τις γλώσσες.

Το concept είναι γνωστό και απλό: Κάνεις κλικ πάνω στην τρέχουσα γλώσσα και ανοίγει ένα μενού με τις υπόλοιπες διαθέσιμες γλώσσες για να διαλέξεις.

Κολλάω σε δύο σημεία.

1) Πώς εμφανίζω το όνομα της τρέχουσας γλώσσας (π.χ. "Greek");

Δοκίμασα το:

Code: Select all

<?php echo $_SESSION['language']; ?>
...όμως αυτό εμφανίζει τον κωδικό της γλώσσας και όχι το όνομά της. Δηλαδή εμφανίζει "el" αντί για "Greek".

2) Πώς κρύβω την τρέχουσα γλώσσα από τη λίστα με τις γλώσσες;

Στο αρχείο language.tpl υπάρχει ο εξής κώδικας:

Code: Select all

<?php foreach ($languages as $language) { ?>
// language list items here
<?php } ?>
Δοκίμασα το εξής και δεν έπιασε:

Code: Select all

<?php foreach ($languages as $language) {  if(strcmp($_SESSION['language'],$language['code']) == 0) ?>
// language list items here
<?php } ?>
Αφού το $_SESSION['language'] και το $language['code'] δίνουν και τα δύο τον κωδικό της γλώσσας (το δεύτερο μόνο στο context του foreach φυσικά) σκέφτηκα να τα συγκρίνω... Καμιά ιδέα;

New member

Posts

Joined
Fri Oct 25, 2013 9:10 am

Post by botonakis » Tue Oct 21, 2014 11:43 pm

Στο πως θα βρεις το όνομα της γλώσσας πρέπει να την φέρεις από την βάση και έρχεται στο παρακάτω loop:

Code: Select all

<?php foreach ($languages as $language) { ?>
Στο πως θα καταλάβεις εάν είναι επιλεγμένη γλώσσα χρησιμοποίησε αυτό:

Code: Select all

<?php foreach ($languages as $language) {  

if(isset($_SESSION['language']) && $_SESSION['language'] == $language['code']) {
//κανε εδώ ότι θες
}else{

}

<?php } ?>

User avatar
Active Member

Posts

Joined
Tue Jan 24, 2012 7:55 pm
Location - Athens, Greece

Post by Louis7777 » Wed Oct 29, 2014 9:11 pm

botonakis wrote:Στο πως θα βρεις το όνομα της γλώσσας πρέπει να την φέρεις από την βάση και έρχεται στο παρακάτω loop:

Code: Select all

<?php foreach ($languages as $language) { ?>
Θέλω να εμφανίσω το όνομα μόνο μία φορά και έξω από την λίστα με τις γλώσσες, οπότε πρέπει να το κάνω έξω από το loop.

Δηλαδή θέλω να κάνω αυτό:

Greek ↓
⚑ English
⚑ German
⚑ French

Οι English, German και French είναι μέσα στο loop ενώ το μπλε κουμπί είναι ένα <span> εκτός λίστας το οποίο ανοιγοκλείνει την λίστα και εμφανίζει την τρέχουσα γλώσσα.

Αυτό που σκέφτηκα είναι να να φτιάξω έναν πίνακα με όλα τα ονόματα των γλωσσών και να ελέγχω σε ποιο αντιστοιχεί ο κωδικός του $_SESSION['language']. Αν δεν υπάρχει καλύτερος τρόπος για να πάρω το όνομα δηλαδή...
botonakis wrote: Στο πως θα καταλάβεις εάν είναι επιλεγμένη γλώσσα χρησιμοποίησε αυτό:

Code: Select all

<?php foreach ($languages as $language) { 

if(isset($_SESSION['language']) && $_SESSION['language'] == $language['code']) {
//κανε εδώ ότι θες
}else{

}

<?php } ?>
Το παραπάνω δούλεψε, σ' ευχαριστώ. :)

Οπότε μου μένει να βρω το πως θα εμφανίσω το όνομα της τρέχουσας γλώσσας.

New member

Posts

Joined
Fri Oct 25, 2013 9:10 am

Post by botonakis » Wed Oct 29, 2014 9:15 pm

Θα τρέξεις δύο φορές την loop

Code: Select all

<?php 
foreach ($languages as $language) { 

}
?>
την 1η φορά θα εμφανίσεις μόνο την επιλεγμένη γλώσσα και την 2η φορά θα εμφανίσεις όλες τις άλλες.
Την 1η θα την έχεις σε <span> και τις άλλες σε <div> layer κρυφό.
Θα βάλεις το απαραίτητο javascript ώστε να εμφανίζεις και να εξαφανίζεις το div layer.

User avatar
Active Member

Posts

Joined
Tue Jan 24, 2012 7:55 pm
Location - Athens, Greece

Post by Louis7777 » Wed Oct 29, 2014 9:37 pm

Σ' ευχαριστώ για την γρήγορη απάντηση! Όλα μια χαρά τώρα. ;D

New member

Posts

Joined
Fri Oct 25, 2013 9:10 am
Who is online

Users browsing this forum: No registered users and 5 guests