• 06-05-2009, 12:41:29
    #1
    Selam arkadaşlar
    Birçok program ile sitemap oluşturabiliyoruz. Ancak ben siteme dinamik sitemap eklemek istiyorum. Yani php ile veritabanındaki verileri alıp sitemap oluşturabilen, veritabanına veri girildikçe kendini güncelleyen veya belli aralıklarla kendini güncelleyen bir dinamik sitemap nasıl oluşturulur.
    Şöyle bir kod var ancak
    <?
    // Önce mysql bağlantı bilgilerini içeren php dosyamızı include ediyoruz
    $mysqlhost="localhost";
    $mysqluser="makaleler";
    $mysqlpass="12345";
    $mysqldatabase="makaleler";
    if(! $baglanti=@mysql_connect($mysqlhost, $mysqluser, $mysqlpass)) die("veritabani baglantisi yok.");
    mysql_select_db($mysqldatabase);
    
    // İkinci olarak sayfa output'unun hangi formatta olduğunu belirten header komutunu gönderiyoruz. Sayfamız xml formatında olacaktır.
    header("Content-Type: text/xml");
    
    // Get metoduyla aldığımız sayfa verisini $sayfa isimli değişkene atıyoruz.
    if(! isset($_GET[sayfa])) $sayfa=1; else $sayfa=$_GET[sayfa];
    
    //Tarihi belirtiyoruz. Burada format önemli. Format dışına çıkılmamalı. Eğer veritabanınızda her makalenin giriş tarihi varsa dinamik olarak onu da ekleyebilirsiniz. Burada sabit bir gün kullandım.
    $date="2008-10-21";
    
    // Eğer sayfa değişkeni "index" değeri aldıysa output olarak sitemap-index verilecek.
    if($sayfa=="index"):
    
    // İlk olarak bütün makale sayısını alıyoruz.
    $index_sayi=mysql_num_rows(mysql_query("SELECT `id` FROM `makaleler`"));
    // İkinci olarak kaç adet index'te kaç adet sitemap listeleneceğini bulmak için, toplam rakamı sitemap başı url sayısına bölüyoruz. Ben genelde veritabanını yormamak ve hızlı yüklenme için 6000 kullanırım.
    $index_sayi=ceil($index_sayi / 6000);
    
    //Google sitemap-index header'larını giriyoruz. Encoding'i dileğinize göre değiştirebilirsiniz.
    echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
       <sitemapindex xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n";
    
    // Ana etiketleri girdikten sonra sitemap'ları döngü ile listeliyoruz.
    for($i=0; $i<$index_sayi; $i++){
    echo "<sitemap>
          <loc>http://www.butunmakaleler.com/sitemap.php?sayfa=".($i+1)."</loc>
          <lastmod>$date</lastmod>
       </sitemap>\n";
    }
    
    // Son olarak sitemap-index sonlandırma etiketini girip index'i bitiriyoruz.
    echo "</sitemapindex>";
    
    // Eğer GET ile aldığımız sayfa değişkeni numerik ise bu kodlar çalışacak.
    else:
    
    // Sayfa numarasına göre 6000'lik veri alınıyor.
    $sorgu=mysql_query("SELECT `id` FROM `makaleler` ORDER BY `id` ASC LIMIT ".(($sayfa-1)*6000).",6000");
    
    // Sitemap ana xml etiketleri giriliyor.
    echo "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>
    <urlset xmlns=\"http://www.google.com/schemas/sitemap/0.84\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
     xsi:schemaLocation=\"http://www.google.com/schemas/sitemap/0.84 http://www.google.com/schemas/sitemap/0.84/sitemap.xsd\">\n";
    
    // Alınan 6000'lik parça döngü ile yazdırılıyor.
    while($sonuc=mysql_fetch_assoc($sorgu)):
    
    echo "  <url>
                    <loc>http://www.butunmakaleler.com/makale.php?id=".$sonuc[id]."</loc>
                    <lastmod>$date</lastmod>
                    <changefreq>daily</changefreq>
                    <priority>0.5</priority>
            </url>\n";
    
    endwhile;
    
    // Son olarak sitemap'ı sonlandırma etiketini yazdırıp dosyayı kapatıyoruz.
    echo '</urlset>';
    
    endif;
    ?>
    Benim sitemnde kullanmış olduğum link yapısı
    [domain]/izle-4728-komik-bkm-mutfak-mr-fazil.html
    [domain]/izle-[video_id]-[kategori_title]-[video_title].html
    Bu kodları kendi link yapıma nasıl uyarlayabilirim ve bu kodlar benim isteğimi gerçekleştirbilecek kodlarmıdır?
    Uzman arkadaşlarımızdan yardım bekliyorum
    Teşekkürler
  • 06-05-2009, 12:42:51
    #2
    Üyeliği durduruldu
    konuyu editleyip kodlari php tagı içine alirsaniz biraz daha okunaklı olur sanirim.
    birde siz nerde takıldınız. konuyu biraz daha açarsanız. ne yaptinizne yapamadiniz?
  • 06-05-2009, 12:48:39
    #3
    benim takıldığım nokta örnekteki link yapısı benim sitemdeki link yapısına uygun değil
    benim sitemdeki link yapısına uygun hale çeviremedim
  • 06-05-2009, 12:56:59
    #4
    Üyeliği durduruldu
    <loc>http://www.butunmakaleler.com/makale.php?id=".$sonuc[id]."</loc>

    olan kısmı sitenizde linkler nasil oluşturuluyorsa orda kullandiginzi ayni fonksiyonla bu kısma uygulamaniz gerekiyor.

    yalniz verdiginiz koddaki dizi kullanımlarıda hatalı;
    https://www.r10.net/php/322923-dizi-k...post1058175533
  • 06-05-2009, 13:01:50
    #5
    benim takıldığım noktada zaten o uyarlama kısmı
    kendi link yapıma uyarlayamadım

    benim link yapım
    [domain]/izle-4728-komik-bkm-mutfak-mr-fazil.html
    [domain]/izle-[video_id]-[kategori_title]-[video_title].html

    şeklinde.
    açıkçası örnektekine pek benzemiyor
  • 06-05-2009, 13:11:44
    #6
    önce cektigin id'den katisim video baslik gibi degerleri cekip sef fonksiyonunla donusturup daha sonra basacaksın tek yapman gereken bu
  • 06-05-2009, 13:21:00
    #7
    Üyeliği durduruldu
    mrsilver adlı üyeden alıntı: mesajı görüntüle
    benim takıldığım noktada zaten o uyarlama kısmı
    kendi link yapıma uyarlayamadım
    benim link yapım
    [domain]/izle-4728-komik-bkm-mutfak-mr-fazil.html
    [domain]/izle-[video_id]-[kategori_title]-[video_title].html
    şeklinde.
    açıkçası örnektekine pek benzemiyor
    muhtemelen orda title ile isimlendiridginz basliga bir fonksiyon uygulaniyordur.

    normal listelen sayfalarinizdan bu kalibi oldugu gibi almaniz gerekiyor. ondan dolayi zaten kod vs den bahsetmek ziyade direk mantik soyledim. kodlari görmeden tam şunu yazmalisiniz demek zor. zaten listeleyen sayfadan almadan kendiniz uydurmaya calisirsaniz farklı linkler ortaya cikar
  • 06-05-2009, 13:37:35
    #8
    sdemirkeser adlı üyeden alıntı: mesajı görüntüle
    muhtemelen orda title ile isimlendiridginz basliga bir fonksiyon uygulaniyordur.
    normal listelen sayfalarinizdan bu kalibi oldugu gibi almaniz gerekiyor. ondan dolayi zaten kod vs den bahsetmek ziyade direk mantik soyledim. kodlari görmeden tam şunu yazmalisiniz demek zor. zaten listeleyen sayfadan almadan kendiniz uydurmaya calisirsaniz farklı linkler ortaya cikar
    hocam işinize yararmı bilmiyorum ancak bendeki link kodu şu şekilde
    $query = $db->get_results("SELECT * FROM tbl_video INNER JOIN tbl_video_data ON tbl_video.id = tbl_video_data.v_id and tbl_video.status = '1'  order by tbl_video.points desc limit 5");
    
    if (count($query)>0) {
    
    foreach ($query as $vid_data) {
    
    if ($g_conf['seo']==1) {
    
    $link = $g_conf[base_url].'/izle-'.$vid_data->id.'-'.seo_cevir(get_category_name($vid_data->category)).'-'.seo_cevir($vid_data->title).'.html';
    
    } else {
    
    $link = $g_conf[base_url].'/index.php?p=View&id='.$vid_data->id;
    
    }
  • 06-05-2009, 13:45:15
    #9
    Üyeliği durduruldu
    burdan nasil bir link mantigi anlasiliyor ama kurduğunuz sitemaptaki sql in falan tümden değişmesi lazim. kendiniz editleyecek kadar bilginiz yoksa ücretli olarak yapabilirim. Ortalama yarım saat - 1 saat arasında ugrastirir sisteme göre sitemap i düzenlemek