Jump to content

Αυτόματη δημιουργία greeklish URL από το όνομα του προϊόντος


Recommended Posts

Καλησπέρα σε όλους. 
Επείδη βαριόμουν 1f61b.png:P κάθε φόρα που καταχωρούσα ένα προιον να βάζω στα greeklish το φιλικό url . εκάτσα και εφτιάξα ένα module για αυτόματη δημιουργία greeklish URL από το όνομα του προϊόντος. 

Δουλεύει σε Prestashop 1.7x 
 

np_greeklishslug.zip

Edited by eyaggelos (see edit history)
  • Like 1
Link to comment
Share on other sites

Καλησπέρα και καλώς ήρθες.

Θέλει λίγη βελτίωση και θα είναι τέλειο.

Θα πρέπει να regular expression να αντικαταστατής όποιον χαρακτήρα δεν είναι αλφαριθμητικό (αγγλικό - ελληνικό) με το κενό.

Μετά πάλι με rexex ότι είναι πάνω από δύο κενά να το κάνεις 1 (squeeze repeats).

Και μετά όπως σωστά κάνεις replace το space με minus.

Ακόμη το char mapping θα μπορούσε να είναι καλύτερο, π.χ. το Χ είναι το ch αλλά αυτά ας τα αλλάξει ο καθένας από μόνο του.

Link to comment
Share on other sites

Καλησπέρα.

Σε ευχαριστώ για τις παρατηρίσεις σου. 

Quote

Θα πρέπει να regular expression να αντικαταστατής όποιον χαρακτήρα δεν είναι αλφαριθμητικό (αγγλικό - ελληνικό) με το κενό.

 

 

π.χ 

Θήκη Тонкий  TPU Ultra Thin για Samsung S9 Plus διάφανη

λες να γίνει 

thiki-tru-ultra-thin-gia-samsung-s9-plus-diafanh.

καταλάβα σωστα ;' 

 

 

Link to comment
Share on other sites

1 hour ago, eyaggelos said:

Καλησπέρα.

Σε ευχαριστώ για τις παρατηρίσεις σου. 

 

π.χ 

Θήκη Тонкий  TPU Ultra Thin για Samsung S9 Plus διάφανη

λες να γίνει 

thiki-tru-ultra-thin-gia-samsung-s9-plus-diafanh.

καταλάβα σωστα ;' 

 

 

Δεν είπες πως το Ελληνικό product title θα έχει χαρακτήρες εκτός από ελληνικά και αγγλικά... και προφανώς δεν βρίσκω λόγο να έχει, ειδικά ρώσικα.

Αυτό που πρέπει να γίνετε στην ουσία είναι να αφαιρεθούν όλοι οι special characters. ex. ~!@#$%^&*(){}[];':",.<>/? συν κάτι ® ¶ © ™

 

Edited by sanctusmob (see edit history)
Link to comment
Share on other sites

Είχα κάνει το ίδιο σε C#. Σου δίνω τον κώδικα για να τον κάνεις μετατροπή σε php.

Το είχα κάνει λίγο διαφορετικά από αυτό που αναφέρω πιο πάνω αλλά είναι σωστό και δοκιμασμένο.

Απλός δεν θα σου δώσω το character mapping...

Αν κάνεις από την αρχή σε lower το input string γλυτώνεις από το character mapping τα κεφαλαία...

Εκεί που κάνω replace το "΄"  είναι γιατί για κάποιο λόγω ΔΕΝ το έπιανε το regex, θεωρεί μάλλον πως είναι Ελληνικός χαρακτήρας.

Regex nonAlnu = new Regex(@"[^a-zA-Z0-9\p{IsGreekandCoptic}]"); //Regex for non alphanumeric and Greek
Regex trimminus = new Regex(@"[-]{2,}"); //Regex for repeated minus

strInput = strInput.ToLower();
strInput = nonAlnu.Replace(strInput, "-"); //Replace non alphanumeric and Greek with minus
strInput = toGreeklish(strInput); // Convert to Greeklish
strInput = trimminus.Replace(strInput, "-"); //Squeze repeated minus                 
strInput = strInput.Replace("΄", ""); //Remove wtf
strInput = strInput.Trim('-'); //Trim Start End minus
strInput = strInput.Trim(); //Trim Start End space

 

Link to comment
Share on other sites

Ok τώρα 

Δεν είχα καταλάβει πως λειτουργούσε. Θέλει αποθήκευση για να τρέξει το script

Πολύ καλό και χρήσιμο το module .

Ευχαριστούμε 

Link to comment
Share on other sites

On 11/4/2018 at 10:26 PM, geogian said:

Ok τώρα 

Δεν είχα καταλάβει πως λειτουργούσε. Θέλει αποθήκευση για να τρέξει το script

Πολύ καλό και χρήσιμο το module .

Ευχαριστούμε 

 

Καλησπέρα.

Ξέχασα να το αναφέρω !

σε ευχαριστώ πολύ.

 

---

Συντομα θα ανεβασω & την καινουργια εκδοση 

Edited by eyaggelos (see edit history)
  • Like 1
