Langsung ke konten utama

Recent Posts Widget Dengan Label Disertai Title Link

Beberapa hari ini aku sedang mencoba memperbaiki blog dengan melengkapi semua link dengan title. Beberapa sudah beres, terakhir aku mentok di Recent Post Widget yang disertai label yang mampu Anda lihat di sidebar. Ternyata pengaturan untuk memunculkan title pada link-nya ada di dalam arahan javascript. Weleh...tambah pusing hehehehe... tapi jika tidak mencoba kapan bisanya....

Karena aku mencar ilmu otodidak, otomatis tidak tahu bahasanya, hanya menerka-nerka arahan yang mirip-mirip dengan tujuan aku yaitu arahan "title". Seperti biasa, hapus dulu yang ini, gagal, balikin lagi, coba hapus yang lain, gagal lagi, balikin lagi hehehe...akhirnya ketemu juga... Sekarang mampu menampilkan title link dan goresan pena "continue>>" aku hapus, sehingga penampilannya lebih rapi menyerupai widget Popular Post. Tulisan "continue>>" aku hapus alasannya yaitu aku pikir linknya cukup dengan title post saja.

Recent Posts Widget
Recent Post Widget sebelum diperbaiki.

Recent Posts Widget Dengan Label
Recent Post Widget setelah diperbaiki.

Pertama kita bongkar arahan javascriptnya, dan penampakannya akan menyerupai di bawah ini.

/*
 * If you want to copy the code below, please DO NOT delete or modify this note
 *
 * Author  : Copycat91
 * Website : http://infotentangblog.blogspot.com/
 * Description :
 *     Creating a recent post widget classified by labels.
 *
 * Inspired from    : a comment on http://tutorial-jitu.blogspot.com/
 * Thanks a lot for : http://buzz.blogger.com/
 * Created by       : NetBeans IDE 6.5
 */

var num     = jumlah_maksimum_post;
var wsumm   = dengan_ringkasan;
var summlen = jumlah_karakter_ringkasan;

var json; var labels;

function entryHasLabel(entry, label){
    if(label == "*"){return true;} // always true if label is "*"
    var labels = getPostLabels(entry);
    return isExists(labels, label);
}
function getAllLabels(json){
    var labels  = [];
    var entries = json.feed.entry;
    for(var i=0; i<entries.length; i++){
        var entry = entries[i];
        var categories = entry.category;
        if(!categories){continue;}
        for(var j=0; j<categories.length; j++){
            var category = categories[j];
            var label = category.term;
            if(!isExists(labels, label)){labels.push(label);}
        }
    }
    labels.sort();
    return labels;
}
function getContent(entry){
    if(!wsumm){return "";}
    var content = entry.content ? entry.content.$t : entry.summary.$t;
    content = stripHTML(content);
    if(content.length <= summlen){return content;}
    content = content.substr(0, summlen);
    if(content.charAt(content.length-1) != " "){content = content.substr(0, content.lastIndexOf(" ")+1);}
    content += "...";
    return content;
}
function getPermalink(entry){
    var links = entry.link;
    if(!links){return null;}
    for(var i=0; i<links.length; i++){
        var link = links[i];
        if(link.rel == "alternate"){return link.href;}
    }
    return null;
}
function getPostLabels(entry){
    var labels     = [];
    var categories = entry.category;
    if(!categories){return labels;}
    for(var i=0; i<categories.length; i++){
        labels.push(categories[i].term);
    }
    return labels;
}
function getRecentPosts(json, label){
    // this widget is made by copycat91 in his blog
    var posts   = [];
    var entries = json.feed.entry;
    var i = 0;
    while(posts.length < num){
        if(i == entries.length){break;}
        var entry   = entries[i];
        if(entryHasLabel(entry, label)){
            var title   = entry.title.$t;
            var href    = getPermalink(entry);
            var content = getContent(entry);
            var post    = {"title" : title, "href" : href, "content" : content};
            posts.push(post);
        }
        i++;
    }
    return posts;
}
function isExists(array, val){
    for(var i=0; i<array.length; i++){
        if(array[i] == val){return true;}
    }
    return false;
}
function onLoadFeed(json_arg){
    json   = json_arg;
    labels = getAllLabels(json);
    showLabels(labels);
    showLabeledPosts("*");
}
function showLabeledPosts(label){
    // set label == "*" if you want to show all posts
    posts = getRecentPosts(json, label);
    showPosts(posts);
}
function showLabels(labels){
    var s = "";
    s += "<select onchange='showLabeledPosts(this.value)'>";
    s += "<option value='*'/>All Labels";
    for(var i=0; i<labels.length; i++){
        var label = labels[i];
        s += "<option value='"+label+"'/>" + label;
    }
    s += "</select>";
    document.getElementById("pbl_labels").innerHTML = s;
}
function showPosts(posts){
    var s = "";
    if(!wsumm){s += "<ul>";}
    for(var i=0; i<posts.length; i++){
        var post = posts[i];
        if(wsumm){
            s += "<p>";
            s += "<b><a href='"+post.href+"'>" + post.title + "</a></b> <br/>";
            s += post.content;
            s += "<br/><a href='"+post.href+"'> continue&gt;&gt; </a>";
            s += "</p>";
        } else {
            s += "<li><a href='"+post.href+"'>" + post.title + "</a></li>";
        }
    }

    if(!wsumm){s += "</ul>";}
    document.getElementById("pbl_posts").innerHTML = s;
}
function stripHTML(s) {
    var c;
    var intag = false; var newstr = "";
    for(var i=0; i<s.length; i++){
        c = s.charAt(i);
        if(c=="<"){intag = true;}
        else if(c==">"){intag = false;}
        if(c == ">"){newstr += " ";}
        else if(!intag){newstr += c;}
    }
    return newstr;
}

