• 04-05-2008, 06:22:48
    #1
    Türkçe karakter sorununu çözen scriptin orjinali:
    //-- [+] phpBB SEO keyword URLs ------------------------------------------
    //
    function make_url_friendly($url)
    {
        $url = trim($url);
        $url = strtolower($url);
        $find = array('<b>', '</b>');
        $url = str_replace ($find, '', $url);
        $url = preg_replace('/<(\/{0,1})img(.*?)(\/{0,1})\>/', 'image', $url);
        $find = array(' ', '&quot;', '&amp;', '&', '\r\n', '\n', '/', '\\', '+', '<', '>');
        $url = str_replace ($find, '-', $url);
        $find = array('é', 'è', 'ë', 'ê', 'É', 'È', 'Ë', 'Ê');
        $url = str_replace ($find, 'e', $url);
        $find = array('í', 'ı', 'ì', 'î', 'ï', 'I', 'İ', 'Í', 'Ì', 'Î', 'Ï');
        $url = str_replace ($find, 'i', $url);
        $find = array('ó', 'ö', 'Ö', 'ò', 'ô', 'Ó', 'Ò', 'Ô');
        $url = str_replace ($find, 'o', $url);
        $find = array('á', 'ä', 'â', 'à', 'â', 'Ä', 'Â', 'Á', 'À', 'Â');
        $url = str_replace ($find, 'a', $url);
        $find = array('ú', 'ü', 'Ü', 'ù', 'û', 'Ú', 'Ù', 'Û');
        $url = str_replace ($find, 'u', $url);
        $find = array('ç', 'Ç');
        $url = str_replace ($find, 'c', $url);
        $find = array('ş', 'Ş');
        $url = str_replace ($find, 's', $url);
        $find = array('ğ', 'Ğ');
        $url = str_replace ($find, 'g', $url);
        $find = array('/[^a-z0-9\-<>]/', '/[\-]+/', '/<[^>]*>/');
        $repl = array('', '-', '');
        $url = preg_replace ($find, $repl, $url);
        $url = str_replace ('--', '-', $url);
        return $url;
    }
    //
    //-- [-] phpBB SEO keyword URLs ------------------------------------------
    Sitemap modülünün ilgili bölümünün orjinali:
    function topic_map($seomod) 
    {
        global $db, $user;
        
        $t_xml = null;
        
        $sql = 'SELECT topic_id, topic_title, topic_last_post_time FROM '. TOPICS_TABLE;
        $result = $db->sql_query($sql);
        
        while ($data = $db->sql_fetchrow($result)) 
        {
            $lastpost = $user->format_date($data['topic_last_post_time'], "Y-m-d");
            $t_xml .= '<url>'."\r\n";
            
            if ($seomod == true) 
            {
                $topicname = clean_url($data['topic_title']);
                $topicname = clean_for_xml($topicname);
                $t_xml .= '<loc>'.FORUM_DOMAIN_ROOT.$topicname.'-t'.$data['topic_id'].'.html</loc>'."\r\n";
            } 
            else 
            {
                $t_xml .= '<loc>'.FORUM_DOMAIN_ROOT.'viewtopic.php?t='.$data['topic_id'].'</loc>'."\r\n";
            }
            $t_xml .= '<lastmod>'.$lastpost.'</lastmod>'."\r\n";
            $t_xml .= '<changefreq>daily</changefreq>'."\r\n";
            $t_xml .= '<priority>0.5</priority>'."\r\n";
            $t_xml .= '</url>'."\r\n";
        }        
        return $t_xml;
    }
    Bunları kullanarak benim yaptığım deneme:
    function topic_map($seomod)
    {
        global $db, $user;
    
        $t_xml = null;
    
        $sql = 'SELECT topic_id, topic_title, topic_last_post_time FROM '. TOPICS_TABLE;
        $result = $db->sql_query($sql);
    
    $seoicinurl = $data['topic_title'];
    //-- [+] phpBB SEO keyword URLs ------------------------------------------
    //
    function make_url_friendly($seoicinurl)
    {
        $seoicinurl = trim($seoicinurl);
        $seoicinurl = strtolower($seoicinurl);
        $find = array('<b>', '</b>');
        $seoicinurl = str_replace ($find, '', $seoicinurl);
        $seoicinurl = preg_replace('/<(\/{0,1})img(.*?)(\/{0,1})\>/', 'image', $seoicinurl);
        $find = array(' ', '&quot;', '&amp;', '&', '\r\n', '\n', '/', '\\', '+', '<', '>');
        $seoicinurl = str_replace ($find, '-', $seoicinurl);
        $find = array('é', 'è', 'ë', 'ê', 'É', 'È', 'Ë', 'Ê');
        $seoicinurl = str_replace ($find, 'e', $seoicinurl);
        $find = array('í', 'ı', 'ì', 'î', 'ï', 'I', 'İ', 'Í', 'Ì', 'Î', 'Ï');
        $seoicinurl = str_replace ($find, 'i', $seoicinurl);
        $find = array('ó', 'ö', 'Ö', 'ò', 'ô', 'Ó', 'Ò', 'Ô');
        $seoicinurl = str_replace ($find, 'o', $seoicinurl);
        $find = array('á', 'ä', 'â', 'à', 'â', 'Ä', 'Â', 'Á', 'À', 'Â');
        $seoicinurl = str_replace ($find, 'a', $seoicinurl);
        $find = array('ú', 'ü', 'Ü', 'ù', 'û', 'Ú', 'Ù', 'Û');
        $seoicinurl = str_replace ($find, 'u', $seoicinurl);
        $find = array('ç', 'Ç');
        $seoicinurl = str_replace ($find, 'c', $seoicinurl);
        $find = array('ş', 'Ş');
        $seoicinurl = str_replace ($find, 's', $seoicinurl);
        $find = array('ğ', 'Ğ');
        $seoicinurl = str_replace ($find, 'g', $seoicinurl);
        $find = array('/[^a-z0-9\-<>]/', '/[\-]+/', '/<[^>]*>/');
        $repl = array('', '-', '');
        $seoicinurl = preg_replace ($find, $repl, $seoicinurl);
        $seoicinurl = str_replace ('--', '-', $seoicinurl);
        return $seoicinurl;
    }
    //
    //-- [-] phpBB SEO keyword URLs ------------------------------------------
    
    
    
        while ($data = $db->sql_fetchrow($result))
        {
            $lastpost = $user->format_date($data['topic_last_post_time'], "Y-m-d");
            $t_xml .= '<url>'."\r\n";
    
            if ($seomod == true)
            {
                $t_xml .= '<loc>'.FORUM_DOMAIN_ROOT.$seoicinurl.'-t'.$data['topic_id'].'.html</loc>'."\r\n";
            }
            else
            {
                $t_xml .= '<loc>'.FORUM_DOMAIN_ROOT.'viewtopic.php?t='.$data['topic_id'].'</loc>'."\r\n";
            }
            $t_xml .= '<lastmod>'.$lastpost.'</lastmod>'."\r\n";
            $t_xml .= '<changefreq>daily</changefreq>'."\r\n";
            $t_xml .= '<priority>0.5</priority>'."\r\n";
            $t_xml .= '</url>'."\r\n";
        }
        return $t_xml;
    }
    Sonuç olarak seo olarak çıkarılması gereken kelimelerin yerinde hiçbirşey çıkmıyor.
  • 04-05-2008, 11:34:35
    #2
    seo'yu yerleştirmemişsin kullanım şeklin şöyle olcak;
    $seoicinurl = make__url_friendly($data['topic_title']);
  • 04-05-2008, 12:52:31
    #3
    7. satırda şöyle tanımlamıştım işe yaramaz mı ?
    $seoicinurl = $data['topic_title'];
  • 04-05-2008, 14:51:48
    #4
    Alexis adlı üyeden alıntı: mesajı görüntüle
    $seoicinurl = make_url_friendly($data['topic_title']);
    Sanki biraz php fonksiyon mantığını anlamamışsın, $seoicinurl değişkeni ile fonksiyon parametre değişkenin adları aynı olması demek çalışacak demek değildir, direk girmez fonksiyon içine, dışarıdan çağıracaksın, verdiğim kod gibi...

    $data değişkeni de while dışında çalışmaz... fonksiyon içinde fonksiyonun da çalışacağından emin değilim, seo fonksyonunu topic_map fonksiyonu dışına alabilirsin..

    Ayrıca bu phpBB3 te başka seo_rewrite varsa direk ondan yararlanmak daha mantıklı olabilir.

    http://www.phpbbturkiye.net/xml-site...ite.php?fid=20
    Bu konuların uzmanı değilim zaten. Deneme yanılma ve destek alarak bişiyler yapmaya çalışıyorum.

    Üstat sen mükemmel bir şekilde bitirmişsin zaten olayı. Onu bir mod haline getirip yayınlasan yerli yabancı birçok phpbb kullanıcısının hayır duasını alırsın.
  • 04-05-2008, 14:57:05
    #5
    Yayınlamasına yayınladım ben, sen az daha uğraşırsan çalışır senin ki de...
  • 04-05-2008, 15:08:51
    #6
    Alexis adlı üyeden alıntı: mesajı görüntüle
    Yayınlamasına yayınladım ben, sen az daha uğraşırsan çalışır senin ki de...
    Benim Türkçe karakter sorununu çözecek olan scriptimin işe yaramayacağına kanaat getirdim. Önerebileceğin başka bir script var mı ? Onu entegre etmeye çalışayım...