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).

  1. 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.php

    Anda 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.

  2. 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.

  3. 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).

Share

7,604 kali dibacaCetak Artikel Ini Cetak Artikel Ini

Komentar

  1. ruly mengatakan:

    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?

  2. Masino Sinaga mengatakan:

    @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.

  3. HamaSale Shop mengatakan:

    Infonya sangat bermanfaat bro..
    thanks

  4. iPhonemekka.com mengatakan:

    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

  5. Carlos mengatakan:

    @iPhonemekk

    Thank you for inform us that is working in 1.3.1 and thankyou to Masino Sinaga for working on this solution!

  6. Piotr mengatakan:

    Is it work for version PrestaShop v.1.3.2

  7. Herbal mengatakan:

    Udah di rubah, id produknya sich udah hilang tapi pas kita klik produknya produk tidak di temukan, ada pencerahan ngak ?
    saya pake prestashop 1.3.1

  8. Steven mengatakan:

    It is work in my website!
    Thanks so much!

  9. gaurav malik mengatakan:

    Read the manual and turn on friendly URLS. All you have to do is a normal 301 to sort out www vs. non www and you are all set. You also have page specific meta info on each page.

  10. pako69 mengatakan:

    Thanks but what about the same hack with Prestashop 1.4.1 ?

  11. darian mengatakan:

    great post Hi,

    Thanks for this great solution!

  12. jennyb mengatakan:

    @pako69
    And how about v1.4.3.0 ?

  13. dent mengatakan:

    Do you know how can I remove a specific language ID from url rewrite on PS 1.4.25?

  14. Yassar mengatakan:

    One of my colleagues had problems with the URL rewriting on a company website, so he handed the task over to me. I tried URL rewriting from the Prestashop modules with no luck. Then I found this website and the solution worked perfectly. Thanks a lot.

  15. eojie mengatakan:

    nah misalnya gan klo ada 30 kategori, dalam setiap kategori ada 15 macam produk itu gmana?
    apa harus manual lagi? belum lagi klo kita update produk via Back Office ?

  16. Bogdan micu mengatakan:

    work in all presta ( 1.2 – 1451) but aren’t ease if modify Tools.php : public static function generateHtaccess ?

  17. Utkarsh Mishra mengatakan:

    Is this tweak compatible with Prestashop 1.4+ ?
    I tried implementing it on the new version. The modified URLs are generated, but they are jut broken links. On clicking them, 404 message is displayed. I suppose Link.php code is working fine but URL Rewriting Rules are not implemented successfully. How can I make it work in the new version ?

  18. Stephen mengatakan:

    Thanks for the excellent article.

    Unfortunately, I’m having the same problem on PS 1.4 as Utkarsh. The URLs rewrite fine but I’m then getting a 404 error on those URLs.

    I would be very thankful if someone could solve this problem.

Utarakan pikiran Anda

*


*