Link to comment
Share on other sites

  • 4 months later...
  • 1 month later...
  • 2 weeks later...
  • 3 weeks later...
  • 2 months later...
18 hours ago, panos said:

καλησπέρα δουλεύει και σε 1.7.5 ? δεν με αφήνει να το κάνω εγκατάσταση 😪

  Άνοιξε το module και δες αν έχει δηλωμένο Max version.  Λογικά θα είναι κάτω από ένα.εφτά.πέντε   Γιατί όταν γράφτηκε δεν υπήρχε αυτή η έκδοση. Οπότε αν το αλλάξεις θα σε αφήσει να το κάνεις εγκατάσταση   

Link to comment
Share on other sites

4 hours ago, sanctusmob said:

  Άνοιξε το module και δες αν έχει δηλωμένο Max version.  Λογικά θα είναι κάτω από ένα.εφτά.πέντε   Γιατί όταν γράφτηκε δεν υπήρχε αυτή η έκδοση. Οπότε αν το αλλάξεις θα σε αφήσει να το κάνεις εγκατάσταση   

Δεν έχει δηλωμένο max version. Έχει μόνο min . Έκανα κάποιες δοκιμές αλλά δεν κατάφερα κατι 

Link to comment
Share on other sites

  • 2 weeks later...
  • 1 month later...
  • 2 weeks later...

Καλησπέρα, για κάποιο λόγο δεν μπορώ να εγκαταστήσω το module. Διορθώθηκε το πρόβλημα και τώρα δουλεύει. Θα βοηθήσει αρκετά καθώς όλοι ξέρουμε πως φαίνονται οι ελληνικοί χαρακτήρες στα links... Επίσης έχω την εντύπωση ότι βοηθάει και στο SEO.

Από ότι καταλαβαίνω η μετατροπή γίνεται για προϊόντα που δημιουργούνται από την εγκατάσταση του module και μετά, για παλιότερα προϊόντα υπάρχει κάποιος τρόπος;

 

Edited by aramonkg (see edit history)
Link to comment
Share on other sites

Για να απαντήσω στην δική μου ερώτηση, αν χρειάζεται να μετατραπούν τα friendly urls σε greeklish για προϊόντα που έχουν δημιουργηθεί στο παρελθόν, όπως στη δική μου περίπτωση, μπορείτε να χρησιμοποιήσετε την παρακάτω εντολή SQL (για 1.7.x).

UPDATE `ps_product_lang` SET `link_rewrite`= REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(`link_rewrite`,'α','a'),'ά','a'),'β','b'),'γ','g'),'δ','d'),'ε','e'),'έ','e'),'ζ','z'),'η','h'),'ή','h'),'θ','th'),'ι','i'),'ί','i'),'κ','k'),'λ','l'),'μ','m'),'ν','n'),'ξ','ks'),'ο','o'),'ό','o'),'π','p'),'ρ','r'),'σ','s'),'ς','s'),'τ','t'),'υ','u'),'ύ','u'), 'φ', 'f'),'χ','ch'),'ψ','ps'),'ω','w'),'ώ','w') WHERE id_lang=2

Καθώς αυτό αντικαθιστά μόνο lowercase χαρακτήρες θα πρέπει πριν να έχετε εκτελέσει...

UPDATE `ps_product_lang` SET `link_rewrite`= LOWER(`link_rewrite`) WHERE id_lang=2

Ναι ξέρω είναι nested replace αλλά δουλεύει, όπου id_lang το αλλάζετε για να ανταποκρίνεται στο id της ελληνικής γλώσσας του site σας. Αν τώρα θέλετε να το δοκιμάσετε μόνο για ένα προϊόν για να σιγουρευτείτε προσθέστε στο τέλος και το εξής.

 AND id_product=[test product ID]

 

Edited by aramonkg
convert to lowercase step (see edit history)
  • Like 1
Link to comment
Share on other sites

  • 1 year later...
  • 1 month later...

Καλησπέρα, σε 1.7.6.7 ανεβάζω τον φάκελο του module μεσω ftp στον φάκελο "Modules" αλλά δεν μου εμφανίζεται στα modules.
Επίσης αν προσπαθήσω να το ανεβάσω σαν zip από το backend μου βγάζει "Αυτό το αρχείο δεν φαίνεται να είναι έγκυρο zip προσθέτου".

Γνωρίζει κάποιος πως μπορώ να το κάνω εγκατάσταση;

Ευχαριστώ!

Link to comment
Share on other sites

5 hours ago, stagosal said:

Καλησπέρα, σε 1.7.6.7 ανεβάζω τον φάκελο του module μεσω ftp στον φάκελο "Modules" αλλά δεν μου εμφανίζεται στα modules.
Επίσης αν προσπαθήσω να το ανεβάσω σαν zip από το backend μου βγάζει "Αυτό το αρχείο δεν φαίνεται να είναι έγκυρο zip προσθέτου".

Γνωρίζει κάποιος πως μπορώ να το κάνω εγκατάσταση;

Ευχαριστώ!

Καλησπέρα ,