Kita konsentrasi pada arahan yang berwarna biru, di situ terlihat "post.href", "post.title",dan "continue&gt;&gt;". Kode "post.href" untuk link judul postingan, arahan "post.title" untuk title/judul postingan, dan arahan "continue&gt;&gt;" untuk read more (disertai link). Saya potong kodenya alasannya yaitu terlalu panjang, menyerupai di bawah ini:

function showPosts(posts){
    var s = "";
    if(!wsumm){s += "<ul>";}
    for(var i=0; i<posts.length; i++){
        var post = posts[i];
        if(wsumm){
            s += "<p>";
            s += "<b><a href='"+post.href+"'>" + post.title + "</a></b> <br/>";
            s += post.content;
            s += "<br/><a href='"+post.href+"'> continue&gt;&gt; </a>";
            s += "</p>";
        } else {
            s += "<li><a href='"+post.href+"'>" + post.title + "</a></li>";
        }
    }

Perhatikan arahan yang berwarna merah, itu arahan yang harus dirubah dan dihapus. Kode merah pertama dan ketiga harus dirubah, dan arahan merah kedua dihapus. Sehingga penampilannya setelah dirubah akan menyerupai di bawah ini:

function showPosts(posts){
    var s = "";
    if(!wsumm){s += "<ul>";}
    for(var i=0; i<posts.length; i++){
        var post = posts[i];
        if(wsumm){
            s += "<p>";
            s += "<b><a href='"+post.href+"'title='"+post.title+"'>" + post.title + "</a></b> <br/>";
            s += post.content;
            s += "</p>";
        } else {
            s += "<li><a href='"+post.href+"'title='"+post.title+"'>" + post.title + "</a></li>";
        }
    }

Sehingga secara komplit, arahan javascriptnya setelah diperbaiki akan menyerupai di bawah ini.

/*
 * If you want to copy the code below, please DO NOT delete or modify this note
 *
 * Author  : Copycat91
 * Website : http://infotentangblog.blogspot.com/
 * Description :
 *     Creating a recent post widget classified by labels.
 *
 * Inspired from    : a comment on http://tutorial-jitu.blogspot.com/
 * Thanks a lot for : http://buzz.blogger.com/
 * Created by       : NetBeans IDE 6.5
 */

var num     = jumlah_maksimum_post;
var wsumm   = dengan_ringkasan;
var summlen = jumlah_karakter_ringkasan;

var json; var labels;

function entryHasLabel(entry, label){
    if(label == "*"){return true;} // always true if label is "*"
    var labels = getPostLabels(entry);
    return isExists(labels, label);
}
function getAllLabels(json){
    var labels  = [];
    var entries = json.feed.entry;
    for(var i=0; i<entries.length; i++){
        var entry = entries[i];
        var categories = entry.category;
        if(!categories){continue;}
        for(var j=0; j<categories.length; j++){
            var category = categories[j];
            var label = category.term;
            if(!isExists(labels, label)){labels.push(label);}
        }
    }
    labels.sort();
    return labels;
}
function getContent(entry){
    if(!wsumm){return "";}
    var content = entry.content ? entry.content.$t : entry.summary.$t;
    content = stripHTML(content);
    if(content.length <= summlen){return content;}
    content = content.substr(0, summlen);
    if(content.charAt(content.length-1) != " "){content = content.substr(0, content.lastIndexOf(" ")+1);}
    content += "...";
    return content;
}
function getPermalink(entry){
    var links = entry.link;
    if(!links){return null;}
    for(var i=0; i<links.length; i++){
        var link = links[i];
        if(link.rel == "alternate"){return link.href;}
    }
    return null;
}
function getPostLabels(entry){
    var labels     = [];
    var categories = entry.category;
    if(!categories){return labels;}
    for(var i=0; i<categories.length; i++){
        labels.push(categories[i].term);
    }
    return labels;
}
function getRecentPosts(json, label){
    // this widget is made by copycat91 in his blog
    var posts   = [];
    var entries = json.feed.entry;
    var i = 0;
    while(posts.length < num){
        if(i == entries.length){break;}
        var entry   = entries[i];
        if(entryHasLabel(entry, label)){
            var title   = entry.title.$t;
            var href    = getPermalink(entry);
            var content = getContent(entry);
            var post    = {"title" : title, "href" : href, "content" : content};
            posts.push(post);
        }
        i++;
    }
    return posts;
}
function isExists(array, val){
    for(var i=0; i<array.length; i++){
        if(array[i] == val){return true;}
    }
    return false;
}
function onLoadFeed(json_arg){
    json   = json_arg;
    labels = getAllLabels(json);
    showLabels(labels);
    showLabeledPosts("*");
}
function showLabeledPosts(label){
    // set label == "*" if you want to show all posts
    posts = getRecentPosts(json, label);
    showPosts(posts);
}
function showLabels(labels){
    var s = "";
    s += "<select onchange='showLabeledPosts(this.value)'>";
    s += "<option value='*'/>All Labels";
    for(var i=0; i<labels.length; i++){
        var label = labels[i];
        s += "<option value='"+label+"'/>" + label;
    }
    s += "</select>";
    document.getElementById("pbl_labels").innerHTML = s;
}
function showPosts(posts){
    var s = "";
    if(!wsumm){s += "<ul>";}
    for(var i=0; i<posts.length; i++){
        var post = posts[i];
        if(wsumm){
            s += "<p>";
            s += "<b><a href='"+post.href+"'title='"+post.title+"'>" + post.title + "</a></b> <br/>";
            s += post.content;
            s += "</p>";
        } else {
            s += "<li><a href='"+post.href+"'title='"+post.title+"'>" + post.title + "</a></li>";
        }
    }
    if(!wsumm){s += "</ul>";}
    document.getElementById("pbl_posts").innerHTML = s;
}
function stripHTML(s) {
    var c;
    var intag = false; var newstr = "";
    for(var i=0; i<s.length; i++){
        c = s.charAt(i);
        if(c=="<"){intag = true;}
        else if(c==">"){intag = false;}
        if(c == ">"){newstr += " ";}
        else if(!intag){newstr += c;}
    }
    return newstr;
}

Untuk penerapannya ke widget, tambahkan arahan <script type="text/javascript"> di atasnya dan </script> di bawahnya.

Untuk arahan Recent Posts Widget Dengan Label selengkapnya silahkan buka postingan sebelumnya DI SINI.

Komentar

Postingan populer dari blog ini

Teknik Mengolah Kata Kunci, Cara Sederhana Riset Keyword Tanpa Tools

Pada postingan kali ini saya mau bagikan lagi sebuah teknik mengolah kata kunci. Agar isi dalam artikel ini praktis dipahami jadi saya menggunakan sedikit ulasan bergambar semoga nantinya praktis dipahami. Teknik ini yaitu salah satu teknik seo yang sering digunakan oleh para internet marketing untuk mampu menggaet calon pelanggannya secara tertarget. Dan percaya saja bahwa ini kali pertama anda menemukan satu dari sekian banyaknya teknik seo yang ada yang mampu membantu anda menerima visitor yang banyak. Kabar baiknya, walaupun ini yaitu seni administrasi seo marketing tapi mampu juga diaplikasikan untuk jenis website artikel. Bahkan hal ini akan sangat bagus.. Ribuan pengunjung organik google dalam 1 bulan bukan duduk duduk masalah lagi untuk mampu didapatkan secara mudah. Oleh alasannya yaitu itu simak baik-baik, baca poin per poin semoga wawasan anda mampu ditambahkan secara menyeluruh. Berikut yang akan kita pelajari... Survey Google Auto Complete Google Sugge...

Cara Upload File, HTML, CSS, Javascript Di Google Drive

D ari info beberapa sumber yang saya baca, bahwa Google Code ada kemungkinan tahun depan sudah tidak mampu dipakai alasannya yakni Google akan menutupnya. Nah sebagai penggantinya Google telah menyiapkan daerah gres untuk menghosting file menyerupai file dokumen, HTML, CSS, maupun JavaScript yaitu Google Drive. Untuk itu kini saya mulai mengalihkan file JavaScript dan HTML blog Kompi Ajaib dari Google Code ke Google Drive dan ternyata sangat mudah dan script berjalan sempurna. Sekarang saya akan menguraikan cara upload file HTML, CSS, atau Javascript di Google Drive. Bagi yang tertarik untuk mencobanya silahkan ikuti langkah-langkahnya di bawah ini: 1. Silahkan masuk ke Google Drive dengan link berikut https://drive.google.com/ dan login dengan akun Google Anda. 2. Kemudian klik tanda upload untuk mulai mengupload file dari komputer Anda, menyerupai pada gambar di bawah ini. 3. Silahkan pilih file yang ingin Anda upload kemudian akan muncul kotak upload, bi...

Cara Mengganti Foto Profil (Avatar) Mobile Legends Dengan Foto Sendiri

Cara mengganti foto profil atau avatas di Mobile Legends - Pada postingan sebelumnya saya mengatakan tips mengenai game Mobile Legends Bang Bang, ialah cara berganti akun Mobile Legends dengan Facebook . Nah pada kesempatan kali ini saya kembali akan membagikan tips mengenai game Mobile Legends, tipsnya ialah cara mengganti avatas atau foto profil di Mobile Legends. Tutorial ini saya buat khusus bagi Anda yang belum tahu bagaimana cara mengganti avatar di Mobile Legends yang sering dilakukan oleh player lain. Pada dasarnya dikala kita gres membuat sebuah akun Mobile Legends, foto prrofil atau avatar yang digunakan ialah default dari Mobile Legends yang bergambar berbagai huruf pendekar Mobile Legends. Avatar tersebut bersifat random, tetapi mampu juga kita pilih dan atur sendiri. Tapi, jika kita menautkan akun Mobile Legends tersebut dengan Akun Facebook , maka otomatis avatar Mobile Legends juga akan berganti dengan Foto Profil Facebook. Lalu bagaimana cara mengganti avatar Mobil...