Bagaimana Menghilangkan ID Kategori dari URL PrestaShop versi 1.2.5
Modifikasi berikut ini akan menghapus id atau nomor kategori dari URL PrestaShop Anda. Seperti yang kita ketahui, secara standar, PrestaShop menggunakan URL untuk menampilkan kategori seperti ini: /3-accessories-ipod, daripada yang seharusnya kita inginkan seperti: accessories-ipod. Mohon diingat bahwa Anda harus mengaktifkan fitur URL Friendly yang dapat Anda kelola melalui tab Preferences di panel admin dengan memilih Yes, agar dapat mengimplementasikan modifikasi ini. Modifikasi ini berhasil saya terapkan pada PrestaShop versi 1.2.5 (versi stabil sampai saat saya menulis artikel ini).
-
Pastikan Anda sudah memiliki berkas .htaccess di direktori utama dari PrestaShop Anda, dengan isi sebagai berikut:
# .htaccess automaticaly generated by PrestaShop e-commerce open-source solution # http://www.prestashop.com - http://www.prestashop.com/forums # URL rewriting module activation RewriteEngine on # URL rewriting rules RewriteRule ^([a-z0-9]+)\-([a-z0-9]+)(\-[_a-zA-Z0-9-]*)/([_a-zA-Z0-9-]*)\.jpg$ /prestashop1250/img/p/$1-$2$3.jpg [L,E] RewriteRule ^([0-9]+)(\-[_a-zA-Z0-9-]*)/([_a-zA-Z0-9-]*)\.jpg$ /prestashop1250/img/c/$1$2.jpg [L,E] RewriteRule ^lang-([a-z]{2})/([a-zA-Z0-9-]*)/([0-9]+)\-([a-zA-Z0-9-]*)\.html(.*)$ /prestashop1250/product.php?id_product=$3&isolang=$1$5 [L,E] RewriteRule ^lang-([a-z]{2})/([0-9]+)\-([a-zA-Z0-9-]*)\.html(.*)$ /prestashop1250/product.php?id_product=$2&isolang=$1$4 [L,E] RewriteRule ^lang-([a-z]{2})/([0-9]+)\-([a-zA-Z0-9-]*)(.*)$ /prestashop1250/category.php?id_category=$2&isolang=$1 [QSA,L,E] RewriteRule ^([a-zA-Z0-9-]*)/([0-9]+)\-([a-zA-Z0-9-]*)\.html(.*)$ /prestashop1250/product.php?id_product=$2$4 [L,E] RewriteRule ^([0-9]+)\-([a-zA-Z0-9-]*)\.html(.*)$ /prestashop1250/product.php?id_product=$1$3 [L,E] RewriteRule ^([0-9]+)\-([a-zA-Z0-9-]*)(.*)$ /prestashop1250/category.php?id_category=$1 [QSA,L,E] RewriteRule ^content/([0-9]+)\-([a-zA-Z0-9-]*)(.*)$ /prestashop1250/cms.php?id_cms=$1 [QSA,L,E] RewriteRule ^([0-9]+)__([a-zA-Z0-9-]*)(.*)$ /prestashop1250/supplier.php?id_supplier=$1$3 [QSA,L,E] RewriteRule ^([0-9]+)_([a-zA-Z0-9-]*)(.*)$ /prestashop1250/manufacturer.php?id_manufacturer=$1$3 [QSA,L,E] RewriteRule ^lang-([a-z]{2})/(.*)$ /prestashop1250/$2?isolang=$1 [QSA,L,E] # Catch 404 errors ErrorDocument 404 /prestashop1250/404.phpAnda dapat membangkitkan berkas .htaccess ini dari panel admin pada tab Tools, lalu pilih sub-tab yang bernama Generators, kemudian ikutilah petunjuk yang terdapat di sana dengan teliti. Dalam contoh di atas, saya menggunakan prestashop1250 sebagai nama domain. Silahkan sesuaikan dengan nama domain Anda.
-
Selanjutnya, tambahkan kode berikut setelah baris terakhir dari kode di atas tadi:
# Remove Category ID from URL. You have to modify also the /classes/Link.php file! Modified by Masino Sinaga, May 3, 2010 RewriteRule ^accessories-ipod$ /prestashop1250/category.php?id_category=3 [QSA,L,E] RewriteRule ^music-ipods$ /prestashop1250/category.php?id_category=2 [QSA,L,E] RewriteRule ^laptops$ /prestashop1250/category.php?id_category=1 [QSA,L,E]
Modifikasi ini artinya, bahwa ada 3 nama kategori yang akan kita sesuaikan URL-nya, yaitu: accessories-ipod, music-ipods, dan laptops. Dengan kata lain, jika Anda mempunyai lebih dari 3 kategori di atas, Anda harus mendefinisikan atau menambahkan kategori Anda satu per satu ke dalam berkas .htaccess tadi.
-
Buka berkas /classes/Link.php, dan temukan kode ini:
50 51 52 53 54 55 56 57 58 59
public function getCategoryLink($id_category, $alias = NULL) { if (is_object($id_category)) return ($this->allow == 1) ? (_PS_BASE_URL_.__PS_BASE_URI__.intval($id_category->id).'-'.$id_category->link_rewrite) : (_PS_BASE_URL_.__PS_BASE_URI__.'category.php?id_category='.intval($id_category->id)); if ($alias) return ($this->allow == 1) ? (_PS_BASE_URL_.__PS_BASE_URI__.intval($id_category).'-'.$alias) : (_PS_BASE_URL_.__PS_BASE_URI__.'category.php?id_category='.intval($id_category)); return _PS_BASE_URL_.__PS_BASE_URI__.'category.php?id_category='.intval($id_category); }
lalu timpa dengan kode berikut:
50 51 52 53 54 55 56 57 58 59
public function getCategoryLink($id_category, $alias = NULL) { if (is_object($id_category)) return ($this->allow == 1) ? (_PS_BASE_URL_.__PS_BASE_URI__./*intval($id_category->id).'-'.*/$id_category->link_rewrite) : (_PS_BASE_URL_.__PS_BASE_URI__.'category.php?id_category='.intval($id_category->id)); if ($alias) return ($this->allow == 1) ? (_PS_BASE_URL_.__PS_BASE_URI__./*intval($id_category).'-'.*/$alias) : (_PS_BASE_URL_.__PS_BASE_URI__.'category.php?id_category='.intval($id_category)); return _PS_BASE_URL_.__PS_BASE_URI__.'category.php?id_category='.intval($id_category); }
Nah, sekarang seharusnya URL PrestaShop Anda sudah tidak mengandung id kategori lagi. Pada artikel-artikel selanjutnya, saya akan mencoba menerapkan modifikasi yang sama untuk yang lainnya (id cms, id produk, dsb).
Cetak Artikel Ini



ini kita terapkan di localhost ato wkt hosting yak? masih bingung ^^v
kalo udah mau dihosting berarti ubah lagi apa yg udah kita ubah di localhost dengan nama domain sendiri?
@ruly
Bisa di localhost, bisa di server hosting. PrestaShop sudah menyediakan tool untuk mengenerate file .htaccess yang standar. Setelah itu, Anda tinggal menerapkan modifikasi di atas, dan jangan lupa untuk menyesuaikan nama direktori atau nama domainnya.
Infonya sangat bermanfaat bro..
thanks
Hi,
Thanks for this great solution!
I just wanted you all to know that this also works for Prestashop 1.3.1.1. I am running it on my shop now.
iPhonemekka.com
@iPhonemekk
Thank you for inform us that is working in 1.3.1 and thankyou to Masino Sinaga for working on this solution!