Στείλε μου μήνυμα στο [email protected] να το δούμε μαζί.

 

 

Link to comment
Share on other sites

  • 4 months later...
  • 1 year later...

Δωρεάν πρόσθετο για μετατροπή slug σε greeklish.
Προς το παρόν δουλεύει σε products & product categories όταν δημιουργούνται ή αποθηκεύονται.
Μελλοντικά θα αυτοματοποιηθεί.

Χαρακτηριστικά

  • Συμμορφώνεται με το πρότυπο ΕΛΟΤ 743
  • Μεταφράζει ελληνικά (μονοτονικό & πολυτονικό)

https://github.com/tivuno/tvslug

Link to comment
Share on other sites

Καλημέρα Κώστα,

Μερικές προτάσεις-διορθώσεις.

Εφόσον στην function toMordern αφαιρείς τα accent στην toGreeklish δεν χρειάζεται να τα έχεις στο mapping.

Ακόμη δεν είναι σύμφωνα με το ελοτ καθώς σου λείπουν πολλά πράγματα από το mapping.

π.χ. δοκίμασε την λέξη "αύξηση" και θα δεις πως βγάζει διαφορετικά το δικό σου και το πρότυπο του ελοτ.

Στον ελοτ ακολουθούνται κανόνες γραμματικής. Οπότε το "υ" ανάλογα με το γράμμα που ακολουθεί μπορεί να προφέρετε σαν "φ" όπως στον παραπάνω παράδειγμα. Οπότε και στο mapping γίνετε "f"...

Link to comment
Share on other sites

19 minutes ago, sanctusmob said:

Καλημέρα Κώστα,

Μερικές προτάσεις-διορθώσεις.

Εφόσον στην function toMordern αφαιρείς τα accent στην toGreeklish δεν χρειάζεται να τα έχεις στο mapping.

Ακόμη δεν είναι σύμφωνα με το ελοτ καθώς σου λείπουν πολλά πράγματα από το mapping.

π.χ. δοκίμασε την λέξη "αύξηση" και θα δεις πως βγάζει διαφορετικά το δικό σου και το πρότυπο του ελοτ.

Στον ελοτ ακολουθούνται κανόνες γραμματικής. Οπότε το "υ" ανάλογα με το γράμμα που ακολουθεί μπορεί να προφέρετε σαν "φ" όπως στον παραπάνω παράδειγμα. Οπότε και στο mapping γίνετε "f"...

Καλημέρα Χάρη. Ναι συμφωνώ σε αυτό που λες με το f. Πχ το ευκάλυπτος το κάνει efkalyptos και την Εύβοια evvia.

To script για το ΕΛΟΤ το πήρα από ένα του wp (απλά λόγω φόρτου εργασίας δεν πρόλαβα να μαζέψω παραπομπές κτλ) και σε κάποιες λέξεις με δίφθογγους που δοκίμασα τα έβγαλε as expected.

Τι παρατήρησες πιο συγκεκριμένα πέρα της αύξησης; Έκανες κάποιες άλλες δοκιμές;

Μια σκέψη για βελτίωση είναι να κάνω μια function fromAncient που θα καλεί τα πάντα και μια fromModern που θα μετατρέπει μόνο τα μοντέρνα ώστε να πάει πιο γρήγορα κατά βούληση.

Link to comment
Share on other sites

Χάρη τους τόνους και τα διαλυτικά τα άφησα τελικά στο σετ με τα μοντέρνα και τα αφαίρεσα στα αρχαία για τον εξής λόγο.

Αν θέλεις να κάνεις μετατροπή απ τα αρχαία η διαδρομή είναι: Αρχαία -> Νέα -> Slug

Αν θέλεις από τα μοντέρνα: Νέα -> Slug

Άρα κρατάμε τους τόνους σε κείνη την function που εκτελείται no matter what.

Όσο για λάθη στην μετατροπή δεν εντόπισα κάτι όσες δοκιμές κι αν έκανα (σε έλεγχο με χειροκίνητο τρόπο για σύγκριση https://www.passport.gov.gr/passports/GrElotConverter/GrElotConverter.html)

Αν εντοπίσεις κάποια προβληματική λέξη/φράση, μετά χαράς να επανέρθω στο θέμα για να το επιλύσω.

Edit: v1.0.5 Released [Minor bug in v1.0.4]
Edited by Kogkalidis (see edit history)
Link to comment
Share on other sites

  • 6 months later...
v1.0.7 Released

@sanctusmob το πρόβλημα που είχες εντοπίσει φίλε το έλυσα τελικά εκτελώντας sql query.
Για κάποιον λόγο που δεν κατάλαβα στο update του object δεν λειτουργούσε οπότε αντ αυτού εκτέλεσα το query.

Ευχαριστώ και πάλι για την επισήμανση 🤩

Αν δεν σε κάνει κόπο δοκίμασε εκ νέου και περιμένω τις παρατηρήσεις σου.

https://github.com/tivuno/tvgreeklish/archive/refs/tags/v1.0.7.zip

Link to comment
Share on other sites

  • 10 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...