Skip to content
View in the app

A better way to browse. Learn more.

Clicshopping AI, Free generative artificial intelligence e-commerce Open Source , Open Source Store Onlne

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Vietnamese URL Rewriing

Featured Replies

Oups ! Ok I see  miss a inside the san.

look in Shop/URls this function : getSkipAccents

Now if you do want you must change something inside this function.

 

The best is to override this function. Copy the files in Custom/Sites/Shop

After, you can change this function like you wish.

hello @SuperThin,

 

Could you test (on several specific world)  this please  and tell me if it work ?

 

in includes/Shop/RewriteUrl.php - change the function by this.

In it's work it will be added on next update.

I take different work on your website, and seems now ok inside the the url

Thank you for your comment @SuperThin

/**
     * Remove url accent
     * @param $str
     * @param string $charset
     * @return null|string|string[]
     */
    protected function getSkipAccents(string $str, string $charset = 'utf-8'): string
    {

      if (!extension_loaded('intl')) {
        throw new Exception('intl module not loaded');
      } else {
        $transliterator = \Transliterator::create('Any-Latin; Latin-ASCII');
        $str = $transliterator->transliterate(mb_convert_encoding(htmlspecialchars_decode($str),$charset, 'auto'));
      }

      $str = htmlentities($str, ENT_NOQUOTES, $charset);

      $str = preg_replace('#&([A-za-z])(?:acute|cedil|caron|circ|grave|orn|ring|slash|th|tilde|uml);#', '\1', $str);
      $str = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $str);
      $str = preg_replace('#&[^;]+;#', '', $str);
      $str = preg_replace('/[^A-Za-z0-9\-]/', '', $str); // Removes special chars

      return $str;
    }

 

  • Author
On 10/27/2019 at 10:10 AM, ClicShopping said:

hello @SuperThin,

 

Could you test (on several specific world)  this please  and tell me if it work ?

 

in includes/Shop/RewriteUrl.php - change the function by this.

In it's work it will be added on next update.

I take different work on your website, and seems now ok inside the the url

Thank you for your comment @SuperThin


/**
     * Remove url accent
     * @param $str
     * @param string $charset
     * @return null|string|string[]
     */
    protected function getSkipAccents(string $str, string $charset = 'utf-8'): string
    {

      if (!extension_loaded('intl')) {
        throw new Exception('intl module not loaded');
      } else {
        $transliterator = \Transliterator::create('Any-Latin; Latin-ASCII');
        $str = $transliterator->transliterate(mb_convert_encoding(htmlspecialchars_decode($str),$charset, 'auto'));
      }

      $str = htmlentities($str, ENT_NOQUOTES, $charset);

      $str = preg_replace('#&([A-za-z])(?:acute|cedil|caron|circ|grave|orn|ring|slash|th|tilde|uml);#', '\1', $str);
      $str = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $str);
      $str = preg_replace('#&[^;]+;#', '', $str);
      $str = preg_replace('/[^A-Za-z0-9\-]/', '', $str); // Removes special chars

      return $str;
    }

 

Hahaha, thank you very much when pointing me exactly which function in "Mods" (game) :D

 

I will borrow "strip special code" from WordPress to rewrite function getSkipAccents because PHP has never been a Unicode native language support. I don't know why? Many guys from Israel, Euro use English only?

 

I am reading https://is.gd/F2BLnq

  • Author

Hooray!

 

protected function removeVNeseAccents ($str){
      $unicode = array(
          'a'=>'á|à|ả|ã|ạ|ă|ắ|ặ|ằ|ẳ|ẵ|â|ấ|ầ|ẩ|ẫ|ậ',
          'd'=>'đ',
          'e'=>'é|è|ẻ|ẽ|ẹ|ê|ế|ề|ể|ễ|ệ',
          'i'=>'í|ì|ỉ|ĩ|ị',
          'o'=>'ó|ò|ỏ|õ|ọ|ô|ố|ồ|ổ|ỗ|ộ|ơ|ớ|ờ|ở|ỡ|ợ',
          'u'=>'ú|ù|ủ|ũ|ụ|ư|ứ|ừ|ử|ữ|ự',
          'y'=>'ý|ỳ|ỷ|ỹ|ỵ',
          'A'=>'Á|À|Ả|Ã|Ạ|Ă|Ắ|Ặ|Ằ|Ẳ|Ẵ|Â|Ấ|Ầ|Ẩ|Ẫ|Ậ',
          'D'=>'Đ',
          'E'=>'É|È|Ẻ|Ẽ|Ẹ|Ê|Ế|Ề|Ể|Ễ|Ệ',
          'I'=>'Í|Ì|Ỉ|Ĩ|Ị',
          'O'=>'Ó|Ò|Ỏ|Õ|Ọ|Ô|Ố|Ồ|Ổ|Ỗ|Ộ|Ơ|Ớ|Ờ|Ở|Ỡ|Ợ',
          'U'=>'Ú|Ù|Ủ|Ũ|Ụ|Ư|Ứ|Ừ|Ử|Ữ|Ự',
          'Y'=>'Ý|Ỳ|Ỷ|Ỹ|Ỵ',
       );

      foreach($unicode as $nonUnicode=>$uni){
        $str = preg_replace("/($uni)/i", $nonUnicode, $str);
      }
      
      return strtolower($str);
   }

    protected function getSkipAccents(string $str, string $charset = 'utf-8'): string
    {
      return $this->removeVNeseAccents($str);
    }

Done!

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

Important Information

By using this site, you agree to our Terms of Use

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.