Skocz do zawartości


Zdjęcie

Duże i małe litery w adresach url forum IPB


  • Zaloguj się, aby dodać odpowiedź
Brak odpowiedzi do tego tematu

#1 makensis

makensis

    Naczelny

  • 5 036 postów

Napisano 24 01 2013 - 16:43

IPB 3.4.2 już po testach. System się sprawdza i sam akceptuje polskie znaki w adresach WWW, oczywiście jeśli chcemy mieć duże i małe litery w odnośnikach to wykonujemy poniższą instrukcję:

Zmiana linków IPB 3.4.X na takie, które zawierają duże i małe litery w forum IPB (Uppercase letters in friendly url addresses(FURL) of forums IPB)

Wyjaśnienia: IPB 3.4 posiada już przygotowaną do obsługi polskich znaków narodowych funkcje MakeSEOtitle(), jednakże nadal ma ona problem z dużymi literami i je zamienia na małe. Utrudnia to czytelność tekstu, tym bardziej, że odnośniki są na równi traktowane jak tekst description czy title. Poniższa porada pozwoli dostosować wygląd odnośników, czyli parsowanie dużych i małych liter w najnowszym dziele IPS :)

Wymagania:

  • IPB 3.4.X (wystarczy zmiana z pominięciem 4-6 punktu)
  • kodowanie znaków forum: UTF-8

Efekt:

pre_1343403043__polskie_znaki_forum_ipb.

Do dzieła!!


I krok:

  • Przejdź do lokalizacji: /admin/source/base/ i edytuj plik: core.php
  • Znajdź funkcję: makeSeoTitle( $text ) i podmień zawartość funkcji na:

    //rewrited by Makensis SEO v. 2.2.2
    static public function makeSeoTitle( $text )
        {
            if ( ! $text )
            {
                return '';
            }
    
            /* Strip all HTML tags first */
            $text = strip_tags($text);
            
            /* Remove specific hex characters (/,<,>,#) as it confuses redirect engine */
            $text = preg_replace( '#%(2f|3c|3e|23)#i', '', $text );
            
            /* Preserve other %data */
            $text = preg_replace('#%([a-fA-F0-9][a-fA-F0-9])#', '-xx-$1-xx-', $text);
            $text = str_replace( array( '%', '`' ), '', $text);
            $text = preg_replace('#-xx-([a-fA-F0-9][a-fA-F0-9])-xx-#', '%$1', $text);
    
            /* Convert accented chars */
            if ( IPS_DOC_CHAR_SET != 'UTF-8' )
            {
                /* http://community.invisionpower.com/resources/bugs.html/_/ip-board/i-broke-furls-urls-with-accents-r41236 */
                /* AJAX requests have HTML entities, so convert to accents then romanize */
                if ( strstr( $text, '&#' ) )
                {
                    $text = html_entity_decode( $text, ENT_NOQUOTES, 'UTF-8' );
                }
                
                $text = self::convertAccents($text);
            }
            
            /* Convert it */
            if ( self::isUTF8( $text )  )
            {
                
    
                $text = self::utf8Encode( $text, 250 );
            }
    
            /* Finish off */
            
            
            if ( strtolower( IPS_DOC_CHAR_SET ) == 'utf-8' )
            {
                $text = preg_replace( '#&.+?;#'	    , '', $text );
                
            }
            else
            {
                $text = str_replace( array( '&quot;', '&amp;'), '', $text );
                $text = preg_replace( '#\&[\#a-z0-9]{2,6};#i', '', $text );
                $text = preg_replace( '#[^%&\#;a-z0-9 _-]#', '', $text );
            }
            
            $text = str_replace( array( '`', ' ', '+', '.', '?', '_', '#', '&' ), '-', $text );
            $text = preg_replace( "#-{2,}#", '-', $text );
            $text = trim($text, '-');
            
            IPSDebug::addMessage( "<span style='color:red'>makeSeoTitle ($text) called</span>" );
            
            return ( $text ) ? $text : '-';
    }
    
  • Zapisz zmiany w pliku. Funkcję można oczywiście zooptymalizować we własnym zakresie.
  • Przejdź do lokalizacji: admin/sources/classes/output i edytuj plik publicOutput.php
  • Usuń:

    if ( strstr( $_toTest, '%' ) ) { /* Lowercase it as some browsers send %E2 but it will be stored as %e2 */ $_toTest = strtolower( $_toTest ); }
  • W wersji IPB 3.4.9 usuń:

    	if ( strstr( $_toTest, '%' ) )
    		{
    			/* Lowercase it as some browsers send %E2 but it will be stored as %e2 */
    			$_toTest = strtolower( $_toTest );
    		}
    
  • Zapisz zmiany w pliku


  • 2

Zobacz więcej tematów z tagiem: IPB SEO IPB optymalizacja IPB FURL przyjazne linki IP.Board



Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych