xF2 Tuts Hướng dẫn loại bỏ ký tự đặc biệt trong url của xenForo 2.x

  • Xin chào Guest
    Rất vui khi được gặp bạn ở đây, hiện tại bọn mình đang cần tuyển dụng cho vị trí Team Resources với mong muốn phát triển kho tài nguyên đầy đủ nhất dành cho người dùng, xin mời Guest nhấn vào đây để tìm hiểu thêm.
Nếu bạn đang gặp vấn đề với đường dẫn (url) của xenForo 2.x cụ thể ở đây là khi thành viên đăng bài mà trong tiêu đề có chứa các ký tự đặc biệt như icon, các hình ký tự bằng html thì đây là cách giúp bạn khắc phục nhược điểm này của xenForo.
Ví dụ khi thành viên đăng bài có chứa các ký tự đặc biệt như ảnh phía dưới thì url của bài đăng đó sẽ hiển thị một dãi ký tự lằng ngoằn.
vi-du-1.PNG

Thay vì phải bắt buộc thành viên không được để ký tự trong tiêu đề của bài viết, thì giờ qua thủ thuật sau, mọi chuyện sẽ được tự động hoàn toàn, code sau dây sẽ giúp xenForo tự loại bỏ các ký tự đặc biệt đó trong url

Bước 1: các bạn mở thư mục của xenForo 2.x theo đường dẫn src\XF\Mvc sau đó mở file Router.php

Bước 2: các bạn tìm đoạn mã dưới đây trong file Router.php
PHP:
if ($romanize)
        {
            $string = preg_replace('/[^a-zA-Z0-9_ -]/', '', $string);
        }

Bước 3: các bạn thêm vào bên dưới đoạn mã sau:
PHP:
// Match Emoticons
        $regex_emoticons = '/[\x{1F600}-\x{1F64F}]/u';
        $string = preg_replace($regex_emoticons, ' ', $string);
        
        // Match Miscellaneous Symbols and Pictographs
        $regex_symbols = '/[\x{1F300}-\x{1F5FF}]/u';
        $string = preg_replace($regex_symbols, ' ', $string);
    
        // Match Transport And Map Symbols
        $regex_transport = '/[\x{1F680}-\x{1F6FF}]/u';
        $string = preg_replace($regex_transport, ' ', $string);

        // Match Miscellaneous Symbols
        $regex_misc = '/[\x{2600}-\x{26FF}]/u';
        $string = preg_replace($regex_misc, ' ', $string);

        // Match Dingbats
        $regex_dingbats = '/[\x{2700}-\x{27BF}]/u';
        $string = preg_replace($regex_dingbats, ' ', $string);
        
        // loai bo ky tu dac biet va "--"
        $string = preg_replace('/[^\p{L}\p{N}\s]/u', '', $string);

Chúc các bạn thành công!.
 
Top Bottom