AJAX destekli WordPress'imi Taranabilir Yapma


9

Aşağıdakileri okudum ve bu düzeni WordPress çalıştıran web siteme uygulamaya çalışıyorum: http://code.google.com/intl/fr-CA/web/ajaxcrawling/index.html

Eğer benim web sitesini ziyaret ederseniz http://www.visualise.ca/ bunu ana sayfasına içindeki mesajları yükler göreceksiniz ve URL olur http://visualise.ca/#!/anne-au-cherry bu gönderi yüklendi. Tarayıcı için aynı içeriğin statik bir sürümü http://visualise.ca/anne-au-cherry adresinde mevcuttur, ancak bir tarayıcı kullanan bir ziyaretçi ziyaret ederse http://visualise.ca/# adresine yönlendirilir ! / anne-au-cherry (bu javascript ile yapılır).

Tarayıcının gerekli olanı sağlamak için internette ?_escaped_fragment_=bulduğum bir WordPress kesmek kullandım: http://www.wordpress-fr.net/support/sujet-54810-add-action-parse-request ve şimdi GoogleBot, AJAX destekli sayfalarımın içeriğini görebilir. Her şeyin bittiğini düşündüm.

Ancak Facebook'a bir yazı bağlantısı yapıştırdığımda (yani) sayfanın içeriğini okuyamıyor, bu yüzden web sitemin Facebook desteklediğinden Google dokümanlarında açıklanan şemaya gerçekten uymadığını tahmin ettim ( http: : //twitter.com/#! / gablabelle çalışacak). Bu yüzden hashbang (#!) Almak için jQuery.address eklentisini kullandığımdan beri, web sitelerine gittim ve dosyaları ve benimki arasındaki farkları görmek için örnek dosyalarını indirdim ve muhtemelen bir php işlevi kullandıklarını fark ettim gerekli HTML anlık görüntülerini oluşturmak için: https://github.com/bartaz/jquery-address/blob/master/samples/crawling/index.php çünkü bu yüzden Facebook benimkini okuyamıyor.

<?php

    error_reporting(E_ALL ^ (E_NOTICE | E_WARNING));

    $fragment = $_REQUEST['_escaped_fragment_'];
    $file = 'data/' . (isset($fragment) && $fragment != '' && $fragment != '/' ? preg_replace('/\//', '', $fragment) : 'home') . '.xml';
    $re = '/(^<[^>]*>)|(\n|\r\n|\t|\s{2,4})*/';

    $handle = fopen($file, 'r');
    if ($handle != false) {
        $content = preg_replace($re, '', fread($handle, filesize($file)));
        fclose($handle);
    } else {
     $content = 'Page not found!';
        header(php_sapi_name() == 'cgi' ? 'Status: 404' : 'HTTP/1.1 404');
    }

?>

Benim tahminim, belki de HTML anlık görüntüleri için WordPress kesmek yerine benzer bir php fonksiyonu kullanabileceğimi, ancak WordPress'e adapte etmem gerekeceği yönündedir. Sorun şu ki hiçbir programcı değilim ve şimdiye kadar elimden geleni yaptım.

Yayımım şu biçimde: http://visualise.ca/#!/anne-au-cherry ve statik sürümü http://visualise.ca/anne-au-cherry adresinde mevcuttur (Nerede anne-au-cherry) yazının bilgi kaynağıdır ve görüntülediğimiz sayfaya bağlı olarak değişir).

Yani sorum şu: Birisi doğru yolda olduğumu onaylayabilir ve mümkünse bu php işlevi oluşturmaya yardımcı olabilir mi?

Zaman ayırdığınız ve yardım ettiğiniz için çok teşekkürler!


5
Bir site haritası oluşturmayı düşündünüz mü? Örneğin, Yoast WordPress SEO, içeriğiniz için otomatik olarak bir site haritası oluşturur ve Bing, Google ve Yahoo'ya gönderir ...

Site haritası fikrini + 1'leyin. Yine de siteyi Google'a göstermek için geçen URL parametresiyle ilgili kafam karıştı. Hem a) sayfa içeriği hem de b) JavaScript olmadan çalışan bir URL yapıştırabilir misiniz? Bu yoksa, Google veya Facebook'un tarayacağı hiçbir şey yoktur.
brandwaffle

Yanıtlar:


4

AJAX destekli WordPress sitelerini taranabilir hale getirmek için özellikle "hashbang" ("! #") Kullanarak KAÇININ .

Gerçekten bir WordPress sitesinde "hashbang" yöntemini kullanmak istemiyorsunuz.

"! #" Daha siteler için bir hacky yama gibi olamaz 's AJAX sürümüne statik analog sağlarlar. Başka alternatifi olmadığı sürece genel olarak kullanımı Google tarafından önerilmez.

Orada hiçbir yararı WordPress bir hashbang sistemini uygulamak için. WordPress için bir ön uç AJAX çözümü, mevcut URL şemasının etrafında çalışmalıdır (karma yok, patlama yok).

Özet: WordPress doğal olarak taranabilir; hash-bang kullanarak kırmayın.


1

Özellikle Facebook'a sayfanızın meta bilgilerini düzgün bir şekilde göstermiyorsa, uygun og: özellik meta verilerini ekleyeceği için WordPress için OpenGraph eklentisine bakmalısınız. http://wordpress.org/extend/plugins/opengraph/

Ayrıca, başlığa böyle bir bağlantı ekleyebilirsiniz

<link rel="canonical" href="link_back_to_real_post_url">

Ve bunun bir şey yapıp yapmadığını görün.

Yine de sormalıyım, bunu neden yapıyorsun? Twitter, bu URL yapısı için tam olarak taranması bir acı olduğu için büyük bir ateş altında kaldı. Yapmamalısın dememelisin, ama sebebinin ne olduğunu merak ediyorum :)


1

Aslında yaptığım WraithKenny gibi hashbangs kullanmamaktır.

HTML5 durum yönetiminde kullanılan web sitesinin temel yolunu ayarlamak için jQuery adres eklentisini $ .address.state (value) yöntemiyle kullanma ve geçerli olanı ayarlamak için $ .address.value (value) yöntemini kullanma derin bağlantı değeri dilediğimi yapabildim.

http://visualise.ca/

Yayınlar (bir resim küçük resmine tıklayın) AJAX aracılığıyla yüklenir ve URL aynı anda değişir, yayınlar elbette aynı kalıcı bağlantı yapısını kullanarak kendi başlarına bulunur, böylece tamamen taranabilir.

Tek sorun, bence (doğrulanması gerekiyor), hala hashbangs görecek eski tarayıcılar için olacak.

Bir geliştirici olmadığım için anlamam çok zaman aldı. : - / Ama şimdi sonuçlardan oldukça memnunum ;-)

jQuery adresi: http://www.asual.com/jquery/address/


1
JQuery pjax eklentisine bir göz atın. github.com/defunkt/jquery-pjax Çok benzer, ancak içeriği sizin için yüklemeye özen gösterecektir, vb. İşte Yirmi Onbir Çocuk teması için onunla ne yaptığımın bir örneği github.com/chrisguitarguy/pjaxy
chrisguitarguy
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.