Created (c) by Princexells Seyka (Princelling Saki)

Optimalisasi Konten dalam Blog

Sekedar kilas balik bahwa postingan ini tetap mengacu pada panduan umum Search Engine Optimization (SEO) & merupakan kelanjutan dari beberapa posting sebelumnya tentang judul dan deskripsi blog serta memperbaiki struktur blog. Hal ini kami lakukan agar informasi yang pengguna dapatkan tidak sepotong-sepotong, melainkan satu kesatuan posting yang tidak terpisahkan satu dengan lain.

Konten secara umum merupakan informasi yang tersedia melalui media dalam berbagai format. Apabila kita kaitkan dengan sebuah blog, maka ia meliputi semua isi yang terkandung dalam struktur markah pada suatu blog, baik dari kepala hingga kaki. Sedangkan penyempitan makna konten itu sendiri lebih tertuju pada aktivitas blogging, yakni posting. Hal itu tidaklah menjadi keliru sebab posting merupakan bagian dari isi konten utama dalam sebuah blog. Namun pada uraian ini, kita akan membicarakan konten dalam pengertian yang menyeluruh & tidak terbatas pada posting saja. Bagaimana konten yang dapat dikategorikan berteman dengan SEO (Search Engine Optimization)? Penting ditekankan bahwa konten Anda untuk pengguna, sedangkan faktor lain merupakan dampak yang dihasilkan.

Kualitas & Layanan Konten

Apa yang terpikirkan dari sub judul di atas? Ketika sebuah blog memiliki karakter unik, kesamaan topik dari awal sampai akhir maka ia akan mendapat pengakuan dari pembacanya. Selanjutnya tidak jarang akan menjadikan rekomendasi, apalagi jika posting yang diterbitkan merupakan sebuah informasi segar & menarik. Ilustrarsi singkat, pengguna ingin membaca tentang tips blogging. Ketika ia menemukan sebuah blog yang menyajikan informasi tersebut, ia akan mulai memindai apa saja isi yang terkandung di dalamnya, mungkin judul posting lain yang terdapat dalam widget, tata bahasa, markah, dan sebagainya. Disaat mata & pikiran pengguna telah menerima bentuk tampilan pada layar peramban, pada saat itu pula mereka mulai membacanya. Apabila antar posting memiliki keterkaitan dengan topik yang dibacanya, bukan mustahil pengguna akan ‘mengacak-acak’ seluruh konten serta akan menanti pembaharuan di blog tersebut. Dan ini boleh kita namakan sebagai kata kunci tertarget.

Kemudian perhatikan pula tata bahasa yang digunakan, oleh karena tidak semua pengguna berasal dari daerah atau negara kita, kecuali jika memang blog ditarget untuk pembaca tertentu. Dan bukan itu saja, pemahaman antar pengguna satu dengan lain mungkin akan berbeda pula. Coba teliti tentang pemahaman “markah” & “kode”. Satu pengguna mungkin akan mengetikkan “markah HTML”, sedangkan pengguna lain mengetik “kode HTML”. Meskipun informasi yang dimaksudkan sama, tetapi hasil yang didapatkan akan berbeda dalam mesin penelusur. Akan lebih baik jika kita memadukan frase tersebut, sehingga mengantisipasi perbedaan pemahaman pengguna. Hal ini integral dengan pemanfaatan ungkapan bahasa yang baik & benar dalam isi konten. Siapa yang menduga — walaupun ditarget untuk pembaca tertentu — pengguna lain dari berbagai daerah atau negara akan mengunjungi blog kita, sehingga merupakan upaya logis untuk mendukung sebuah konten agar dapat diterjemahkan dengan benar (hampir benar). Intinya maksud yang disampaikan oleh author serupa/sama dengan penerimaan yang didapat oleh pengguna.

Konten yang original, segar, & menarik tanpa memperhatikan tanda-tanda di dalamnya mungkin akan menimbulkan kesalah-pahaman bagi pembacanya. Untuk mengurangi hal itu kita dapat belajar menerapkan kode & markah yang semantik. Saya tidak menjelaskan detail tentang semantik, namun jika ingin mempelajari lebih lanjut, Anda dapat membaca pada tautan berikut:

Bagaimana menerapkan semantik dalam konten blog? Mungkin kita telah mengenal CSS dan struktur HTML, tetapi dalam posting jarang kita perhatikan. Sedikit tips untuk penerapan semantik dalam posting, saya biasa merangkum beberapa markah umum sebelum menulis dan menggunakan metode post editor “HTML” (bukan “Compose”).

<p></p>
<span class="amp">&amp;</span>
<a href=""></a>
<em></em>
<strong></strong>
&ldquo; &rdquo;
&lsquo; &rsquo;
&#45;
&ndash;
&mdash;
&trade;
<pre><code></code></pre>
<code></code>
<abbr title=""></abbr>
<span style=""></span>
<blockquote><p></p></blockquote>
<q></q>
<img class="" src="" alt="" width="" height="" style=""/>
<a href="" title=""><img class="" src="" alt="" width="" height="" style=""/></a>
<ul><li></li><li></li></ul>
<ol><li></li><li></li></ol>
<cite><a href="" title=""></a></cite>
<h3></h3>
<h4></h4>
<h5></h5>
<h6></h6>
<figure><img src="" alt="" width="" height=""/><figcaption></figcaption></figure>
<table><caption></caption><tr><th></th><th></th></tr><tr><td></td><td></td></tr></table>

Menulis Teks Jangkar yang lebih Baik

Teks jangkar tidak selalu berhubungan dengan kata kunci (keywords), ia merupakan sekumpulan teks atau kata yang mendeskripsikan sesuatu sehingga menjadi jelas seperti URL (Uniform Resource Locator), singkatan, gambar (detail pada sub judul “Optimalisasi Penggunaan Gambar”), dan sebagainya.

Demi sebuah kata kunci, saya rasa tidak perlu selalu ditunjukkan dengan memperinci kata kunci dalam berbagai gaya (style) seperti teks tebal, miring, pewarnaan dan lain-lain. Bahkan tidak jarang ditemui sejumlah kata kunci yang dicoret atau menggunakan garis bawah. Apa tujuannya? Agar perayap akan tersendat ketika melakukan pengindeksan pada kata kunci tersebut. Lalu bagaimana dari sisi pengguna? Apakah akan terasa nyaman membaca jika sebuah konten terlalu banyak kata kunci yang dihiasi dengan berbagai gaya atau bahkan tidak jarang menimbulkan kesalah-pahaman? Telah dijelaskan pada sub judul sebelumnya bahwa berusaha membuat sebuah konten untuk semantik akan mengantisipasi kesalah-pahaman, begitu pula dengan memberikan tanda-tanda tertentu pada suatu teks (tanda baca). Isi konten yang baik adalah yang mudah dimengerti & dipahami oleh pengguna, bukan sebaliknya. Apabila tidak, maka resiko pentalan akan semakin tinggi.

Teks jangkar pada tautan pun semestinya mendeskripsikan apa yang ia tautkan, sehingga tautan yang kita masukkan benar-benar berkualitas. Hindari penulisan teks jangkar pada tautan secara generik yang mengandung arti kurang jelas seperti halaman ini, artikel ini, klik di sini, dan sejenisnya. Dari sisi pengguna, tautan seharusnya mudah dibedakan dengan teks biasa, kerena nilai dari sebuah konten akan memudar jika pengguna tidak dapat membedakan itu atau pengelola mengkondisikan agar tautan tidak sengaja diklik oleh pengguna. Bahkan mungkin tanpa disadari, kita telah menciptakan tautan yang sebenarnya tidak perlu dimasukkan (dipaksa untuk bertaut) dalam sebuah konten.

Optimalisasi Penggunaan Gambar

Saya rasa untuk optimalisasi penggunaan gambar, para blogger pasti telah mengetahui pentingnya atribut alt. Atribut itu berfungsi sebagai ‘pembaca gambar’. Tinggal upaya kita untuk membuatnya lebih deskriptif & lebih bermakna bagi pembacanya. Jangan pula kita memasukkan deskripsi yang terlalu panjang atau hanya mengeksplorasi kata kunci dalam gambar. Gambar merupakan salah satu alat bantu untuk memberikan kemudahan bagi pengguna agar lebih memahami isi konten. Tetapi hal itu bukan berarti bahwa kita selalu menggunakan tautan gambar untuk navigasi di blog yang kita kelola.

Pergunakan Tag Heading dengan Tepat

Tag heading dimanfaatkan untuk menyajikan struktur pada halaman kepada pengguna, dimana ia tersusun mulai <h1> sampai dengan <h6>. Karena tag heading biasanya membuat teks yang terkandung di dalamnya lebih besar dari teks biasa pada suatu halaman, maka ini adalah isyarat visual kepada pengguna bahwa teks tersebut penting & bisa membantu mereka memahami sesuatu tentang jenis konten di bawah teks judul. Beberapa ukuran heading yang dapat kita digunakan dalam rangka menciptakan struktur hirarkis untuk konten blog, sehingga memudahkan pengguna untuk menavigasi isi dari konten tersebut.

Patut dijadikan catatan bahwa tidak semua teks dapat dikategorikan sebagai tag heading, adakalanya teks tebal atau miring lebih bermakna bagi teks tersebut. Kemudian jika sebuah teks kurang/tidak membantu dalam menentukan struktur halaman, sebaiknya tidak terlalu memaksakan memberi ‘label’ tag heading. Salah satu cara untuk menentukan sebuah struktur halaman dalam blog adalah menulis & berpikir secara outline. Yah, mungkin pengertian sederhananya adalah metode membuat kerangka karangan.

Judul sebuah posting seharusnya singkat dan deskriptif. Bukankah judul yang panjang lebih baik & menimbulkan daya tarik tersendiri? Mungkin dalam sedikit kasus, penekanan teks tertentu yang ditambahkan dapat berguna bagi pembaca. Tetapi jika judul posting yang singkat telah mampu mendeskripsikan isi yang terkandung dalam posting, mengapa kita berpikir untuk membuatnya menjadi panjang.

Simpulan

Berdasarkan dari uraian di atas maka dapat kita ambil generalisasi dengan detail sebagai berikut:

  • Konten seharusnya unik, nyaman dibaca, & mudah dipahami oleh pengguna untuk mengantisipasi atau mengurangi celah kesalah-pahaman.
  • Ketika kita telah memilih sebuah topik, tetapkan pengorganisasian isi konten agar selalu terkait dengan topik tersebut. Dan jangan lupa memprioritaskan untuk kemudahan pengguna, bukan untuk indeks mesin penelusur.
  • Teks jangkar yang singkat, tepat, dan deskriptif akan memberikan pengalaman yang positif bagi pengguna serta indeks yang baik bagi mesin penelusur untuk menyampaikan isi terkait. Begitu pula apabila kita dapat memberikan pembeda yang jelas antara teks biasa & tautan teks, sehingga hal-hal yang kurang/tidak diinginkan dapat diminimalisasi.
  • Lengkapi dengan atribut alt, apabila menggunakan media gambar sebagai tautan dan/atau isi konten dalam tubuh HTML (Hypertext Markup Language). Ini tidak termasuk gambar yang dikonfigurasi sebagai nilai dari suatu properti pada CSS (Cascading Style Sheets).
  • Pergunakan tag heading secara tepat untuk menekankan bahwa teks adalah benar-benar penting dan merepresentasikan struktur halaman.

“Menulis” ternyata tidak sekedar “menulis”, tetapi memiliki kedalaman makna yang terkandung di dalamnya. Standar merupakan impian bagi para blogger — termasuk saya — dan boleh jadi SEO turut sebagai pengiring. Tetapi hal tersebut mungkin tidak berarti tanpa memberikan tanda-tanda tertentu (semantik) dalam mengoptimalkan konten pada blog yang kita kelola dan yang terpenting adalah bagaimana informasi disampaikan dengan baik serta terstruktur, sehingga dapat diterima secara positif oleh pengguna.

Description: Optimalisasi Konten dalam Blog Rating: 5.0 Reviewer: Unknown ItemReviewed: Optimalisasi Konten dalam Blog

Penyusunan Dasar Template Blogger.com

Posting ini akan menuturkan tentang beberapa bagian dalam struktur pengkodean dasar template Blogger™, dimana obyek template adalah template Blogger™ yang diakses melalui “Edit HTML”, sehingga opsi Customize dapat diabaikan. Mungkin diterjemahkan dalam bahasa sederhana artinya apabila ingin merubah sesuatu berkenaan struktur pengkodean, maka dilakukan secara manual. Bentuk sederhana HTML pada sebuah situs web atau blog adalah sebagai berikut.

<html>
<head>
<title>Format Sederhana HTML</title>
</head>
<body>
</body>
</html>

Ketika kode di atas diaplikasikan pada peramban, maka akan terlihat layar kosong & tab peramban akan menampilkan title. Lebih lanjut, tambahkan baris teks dalam body, contoh: Aku adalah tubuh HTML. Layar peramban akan menambahkan sebuah baris teks sesuai dengan apa yang kita tulis di antara <body></body>.

Deklarasi xml (eXtensible Markup Language)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html>
<html xmlns='http://www.w3.org/1999/xhtml' xmlns:b='http://www.google.com/2005/gml/b' xmlns:data='http://www.google.com/2005/gml/data' xmlns:expr='http://www.google.com/2005/gml/expr'>

Ketika kita ingin memasukkan daerah geografi atau bahasa yang didukung oleh konten dalam tubuh HTML — tidak perlu menambahkan meta — cukup sisipkan tag lang, contoh: lang='id', lang='en', lang='en-us', lang='fr', dan sebagainya.

<html lang='id' xmlns='http://www.w3.org/1999/xhtml' xmlns:b='http://www.google.com/2005/gml/b' xmlns:data='http://www.google.com/2005/gml/data' xmlns:expr='http://www.google.com/2005/gml/expr'>

Elemen Head

Head HTML berisi sejumlah markah yang meliputi script, instruksi kepada peramban untuk menemukan stylesheets, memberikan informasi meta, dan lain-lain.

<head>
<meta content='IE=EmulateIE7' http-equiv='X-UA-Compatible'/>
<b:if cond='data:blog.isMobile'>
<meta content='width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0' name='viewport'/>
<b:else/>
<meta content='width=1100' name='viewport'/>
</b:if>
<b:include data='blog' name='all-head-content'/>
<title>
<b:if cond='data:blog.homepageUrl == data:blog.url'>
<data:blog.title/>
<b:else/>
<data:blog.pageName/> | <data:blog.title/>
</b:if>
</title>
<meta content='' name=''/>
<link href='' rel='' type=''/>
<script src='' type=''/>
<b:skin><![CDATA[ /* CSS Anda di sini */
body {
background: #fff;
color: #000;
font: .875em/1.7143em Georgia, Times, "Times New Roman", serif;
text-align: left;
word-spacing: .075em;
}
… dan seterusnya …
]]></b:skin>
</head>

Elemen Body

Body HTML merupakan tubuh dari HTML (HyperText Markup Language) yang akan menampilkan bentuk pengkodean pada layar peramban. Sedangkan beberapa elemen yang melingkupinya dapat kita uraikan sebagai berikut.

<body expr:class='"loading" + data:blog.mobileClass'>

Navbar

  <b:section class='navbar' id='navbar' maxwidgets='1' showaddelement='no'>
<b:widget id='Navbar1' locked='true' title='Navbar' type='Navbar'/>
</b:section>

Header

  <b:section class='header' id='header' maxwidgets='1' showaddelement='no'>
<b:widget id='Header1' locked='true' title='Title Blog (Header)' type='Header'/>
</b:section>

Main (Posting Blog)

  <b:section class='main' id='main' showaddelement='no'>
<b:widget id='Blog1' locked='false' title='Blog Posts' type='Blog'/>
</b:section>

Sidebar

<b:section class='sidebar' id='sidebar' preferred='yes'/>

Footer

  <b:section class='footer' id='footer' showaddelement='no'>
<b:widget id='Attribution1' locked='false' title='' type='Attribution'/>
</b:section>

Dari beberapa markah elemen di atas, biasanya untuk menampilkan halaman posting atau halaman statis pada blog, minimal harus ada elemen widget main (posting blog). Sedangkan yang lain dapat dikustomisasi manual, seperti header dapat saja berisi title serta tagline, fungsi fitur navbar dapat kita matikan, dan lain-lain.

Simpulan


Dengan beberapa ringkasan sederhana di atas, mungkin kita telah dapat menggambarkan bagaimana sebuah blog pada Blogger™ dibentuk. Tinggal menambahkan beberapa selector (id dan/atau class) atau elemen-elemen dalam HTML5 (header, article, aside, footer, dan sebagainya) untuk mengapit elemen widget tersebut serta konfigurasi CSS (Cascading Style Sheets) yang dibutuhkan. Sedangkan isi konten kita upayakan agar tetap memberikan tanda, sehingga lebih bermakna bagi pembacanya.

Description: Penyusunan Dasar Template Blogger.com Rating: 5.0 Reviewer: Unknown ItemReviewed: Penyusunan Dasar Template Blogger.com

Formulir Kontak Manual

Formulir Kontak

Para blogger tentu sudah tidak asing lagi dengan yang namanya “Formulir Kontak”. Formulir kontak berguna sebagai media interaksi pengunjung agar terhubung langsung ke email pengelola blog. Formulir ini berbeda dengan meninggalkan komentar & memiliki skala yang lebih luas, contoh: memberikan saran berkenaan dengan blog atau permintaan posting, bertanya tentang suatu topik posting ketika komentar pada posting tersebut telah ditutup, dan sebagainya

Banyak layanan pihak ketiga yang menyediakan fasilitas ini, antara lain: EmailMeForm, Kontactr, Foxyform & FreeContactForm. Nah, sekarang bagaimana jika kita ingin membuat formulir kontak sendiri? Salah satu alternatifnya adalah dengan menggunakan PHP (Hypertext Preprocessor), seperti yang akan Optimasi Blog deskripsikan berikut.

Web Hosting

Langkah awal, kita harus memiliki hosting. Mungkin salah satu situs web yang menyediakannya secara gratis adalah 000webhost.com (jika tidak berkeberatan, taut tersebut merupakan afiliasi Optimasi Blog di 000webhost) atau dapat menggunakan hosting lain. Kemudian buat satu subdomain gratis yang disediakan oleh layanan tersebut. Silakan buka akun email sesuai dengan email yang didaftarkan pada 000webhost untuk melihat konfirmasi akun. Jika sudah, kembali ke 000webhost & beranjak ke Cpanel. Klik icon “File Manager” dan masukkan kata sandi sesuai dengan waktu pendaftaran atau ganti kata sandi berbeda (baru) dengan melakukan akses ke “View FTP Detail”. Sekarang kita berada dalam File Manager, buka berkas public_html. Hapus file “default.php”, kemudian buat file baru bernama “index.php” yang berisi Silence is golden.

<?php
// Silence is golden.
?>
File ManagerMembuat File Baru

Nah, sekarang subdomain gratis telah dapat kita pergunakan untuk menyimpan berbagai berkas. Selanjutnya masih di dalam berkas public_html, kita membuat file PHP yang nantinya akan dimunculkan sebagai formulir isian kontak.

<?php
if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) {
ob_start("ob_gzhandler");
}
else {
ob_start();
}
?>

<?php error_reporting( 0 );?>
<?php
//Memperbaiki kesalahan pemberitahuan pada debug
$nameError = '';
$emailError = '';
$commentError = '';
//Mengecek apakah isi form sudah dikirim
if(isset($_POST['submitted'])) {
//Mengecek apakah chaptcha rahasia terisi
if(trim($_POST['checking']) !== '') {
$captchaError = true;
} else {
//Mengecek apakah kolom nama sudah diisi
if(trim($_POST['contactName']) === '') {
$nameError = 'Silakan isi nama Anda terlebih dahulu'; //Pesan error jika kolom nama kosong
$hasError = true;
} else {
$name = trim($_POST['contactName']);
}
//Mengecek apakah kolom alamat email sudah diisi dan valid
if(trim($_POST['email']) === '') {
$emailError = 'Anda lupa untuk memasukkan alamat email';//Pesan error jika kolom email kosong
$hasError = true;
} else if (!preg_match("/^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}$/i", trim($_POST['email']))) {
$emailError = 'Alamat email yang Anda masukkan tidak valid';//Pesan error jika alamat email tidak valid
$hasError = true;
} else {
$email = trim($_POST['email']);
}
//Mengecek apakah kolom isi pesan sudah disi
if(trim($_POST['comments']) === '') {
$commentError = 'Apakah Anda ingin mengirim pesan kosong? Silakan isi pesan Anda';//Pesan error jika kolom pesan masih kosong
$hasError = true;
} else {
if(function_exists('stripslashes')) {
$comments = stripslashes(trim($_POST['comments']));
} else {
$comments = trim($_POST['comments']);
}
}
//Mengirimkan pesan, jika semua kolom telah diisi dengan valid
if(!isset($hasError)) {
$emailTo = 'email@example.com';//Alamat email tujuan, ganti dengan email anda
$subject = 'Pesan via formulir kontak dari '.$name;//Judul pesan yang masuk ke email kita dari form kontak
$sendCopy = trim($_POST['sendCopy']);//Opsi untuk mengirimkan salinan pesan kepada pengirim
$body = "Nama: $name \n\nEmail: $email \n\nIsi Pesan: $comments";//Isi Email
$headers = 'From: Optimasi Blog <'.$emailTo.'>' . "\r\n" . 'Reply-To: ' . $email;//Header email
mail($emailTo, $subject, $body, $headers);
if($sendCopy == true) {
$subject = 'Pesan Anda dari nama blog Anda';//Judul pesan salinan kepada pengirim apabila checkbox kirim salinan dicentang
$headers = 'From: admin blog <email@example.com>';//Header email pesan salinan, silakan diedit nama dan alamat emailnya
mail($email, $subject, $body, $headers);
}
$emailSent = true;
}
}
} ?>
<!DOCTYPE html>
<html>
<head>
<title>Formulir Kontak</title>
<link rel="stylesheet" href="/css/style.css.php"/>
</head>
<body>
<?php if(isset($emailSent) && $emailSent == true) { ?>
<h3>Terima kasih, <?=$name;?></h3>
<p>Pesan Anda telah dikirim, kami akan segera membalas secepat mungkin.</p>
<?php } else { ?>
<?php if(isset($hasError) || isset($captchaError)) { ?>
<p class="error">Maaf, tampaknya ada masalah dalam pengiriman pesan Anda, silakan coba lagi :)<p>
<?php } ?>
<form action="contact-form.php" id="contactForm" method="post">
<p class="contact-form-author">
<label for="contactName">Nama <small>*</small></label>
<input type="text" name="contactName" id="contactName" value="<?php if(isset($_POST['contactName'])) echo $_POST['contactName'];?>" size="30" tabindex="1" class="requiredField" />
<?php if($nameError != '') { ?>
<span class="error"><?=$nameError;?></span>
<?php } ?>
</p>
<p class="contact-form-email">
<label for="email">Email <small>*</small></label>
<input type="text" name="email" id="email" value="<?php if(isset($_POST['email'])) echo $_POST['email'];?>" size="30" tabindex="2" class="requiredField email" />
<?php if($emailError != '') { ?>
<span class="error"><?=$emailError;?></span>
<?php } ?>
</p>
<p class="contact-form-message">
<label for="commentsText">Pesan <small>*</small></label>
<textarea name="comments" id="commentsText" cols="45" rows="8" tabindex="3" class="requiredField"><?php if(isset($_POST['comments'])) { if(function_exists('stripslashes')) { echo stripslashes($_POST['comments']); } else { echo $_POST['comments']; } } ?></textarea>
<?php if($commentError != '') { ?>
<span class="error"><?=$commentError;?></span>
<?php } ?>
</p>
<p class="inline">
<input type="checkbox" name="sendCopy" id="sendCopy" tabindex="4" value="true"<?php if(isset($_POST['sendCopy']) && $_POST['sendCopy'] == true) echo ' checked="checked"'; ?> /><label for="sendCopy">Kirim salinan pesan ini ke email Anda.</label>
</p>
<p class="screenReader">
<label for="checking" class="screenReader">Biarkan seperti ini!</label><input type="text" name="checking" id="checking" size="10" tabindex="5" class="screenReader" value="<?php if(isset($_POST['checking'])) echo $_POST['checking'];?>" />
</p><!--Chaptca rahasia-->
<p class="contact-form-submitted">
<input name="submitted" type="submit" id="submitted" tabindex="6" value="Kirim Pesan" />
</p>
</form><!-- #contactForm -->
<?php } ?>
</body>
</html>

Untuk kode yang berwarna merah merupakan kompres file dengan menggunakan gzip & warna biru diisi dengan email serta nama blog, sesuaikan dengan keterangan yang diberi warna hijau. Beri nama file di atas menjadi “contact-form.php” (tanpa tanda petik). Adapun <link rel="stylesheet" href="/css/style.css.php"/> akan kita buat terpisah dari file induk (contact-form.php)

Penamaan File

Buat direktori baru dengan nama “css” (tanpa tanda petik). Masuk ke dalam direktori css, kemudian tambahkan file baru dengan nama “style.css” (tanpa tanda petik) yang isinya lebih kurang sebagai berikut.

<?php header("Content-type: text/css"); ?>
body,
input,
textarea {
color: #444;
font: 93.75%/1.6em Georgia, serif;
}
body {
background: #fff;
margin: 0;
padding: 0;
text-align: left;
width: 100%;
}
body:before, body:after {
content: "";
display: table;
}
body:after {
clear: both;
}
p {
font-size: 1em;
line-height: 1.6em;
margin-bottom: .8em;
margin-top: 0;
}
small,
.error {
color: #f00;
font-size: .8em;
line-height: 2em;
}
h3 {
font-size: 1.3333em;
line-height: 1.2em;
margin-bottom: .6em;
}
input,
textarea {
font-size: 1em; /* Corrects font size not being inherited in all browsers */
margin: 0; /* Addresses margins set differently in IE6/7, F3/4, S5, Chrome */
vertical-align: baseline; /* Improves appearance and consistency in all browsers */
*vertical-align: middle; /* Improves appearance and consistency in all browsers */
}
input {
line-height: normal; /* Addresses FF3/4 setting line-height using !important in the UA stylesheet */
*overflow: visible; /* Corrects inner spacing displayed oddly in IE6/7 */
}
input::-moz-focus-inner { /* Corrects inner padding and border displayed oddly in FF3/4 www.sitepen.com/blog/2008/05/14/the-devils-in-the-details-fixing-dojos-toolbar-buttons/ */
border: 0;
padding: 0;
}
input[type=text],
input[type=email],
textarea {
color: #666;
border: 1px solid #ddd;
border-radius: 3px;
}
input[type=text]:focus,
input[type=email]:focus,
textarea:focus {
color: #111;
}
input[type=text],
input[type=email] {
padding: 6px;
width: 50%;
}
input[type=text]#checking {
width: 10%;
}
input[type="checkbox"] {
box-sizing: border-box; /* Addresses box sizing set to content-box in IE8/9 */
margin-right: 6px;
padding: 0; /* Addresses excess padding in IE8/9 */
}
label.screenReader {
margin-right: 6px;
}
input[type="submit"] {
border: 1px solid #ddd;
border-color: #ccc #ccc #bbb #ccc;
border-radius: 3px;
background: #fafafa; /* Old browsers */
background: -moz-linear-gradient(top, #fafafa 60%, #e6e6e6 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(60%,#fafafa), color-stop(100%,#e6e6e6)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #fafafa 60%,#e6e6e6 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #fafafa 60%,#e6e6e6 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #fafafa 60%,#e6e6e6 100%); /* IE10+ */
background: linear-gradient(top, #fafafa 60%,#e6e6e6 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fafafa', endColorstr='#e6e6e6',GradientType=0 ); /* IE6-9 */
box-shadow: inset 0 2px 1px #fff;
color: rgba(0,0,0,.8);
cursor: pointer; /* Improves usability and consistency of cursor style between image-type 'input' and others */
-webkit-appearance: button; /* Corrects inability to style clickable 'input' types in iOS */
font: 1em/1.6em Georgia, serif;
padding: .4em .8em;
text-shadow: 0 1px 0 rgba(255,255,255,.5);
}
input[type="submit"]:hover {
background: #f5f5f5; /* Old browsers */
background: -moz-linear-gradient(top, #f5f5f5 60%, #dcdcdc 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(60%,#f5f5f5), color-stop(100%,#dcdcdc)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #f5f5f5 60%,#dcdcdc 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #f5f5f5 60%,#dcdcdc 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #f5f5f5 60%,#dcdcdc 100%); /* IE10+ */
background: linear-gradient(top, #f5f5f5 60%,#dcdcdc 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f5f5f5', endColorstr='#dcdcdc',GradientType=0 ); /* IE6-9 */
border-color: #bbb #bbb #aaa #bbb;
}
input[type="submit"]:focus,
input[type="submit"]:active {
border-color: #aaa #bbb #bbb #bbb;
box-shadow: inset 0 2px 3px rgba(0,0,0,.15);
box-shadow: inset 0 2px 2px rgba(0,0,0,.15);
}
textarea,
.contact-form-author input[type="text"],
.contact-form-email input[type="text"] {
display: block;
}
textarea {
overflow: auto; /* Removes default vertical scrollbar in IE6/7/8/9 */
padding: 6px 0 6px 6px;
resize: vertical;
vertical-align: top; /* Improves readability and alignment in all browsers */
width: 95%;
}
@media screen and (max-width:800px) {
body {
font-size: .8667em;
}
}
@media screen and (max-width:320px) {
body {
font-size: .8em;
}
}
@media screen and (max-width:240px) {
body {
font-size: .7333em;
}
}

Silakan Anda kustomisasi pengkodean CSS (Cascading Style Sheets) di atas, sehingga sesuai dengan keinginan dan/atau template Anda. Jangan lupa membuat satu file baru (dalam folder css) lagi untuk mengompresi CSS tersebut & beri nama “style.css.php” (tanpa tanda petik).

<?php
ob_start("ob_gzhandler");
ob_start("compress");
// required header info and character set
header("Content-type: text/css; charset: UTF-8");
// duration of cached content (Cache for 1 weeks)
$offset = 60 * 60 * 24 * 7;
$ts = gmdate("D, d M Y H:i:s", time() + $offset) . " GMT";
// cache control to process
header ('Cache-Control: max-age=' . $offset . ', must-revalidate');
//set etag-header
header('ETag: "'.md5($ts).'"');
// expiration header format
$ExpStr = "Expires: " . gmdate("D, d M Y H:i:s",time() + $offset) . " GMT";
// send cache expiration header to browser
header($ExpStr);
// initialize compress function for white-space removal
ob_start("compress");
// Begin function compress
function compress($buffer) {
// remove comments
$buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer);
// remove tabs, spaces, new lines, etc.
$buffer = str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), '', $buffer);
// remove unnecessary spaces
$buffer = str_replace('{ ', '{', $buffer);
$buffer = str_replace(' }', '}', $buffer);
$buffer = str_replace('; ', ';', $buffer);
$buffer = str_replace(', ', ',', $buffer);
$buffer = str_replace(' {', '{', $buffer);
$buffer = str_replace('} ', '}', $buffer);
$buffer = str_replace(': ', ':', $buffer);
$buffer = str_replace(' ,', ',', $buffer);
$buffer = str_replace(' ;', ';', $buffer);
return $buffer;}
require_once('style.css');
ob_end_flush();
?>
Direktori css
Dua file dalam direktori css, yakni style.css dan style.css.php dengan pemanggilan <link rel="stylesheet" href="/css/style.css.php"/> pada file contact-form.php

Sekarang formulir kontak telah siap dimanfaatkan serta diletakkan pada blog, biasanya dalam halaman kontak. Sebelumnya — mungkin ini sifatnya opsional (tambahan) — menambah beberapa pengaturan pada .htaccess agar lebih maksimal. Baris pertama umumnya telah otomatis ditambahkan, tinggal melakukan konfigurasi untuk baris-baris selanjutnya. Taut kredit khusus untuk Mutohar Alwi dalam posting Cara Setting Expired Header.

# Do not remove this line, otherwise mod_rewrite rules will stop working
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# Prevents directory listing
IndexIgnore *

# Strong HTACCESS Protection
<Files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</Files>

<ifModule mod_headers.c>
Header set Connection keep-alive
</ifModule>

<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>

# BEGIN Browser Cache
<IfModule mod_mime.c>
AddType text/css .css
AddType application/x-javascript .js
AddType text/html .html .htm
AddType text/richtext .rtf .rtx
AddType image/svg+xml .svg .svgz
AddType text/plain .txt
AddType text/xsd .xsd
AddType text/xsl .xsl
AddType text/xml .xml
AddType video/asf .asf .asx .wax .wmv .wmx
AddType video/avi .avi
AddType image/bmp .bmp
AddType application/java .class
AddType video/divx .divx
AddType application/msword .doc .docx
AddType application/x-msdownload .exe
AddType image/gif .gif
AddType application/x-gzip .gz .gzip
AddType image/x-icon .ico
AddType image/jpeg .jpg .jpeg .jpe
AddType application/vnd.ms-access .mdb
AddType audio/midi .mid .midi
AddType video/quicktime .mov .qt
AddType audio/mpeg .mp3 .m4a
AddType video/mp4 .mp4 .m4v
AddType video/mpeg .mpeg .mpg .mpe
AddType application/vnd.ms-project .mpp
AddType application/vnd.oasis.opendocument.database .odb
AddType application/vnd.oasis.opendocument.chart .odc
AddType application/vnd.oasis.opendocument.formula .odf
AddType application/vnd.oasis.opendocument.graphics .odg
AddType application/vnd.oasis.opendocument.presentation .odp
AddType application/vnd.oasis.opendocument.spreadsheet .ods
AddType application/vnd.oasis.opendocument.text .odt
AddType audio/ogg .ogg
AddType application/pdf .pdf
AddType image/png .png
AddType application/vnd.ms-powerpoint .pot .pps .ppt .pptx
AddType audio/x-realaudio .ra .ram
AddType application/x-shockwave-flash .swf
AddType application/x-tar .tar
AddType image/tiff .tif .tiff
AddType audio/wav .wav
AddType audio/wma .wma
AddType application/vnd.ms-write .wri
AddType application/vnd.ms-excel .xla .xls .xlsx .xlt .xlw
AddType application/zip .zip
</IfModule>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/css A604800
ExpiresByType application/x-javascript A31536000
ExpiresByType text/html A3600
ExpiresByType text/richtext A3600
ExpiresByType image/svg+xml A3600
ExpiresByType text/plain A3600
ExpiresByType text/xsd A3600
ExpiresByType text/xsl A3600
ExpiresByType text/xml A3600
ExpiresByType video/asf A31536000
ExpiresByType video/avi A31536000
ExpiresByType image/bmp A31536000
ExpiresByType application/java A31536000
ExpiresByType video/divx A31536000
ExpiresByType application/msword A31536000
ExpiresByType application/x-msdownload A31536000
ExpiresByType image/gif A31536000
ExpiresByType application/x-gzip A31536000
ExpiresByType image/x-icon A31536000
ExpiresByType image/jpeg A31536000
ExpiresByType application/vnd.ms-access A31536000
ExpiresByType audio/midi A31536000
ExpiresByType video/quicktime A31536000
ExpiresByType audio/mpeg A31536000
ExpiresByType video/mp4 A31536000
ExpiresByType video/mpeg A31536000
ExpiresByType application/vnd.ms-project A31536000
ExpiresByType application/vnd.oasis.opendocument.database A31536000
ExpiresByType application/vnd.oasis.opendocument.chart A31536000
ExpiresByType application/vnd.oasis.opendocument.formula A31536000
ExpiresByType application/vnd.oasis.opendocument.graphics A31536000
ExpiresByType application/vnd.oasis.opendocument.presentation A31536000
ExpiresByType application/vnd.oasis.opendocument.spreadsheet A31536000
ExpiresByType application/vnd.oasis.opendocument.text A31536000
ExpiresByType audio/ogg A31536000
ExpiresByType application/pdf A31536000
ExpiresByType image/png A31536000
ExpiresByType application/vnd.ms-powerpoint A31536000
ExpiresByType audio/x-realaudio A31536000
ExpiresByType application/x-shockwave-flash A31536000
ExpiresByType application/x-tar A31536000
ExpiresByType image/tiff A31536000
ExpiresByType audio/wav A31536000
ExpiresByType audio/wma A31536000
ExpiresByType application/vnd.ms-write A31536000
ExpiresByType application/vnd.ms-excel A31536000
ExpiresByType application/zip A31536000
</IfModule>
<IfModule mod_deflate.c>
<IfModule mod_setenvif.c>
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
</IfModule>
<IfModule mod_headers.c>
Header append Vary User-Agent env=!dont-vary
</IfModule>
AddOutputFilterByType DEFLATE text/css application/x-javascript text/html text/richtext image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon
</IfModule>
<FilesMatch "\.(css|js)$">
<IfModule mod_headers.c>
Header set Pragma "public"
Header set Cache-Control "public, must-revalidate, proxy-revalidate"
</IfModule>
FileETag MTime Size
<IfModule mod_headers.c>
Header set X-Powered-By "Alwi"
</IfModule>
</FilesMatch>
<FilesMatch "\.(html|htm|rtf|rtx|svg|svgz|txt|xsd|xsl|xml)$">
<IfModule mod_headers.c>
Header set Pragma "public"
Header set Cache-Control "public, must-revalidate, proxy-revalidate"
</IfModule>
FileETag MTime Size
<IfModule mod_headers.c>
Header set X-Powered-By "Alwi"
</IfModule>
</FilesMatch>
<FilesMatch "\.(asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|swf|tar|tif|tiff|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$">
<IfModule mod_headers.c>
Header set Pragma "public"
Header set Cache-Control "public, must-revalidate, proxy-revalidate"
</IfModule>
FileETag MTime Size
<IfModule mod_headers.c>
Header set X-Powered-By "Alwi"
</IfModule>
</FilesMatch>
# END Browser Cache
Isi public_html
Isi keseluruhan public_html (subdomain) yang terdiri dari satu folder css dan tiga buah file (.htaccess, index.php, dan contact-form.php).

Implementasi Formulir Kontak dalam Blog

Setelah melakukan beberapa langkah-langkah di atas pada hosting kita untuk mendukung fasilitas kontak. Sekarang bagaimana cara melakukan konfigurasi formulir kontak tersebut dalam blog? Cukup ringkas, buat halaman statis baru (contoh: h**p://namablog.blogspot.com/p/kontak.html) dengan beberapa kalimat sebagai pembuka. Kemudian tambahkan markah berikut di bawah kalimat pembuka.

<object type="text/html" data="h**p://namasubdomain/contact-form.php"></object>

Perhatikan namasubdomain (warna merah) harus sesuai dengan yang kita daftarkan, contoh: optimasi.netai.net, optimasi.site90.com, dan sebagainya. Kemudian tambahkan CSS berikut pada template untuk mengatur markah object & letakkan di bawah ]]></b:skin>.

<b:if cond='data:blog.url == "h**p://namablog.blogspot.com/p/kontak.html"'>
<style>
object {
overflow: hidden;
height:630px;
width:100%;
}
</style>
</b:if>

Kemungkinan yang banyak diutak-atik adalah CSS object pada properti height agar formulir kontak tampil penuh, ketika memunculkan pesan error pada saat mengklik tombol “Kirim Pesan”. Taut demonstrasi dapat dilihat pada halaman Kontak Optimasi Blog. Berikut beberapa penampakkan hasil uji coba formulir komentar pada akun email pengelola blog.

Kotak Masuk EmailIsi EmailDetail Email

Bosan membacanya? Oleh karena terlalu panjang, meskipun sebenarnya dapat dikustomisasi lebih singkat. Posting membuat formulir kontak ini merupakan bahan dokumentasi penulis serta sedikit menambah wawasan kita tentang ‘dunia’ hosting & bagaimana melakukan optimalisasi terhadap sejumlah file didalamnya. Tidak menutup kemungkinan terdapat kekeliruan dalam penyampaian atau pengkodean di atas, sehingga dibutuhkan kritik serta saran agar dapat memperbaiki posting ini.

Bahan Bacaan: How to create a built-in contact form for your WordPress theme oleh Jean-Baptiste Jung

Description: Formulir Kontak Manual Rating: 5.0 Reviewer: Unknown ItemReviewed: Formulir Kontak Manual

Navigasi Breadcrumbs dengan Microdata

Anda mungkin pernah membaca posting Menambah Lokasi Link Post (Breadcrumbs Trail) oleh Hoctro. Posting ini juga berhubungan dengan hal tersebut, namun di-aransemen dengan beberapa hack agar muncul di beberapa halaman & ditambahkan format microdata data-vocabulary. Penggunaan data-vocabulary dimaksudkan agar breadcrumbs mampu berdiri sendiri, sehingga akan harmonis dengan format microdata http://schema.org/Blog. Lebih lanjut mengenai breadcrumbs yang didukung beberapa format dapat kita telaah pada Rich snippets — Breadcrumbs.

<b:includable id='breadcrumb' var='posts'>
<b:if cond='data:blog.homepageUrl != data:blog.url'>
<b:if cond='data:blog.pageType == "static_page"'>
<!-- breadcrumb for the static page -->
<div class='breadcrumbs' itemscope='itemscope' itemtype='http://data-vocabulary.org/Breadcrumb'><a expr:href='data:blog.homepageUrl' itemprop='url'><span itemprop='title'>Beranda</span></a> / <span itemprop='title'><data:blog.pageName/></span></div>
<b:else/>
<b:if cond='data:blog.pageType == "item"'>
<!-- breadcrumb for the post page -->
<b:loop values='data:posts' var='post'>
<b:if cond='data:post.labels'>
<div class='breadcrumbs' itemscope='itemscope' itemtype='http://data-vocabulary.org/Breadcrumb'><a expr:href='data:blog.homepageUrl' itemprop='url'><span itemprop='title'>Beranda</span></a>
<b:loop values='data:post.labels' var='label'>
<b:if cond='data:label.isLast == "true"'>
/ <a expr:href='data:label.url' itemprop='url'><span itemprop='title'><data:label.name/></span></a>
</b:if>
</b:loop>
/ <span itemprop='title'><data:post.title/></span></div>
<b:else/>
<div class='breadcrumbs' itemscope='itemscope' itemtype='http://data-vocabulary.org/Breadcrumb'><a expr:href='data:blog.homepageUrl' itemprop='url'><span itemprop='title'>Beranda</span></a> / <span itemprop='title'>Tanpa Label</span> / <span itemprop='title'><data:post.title/></span></div>
</b:if>
</b:loop>
<b:else/>
<b:if cond='data:blog.pageType == "archive"'>
<!-- breadcrumb for the label archive page -->
<div class='breadcrumbs' itemscope='itemscope' itemtype='http://data-vocabulary.org/breadcrumb'><a expr:href='data:blog.homepageUrl' itemprop='url'><span itemprop='title'>Beranda</span></a> / <span itemprop='title'>Arsip <data:blog.pageName/></span></div>
<b:else/>
<b:if cond='data:blog.pageType == "index"'>
<!-- breadcrumb for non home page (2nd, search, label page) -->
<b:if cond='data:blog.pageName == ""'>
<div class='breadcrumbs' itemscope='itemscope' itemtype='http://data-vocabulary.org/Breadcrumb'><a expr:href='data:blog.homepageUrl' itemprop='url'><span itemprop='title'>Beranda</span></a> / <span itemprop='title'>Penelusuran Arsip Posting</span></div>
<b:else/>
<div class='breadcrumbs' itemscope='itemscope' itemtype='http://data-vocabulary.org/Breadcrumb'><a expr:href='data:blog.homepageUrl' itemprop='url'><span itemprop='title'>Beranda</span></a> / <span itemprop='title'><data:blog.pageName/></span></div>
</b:if>
</b:if>
</b:if>
</b:if>
</b:if>
</b:if>
</b:includable>

Untuk pengkodean berwarna merah, dapat diganti sesuai keinginan Anda dengan menyesuaikan pula di halaman apa ia ditampilkan. Sedangkan warna biru (“/”) merupakan pemisah (separator) antar title. Letakkan pengkodean pada “Edit HTML”, jangan lupa centang Expand Widget Templates. Kemudian cari kode berikut & taruh di atasnya.

<b:includable id='main' var='top'>

Kita telah menambahkan widget breadcrumbs (kalau boleh dikatakan demikian), tinggal cara memanggil serta meletakkan kode pemanggilan tersebut. Perlu diperhatikan, kemungkinan pengkodean tiap template dapat berbeda-beda. Cara memanggilnya adalah melalui markah berikut.

<b:include data='posts' name='breadcrumb'/>

Letakkan kode pemanggilan itu di atas <b:include data='top' name='status-message'/>, seperti yang dapat kita amati di bawah ini.

<!-- posts -->
<div class='blog-posts hfeed'>

<b:include data='posts' name='breadcrumb'/>
<b:include data='top' name='status-message'/>

Sedangkan untuk melakukan beberapa kustomisasi, tambahkan selector .breadcrumbs pada CSS template atau letakkan saja di atas ]]></b:skin>. Contoh:

.breadcrumbs {
font: .875em/1.7143em monospace;
margin: 0 0 1.7143em;
}

Penambahan breadcrumbs di atas, khusus dilakukan pada Blogger™ & pengkodeannya tidak mutlak demikian. Artinya kita masih dapat merubah atau melakukan modifikasi sesuai dengan pengkodean template yang digunakan.

Bahan Bacaan: Breadcrumb for Blogger format RDF (Resource Description Framework) — Blogger Plugins.

Description: Navigasi Breadcrumbs dengan Microdata Rating: 5.0 Reviewer: Unknown ItemReviewed: Navigasi Breadcrumbs dengan Microdata

Memperbaiki Struktur Blog

Struktur blog bukan hanya berkenaan dengan pengkodean template, namun harus dipandang sebagai keseluruhan sistem yang terintegrasi di dalam blog itu sendiri, seperti pengaturan, semantik, dan sebagainya. Ketika kita terfokus bahwa struktur blog merupakan sebuah pengkodean semata, maka jangan heran jika upaya keras yang kita lakukan hanya berkisar antara utak-atik untuk mendapatkan peringkat utama dalam hasil organik (baca kembali posting tentang pemahaman yang saklak tentang SEO).

Apakah Optimasi Blog mengada-ada, dengan selalu menghubungkan sesuatu dengan SEO? Saya tidak mengada-ada & ini mempunyai dasar sesuai dengan panduan umum Search Engine Optimization (SEO), dimana struktur blog adalah salah satu item yang mesti diperhatikan. Item dasar telah diterbitkan sebelumnya pada posting judul dan deskripsi dalam blog.

Untuk URL (Uniform Resource Locator) saya rasa semua blogger sudah mengenal & paham. Jika judul posting dikustomisasi dengan baik, maka alamat posting (permalink) yang terbentuk akan baik pula. Hindari bagi sejumlah permalink yang memasukkan kata kunci berulang-ulang (ditandai dengan URL berwarna merah) dan sama serta serupa pada sub domain atau root direktori yang berbeda (warna hijau).

h**p://namablog.blogspot.com/2012/11/seo-blog-seo-blog-seo-blog.html
h**p://namablog.blogspot.com/p/struktur-blog.html
h**p://namablog.blogspot.com/2012/11/struktur-blog.html

Membuat sebuah blog mudah untuk dinavigasi bukan berarti blog harus tampil minimalis. Selama pengguna & mesin penelusur dapat membaca dengan baik, maka blog tersebut dapat dikategorikan mudah untuk dinavigasi. Pemanfaatan beberapa elemen untuk membuat menu utama dan pengarsipan mempunyai nilai tersendiri untuk membantu pengguna menjelajahi konten. Bredcrumbs pun tidak jarang sebagai tolak ukur kemudahan bagi pengguna untuk menavigasi isi suatu halaman, terutama pada halaman yang kompleks. Mudah dinavigasi juga bermakna bahwa tautan-tautan — menu utama, arsip, bredcrumbs— tersebut aksesibel jika diklik (clickable). Ia akan mengarahkan pada halaman yang sesuai & tepat. Bagaimana jika alamat taut yang diklik tersebut tidak ada atau telah dihapus? Tempatnya adalah di halaman tidak ditemukan atau istilah kerennya “error404”.

Keberadaan peta situs (sitemap) sederhana yang merujuk ke semua halaman atau halaman yang penting (jika kita memiliki ratusan bahkan ribuan) di dalam blog dapat berguna. Hal ini akan sangat membantu pelacakan agar mesin penelusur menemukan halaman yang relevan. Silakan baca kembali posting tentang cara submit sitemap.

h**p://namablog.blogspot.com/sitemap.xml

Berikan kemudahan bagi pengguna untuk memindai & menjelajahi blog kita, jangan abaikan apa yang menjadi kebutuhan mereka. Sedangkan mesin pencari telah mendapat bagian tertentu — apa yang harus dan tidak boleh diindeks — dengan bantuan peta situs (sitemap).

Description: Memperbaiki Struktur Blog Rating: 5.0 Reviewer: Unknown ItemReviewed: Memperbaiki Struktur Blog

Widget Posting dan Komentar Terbaru yang Sederhana

Mungkin Anda pernah membaca artikel sebelumnya tentang Trik Blogger | Memasang Posting Terbaru (Recent Posts) & Trik Blogger | Memasang Komentar Terbaru (Recent Comments). Keduanya tidak menggunakan struktur kode daftar urut (unordered list atau ordered list), namun menggunakan horizontal rule (<hr>) sebagai pemisah antar item atau hanya berupa break (<br>).

Sebenarnya membuat gadget atau widget posting atau komentar terbaru adalah sangat mudah, yaitu dengan memanfaatkan feed default bagi pengguna Blogger™.

h**p://namablog.blogspot.com/feeds/posts/default
h**p://namablog.blogspot.com/feeds/comments/default

Cara menambahkan kedua feed di atas dilakukan melalui kustomisasi Tata Letak (Layout) pada dashboard akun Blogger™ Anda.

Menambah Gadget/Widget

Kemudian pada jendela pop-up yang terbuka, pilih gadget “Feed”.

Gadget/Widget Feed

Masukkan URL feed default Blogger™ Anda, seperti yang telah diperlihatkan di atas (satu gadget berarti satu URL)& jangan lupa diganti nama blog yang berwarna merah dengan Blog Anda. Eksekusi dengan mengklik tombol “Continue”.

Konfigurasi Feed

Selanjutnya akan ditunjukkan beberapa pengaturan yang dapat Anda kustomisasi pada gadget atau widget feed yang baru dibuat tersebut. Akhiri dengan mengklik tombol “Save”.

Konfigurasi Feed Lanjutan

Mungkin yang kurang nyaman dilihat hanya pada gadget atau widget komentar terbaru (recent comments), karena isi komentar — jumlahnya dapat diatur pada saat konfigurasi feed — akan ditampilkan pula. Alternatifnya kita dapat mengganti dengan memilih gadget “HTML/JavaScript”, kemudian masukkan script berikut, sehingga komentar terbaru akan menampilkan nama komentator & judul posting.

<script type='text/javascript'>
//<![CDATA[
function showrecentcomments(r){document.write('<ul>');for(var g=0;g<a_rc;g++){var c=r.feed.entry[g];var p;if(g==r.feed.entry.length){break}for(var f=0;f<c.link.length;f++){if(c.link[f].rel=="alternate"){p=c.link[f].href;break}}p=p.replace("#","#");var m=p.split("#");m=m[0];var e=m.split("/");e=e[5];e=e.split(".html");e=e[0];var b=e.replace(/-/g," ");b=b.link(m);var o=c.published.$t;var l=o.substring(0,4);var d=o.substring(5,7);var a=o.substring(8,10);var n=new Array();n[1]="Jan";n[2]="Feb";n[3]="Mar";n[4]="Apr";n[5]="May";n[6]="Jun";n[7]="Jul";n[8]="Aug";n[9]="Sep";n[10]="Oct";n[11]="Nov";n[12]="Dec";if("content" in c){var j=c.content.$t}else{if("summary" in c){var j=c.summary.$t}else{var j=""}}var q=/<\S[^>]*>/g;j=j.replace(q,"");document.write('<li>');if(m_rc==true){document.write("On "+n[parseInt(d,10)]+" "+a+" ")}document.write('<a href="'+p+'">'+c.author[0].name.$t+"</a>");if(n_rc==true){document.write(" on "+b)}if(o_rc==0){document.write("</li>")}else{document.write(": ");if(j.length<o_rc){document.write("<i>&#8220;");document.write(j);document.write("&#8221;</i></li>")}else{document.write("<i>&#8220;");j=j.substring(0,o_rc);var h=j.lastIndexOf(" ");j=j.substring(0,h);document.write(j+"&hellip;&#8221;</i></li>");document.write("")}}}};
//]]>
</script>
<script style=text/javascript >var a_rc=5;var m_rc=false;var n_rc=true;var o_rc=0;</script><script src='h**p://namablog.blogspot.com/feeds/comments/default?alt=json-in-script&amp;callback=showrecentcomments'></script>

Catatan:
Widget komentar terbaru akan ditampilkan dalam daftar urut (<ul>). Teks “On” menunjukkan pemisah antara nama komentator & dengan judul posting. Angka 5 menunjukkan jumlah komentar & angka 0 merupakan isi komentar serta jangan lupa mengganti nama blog dengan blog Anda.

Untuk demonstrasi dapat dilihat pada sidebar atau footer Optimasi Blog — Komentar Terakhir & Posting Terakhir.

Description: Widget Posting dan Komentar Terbaru yang Sederhana Rating: 5.0 Reviewer: Unknown ItemReviewed: Widget Posting dan Komentar Terbaru yang Sederhana

Optimalisasi Fungsi Peramban dalam Blogging

Jenis Peramban

Peramban merupakan perangkat lunak yang berfungsi menampilkan & melakukan interaksi dengan dokumen-dokumen yang disediakan oleh server web. Jenisnya pun bermacam-macam, antara lain Internet Explorer (IE), Firefox, Chrome, Opera dan lain-lain. Di antara beberapa peramban yang telah disebutkan tersebut, mungkin dapat kita kerucutkan menjadi dua yang paling sering digunakan, yakni Firefox & Chrome. Nah, posting ini akan sedikit menjelaskan tentang optimalisasi fungsi peramban melalui “Inspect Elements’ dan sejumlah ekstensi (add-ons) yang perlu diunduh untuk menunjang aktivitas blogging.

Inspect Elements

Fungsi ini dapat kita manfaatkan, ketika melakukan klik kanan pada sebuah halaman web agar mengetahui struktur pengkodean, namun jangan disalahgunakan untuk meniru secara menyeluruh format template. Oleh karena sebuah desain situs web atau blog mempunyai hak cipta bagi perancangnya, mungkin sebuah pengecualian jika kita meletakkan taut situs perancang & meminta izin, apakah kita boleh menggunakan desain tersebut.

Kembali pada fungsi “Inspect Elements”, ketika diklik akan muncul — di bagian bawah peramban — tab yang biasanya memiliki dua kolom, sebelah kiri adalah HTML (HyperText Markup Language) dan kanan adalah CSS (Cascading Style Sheets). Meskipun ia mampu menampilkan lebih dari sekedar HTML dan CSS, apabila ditelusuri lebih mendalam.

Bagi Anda yang suka utak-atik template, “Inspect Elements” sangat berguna untuk mengatur — menambah, mengurangi, atau memperbaiki pengkodean — tampilan sebuah situs web atau blog melalui CSS (sebelah kanan). Kemudian kode itu kita salin dan tempel pada “Notepad” atau perangkat lunak teks editor kesayangan Anda. Seiring dengan perubahan pengkodean, maka tampilan situs web atau blog pada layar peramban akan berubah pula sesuai dengan kustomisasi kode. Syaratnya halaman yang diperiksa dan dikustomisasi tersebut tidak direfresh.

Inspect Element Firefox
Fungsi “Inspect Element” pada peramban Firefox.
Inspect Element Chrome
Fungsi “Inspect Element” pada peramban Chrome.

Catatan: Untuk memeriksa elemen tertentu, Anda dapat memanfaatkan “Select elements” (dilingkari dengan warna merah), kemudian pilih elemen dengan melakukan klik kiri pada tetikus.

Ekstensi (add-ons)

Firebug — untuk mengetahui struktur pengkodean suatu situs web atau blog, jika Anda terbiasa untuk menggunakannya dibanding dengan default pada tiap-tiap peramban (Firefox dan Chrome).

Color Tools — untuk mengetahui pewarnaan yang ditampilkan pada layar peramban, kebanyakkan pengguna menggunakan ekstensi “ColorZilla” (Firefox dan Chrome). Namun untuk firefox, saya lebih memilih “Rainbow Color Tools”.

Font Style — untuk mengetahui pengaturan font & line-height, sehingga diharapkan mampu menjaga irama vertikal suatu teks, walaupun ditampilkan dalam ukuran yang berbeda (Firefox dan Chrome).

Screen Capture — untuk mengambil gambar (screenshot) pada suatu halaman yang ditampilkan oleh peramban dengan ekstensi “Awesome Screenshot” (Firefox dan Chrome). Namun pada Chrome, saya lebih memilih ekstensi “Screen Capture”.

HTML5 Outliner — untuk mengetahui struktur garis bentuk HTML5 pada suatu situs web atau blog yang biasanya diperlihatkan oleh baris judul pada masing-masing elemen (Firefox dan Chrome).

HTML Microdata — untuk mengecek struktur microdata yang terdapat dalam suatu situs web atau blog. Sementara saya hanya menggunakan “Semantic Inspector” khusus pada Chrome.

Users Online — ekstensi ini dapat digunakan setelah terlebih dulu memasang script dari http://whos.amung.us, kemudian masukkan 8 – 12 karakter sitekey sesuai kode script yang dipasang dalam situs web atau blog. Umumnya penggunaan ekstensi ini adalah pada script whos.amung.us yang disembunyikan atau tidak menampilkan widget status online (Firefox dan Chrome).

Web Developer — untuk menambah sekumpulan alat yang dapat dimanfaatkan sebagai analisis rinci pada situs web atau blog. Biasanya saya menggunakannya untuk men-disable all style dalam CSS (Firefox dan Chrome).

Fungsi & ekstensi (add-ons) yang telah disebutkan di atas, hanya sebagian kecil yang mungkin dapat digunakan dalam aktivitas blogging. Tinggal sejauh mana upaya kita agar penggunaannya dapat optimal, terutama bagi peramban kesayangan. Hal ini diharapkan agar blogging bukan hanya dipandang sebuah aktivitas menulis atau menerbitkan posting semata, namun akan lebih memiliki nilai jika kita mampu belajar memahami & menyelami markah yang terkandung didalamnya. Expert? Tidak juga.

Description: Optimalisasi Fungsi Peramban dalam Blogging Rating: 5.0 Reviewer: Unknown ItemReviewed: Optimalisasi Fungsi Peramban dalam Blogging

Judul dan Deskripsi dalam Blog

Kita pasti sering menggunakan mesin penelusur untuk mencari sesuatu yang dibutuhkan. Khusus untuk informasi posting, biasanya hasil pencarian akan menunjukkan judul, URL (Uniform Resource Locator), dan deskripsi. Opsional, jika kata kunci yang diketik oleh pengguna mempunyai kesesuaian yang sangat nyata dengan judul & deskripsi blog serta posting didalamnya, maka pada baris bagian bawah akan muncul rekomendasi beberapa tautan yang mengarah pada alamat blog tersebut atau lebih dikenal dengan sebutan sitelink.

Dari paragraf di atas, judul & deskripsi dalam blog merupakan unsur dasar dalam SEO yang meliputi dua elemen penting, yakni blog dan halaman blog. Setiap Judul haruslah unik dan akurat. Unik karena format struktur yang tidak mempunyai persamaan identik dengan judul lain dan akurat karena menggambarkan isi konten atau posting dalam sebuah blog. Sedangkan deskripsi merupakan ringkasan yang dapat didefinisikan untuk setiap halaman, mungkin berisi satu atau dua kalimat atau paragraf pendek.

Judul

Judul akan ditampilkan dalam hasil pencarian & ketika membuka halaman pada hasil penelusuran, maka judul akan tampil pada tab peramban. Begitu pula ketika pengguna mengetikkan kata kunci lebih spesifik, maka hasil pencarian akan menampilkan sesuai dengan kata kunci tersebut. Biasanya judul diindasikan dengan menggunakan title tag yang berada antara <head></head>, seperti yang telah diulas dalam Tips Search Engine Optimization (SEO) pada Blogger.com.

<title>
<b:if cond='data:blog.homepageUrl == data:blog.url'>
<data:blog.title/>
<b:else/>
<data:blog.pageName/> | <data:blog.title/>
</b:if>
</title>

Berikut beberapa hal yang perlu kita lakukan dalam membuat judul:

  • Memilih judul yang secara efektif mengkomunikasikan topik dari konten halaman. Ini akan membantu mesin penelusur untuk menemukan obyek yang tepat, ketika pengguna mengetikkan kata kunci tertentu. Hindari penggunaan judul yang tidak ada hubungannnya dengan isi blog & menggunakan judul secara tersamar, seperti: “Tanpa Judul”, “Halaman Baru”.
  • Menggunakan judul yang unik di setiap halaman. Setiap halaman blog idealnya harus memiliki tag judul yang unik, sehingga mesin penelusur mengetahui bagaimana halaman tersebut berbeda dari yang lain.
  • Menggunakan judul yang singkat tapi deskriptif. Judul semestinya dapat dipersingkat & informatif, karena judul yang panjang mungkin tidak akan banyak membantu pengguna. Apalagi ketika sebuah judul dimasukkan kata-kata kunci yang tidak dibutuhkan serta berlebihan.

Deskripsi

Deskripsi dalam blog diwujudkan dalam description meta tags, dimana khusus untuk Blogger™ default akan berada pada markah <b:include data='blog' name='all-head-content'/>. Bagaimana jika tidak ada, mungkin karena modifikasi atau kustomisasi tiap template, maka kita dapat menambahkan secara manual.

<b:if cond='data:blog.metaDescription != &quot;&quot;'>
<meta expr:content='data:blog.metaDescription' name='description'/>
</b:if>

Deskripsi blog dapat kita kostumisasi melalui pengaturan pada dashboard Blogger™, seperti yang telah ditulis dalam posting Kustomisasi Setelan pada Preferensi Penelusuran. Sedangkan untuk halaman posting & statis, berada pada menu pengaturan sebelah kanan editor posting.

Deskripsi Halaman Posting atau Statis

Meta tag deskripsi berguna sebagai ringkasan dari keseluruhan isi blog dan “mungkin” mesin penelusur akan menampilkan deskripsi tersebut — jika benar-benar relevan — sesuai & cocok dengan permintaan pengguna. Berikut beberapa hal yang perlu kita lakukan dalam membuat deskripsi:

  • Tulis desktipsi yang menginformasikan & demi kepentingan pengguna jika mereka melihat deskripsi tersebut sebagai potongan dalam hasil pencarian. Hindari menulis meta tag deskripsi yang tidak ada hubungannya dengan isi dari halaman, menggunakan deskripsi yang umum seperti “Ini adalah halaman web” atau “Halaman tentang blog”, mengisi deskripsi hanya dengan kata kunci, serta menyalin & menyisipkan seluruh isi dokumen ke dalam meta tag deskripsi.
  • Menggunakan deskripsi yang unik untuk setiap halaman, sehingga membantu mesin penelusur & pengguna untuk menemukan ringkasan yang jelas tentang apa isi halaman blog tersebut. Oleh karena halaman sebuah blog adalah unik, maka hindari penggunaan deskripsi tunggal untuk setiap halaman.

Sumber: General guidelines Search Engine Optimization (SEO).

Description: Judul dan Deskripsi dalam Blog Rating: 5.0 Reviewer: Unknown ItemReviewed: Judul dan Deskripsi dalam Blog

Pemahaman yang saklak tentang SEO

Kita mempunyai suatu branding dan — tidak munafik — ingin dikenal. Bagaimana caranya agar dikenal? Yah, diberitahukan kepada orang-orang bahwa, ini adalah branding saya. Bagaimana orang itu tahu, kalau orang-orang sudah kenal dengan branding-nya — sebuah generalisasi sederhana — cari di mesin penelusur.

Umumnya SEO (Search Engine Optimization) merupakan usaha optimalisasi situs web atau blog agar mendapat perhatian dari mesin penelusur, sehingga ketika pengguna mengetikkan kata kunci tertentu, diharapkan halaman situs web atau blog tersebut akan muncul pada hasil pencarian. Apabila kita hanya terfokus pada frase kata mesin pencari, maka akan terjebak dengan pemikiran yang saklak tentang pemahaman makna sebenarnya yang terkandung dalam SEO itu sendiri. Sangat dimungkinkan timbul beberapa paradigma yang berpendapat bahwa SEO itu rumit, SEO itu perlu sekolah, & sebagainya. Kembali pada ilustrasi di atas, apakah hal tersebut akan menafikan proses SEO dalam aktivitas blogging Anda? Ya, tentu saja tidak. Terkecuali Anda adalah seseorang yang populer, memiliki banyak partner & follower atau hal-hal lain di luar kebiasaan.

Mungkin Anda adalah pembaca setia “Optimasi Blog”, kemudian pernah membaca beberapa posting tentang tips SEO. Mari kita kesampingkan dulu posting-posting itu & mulai dengan dua posting terakhir dengan label SEO, yakni Tips Search Engine Optimization (SEO) pada Blogger.com dan Tips SEO pada Blogger.com Bagian Kedua. Adakah hal-hal rumit tentang SEO? Apakah kita perlu menghitung jumlah kata dalam sebuah posting? Apakah satu atau lebih kata kunci harus ditekan secara berulang-ulang? Apakah dengan memberi tanda-tanda tertentu pada kata kunci akan meningkatkan peringkat pencarian?

Ketika kita mulai berpikir tentang pertanyaan-pertanyaan itu, maka kita pun akan terjatuh pada penilaian yang saklak akan makna sebenarnya dari SEO. Bukankah terdapat keterkaitan dengan “selalu dihubungkan dengan mesin pencari”? Antara keduanya memiliki keterkaitan yang jelas, namun dalam ruang lingkup yang berbeda. Daerah yang satu menggambarkan lingkup dalam sebuah branding, sedangkan yang lain diluar lingkup branding.

Ketika kita telah memutuskan tentang apa yang akan & patut dijadikan produk, sangat dimungkinkan pula kita telah menemukan merek yang tepat untuk produk tersebut. Jika dihubungkan dengan aktivitas blogging, produk yang dimaksud adalah berupa kumpulan catatan posting atau artikel. Selanjutnya, secara rutin posting — yang diterbitkan — diupayakan tidak terlepas dengan merek yang telah kita tetapkan. Satu keunikkan dari situs web atau blog telah muncul, yaitu merek & produk saling terkait. Ini adalah branding Anda.

Pengguna yang membutuhkan suatu informasi tertentu akan mencari pada mesin telusur dengan kata kunci yang ia butuhkan. Mungkin halaman situs web atau blog Anda akan muncul pada hasil pencarian & pengguna pun mengunjunginya. Ternyata halaman itu memang berisi informasi yang mereka butuhkan. Penyajian yang segar serta tersusun dengan bahasa yang baik, ia pun betah membacanya. Tidak menutup kemungkinan, pengguna akan membaca posting lain karena informasi yang dibutuhkannya memiliki keterkaitan.

Simpulan

Secara sadar atau tidak sadar, dimulai dari rancangan sebuah situs web atau blog sampai dengan pembaharuan posting yang sesuai serta terkait dengan tema, kita telah masuk ke dalam SEO. Oleh karena ia bukan hasil dari pemikiran yang saklak, harus mesin pencari atau sejumlah usaha keras utak-atik untuk mendapatkan peringkat dalam hasil organik. Tetapi lebih kepada target kebutuhan pengguna yang menjadi konsumen utama kita. Ketika blog ini berbicara tentang “SEO”, mungkin akan sesuai dengan pindaian Anda bahwa temanya adalah “Optimasi Blog”. Bagaimana jika menerbitkan tentang kisah “Selebritis”? Anda juga yang akan menilai.

Description: Pemahaman yang saklak tentang SEO Rating: 5.0 Reviewer: Unknown ItemReviewed: Pemahaman yang saklak tentang SEO

Desain Blog dan Aksesibilitas

Aksesibilitas

Ketika berbicara tentang desain, umumnya kerap dihubungkan dengan desain antarmuka (front-end). Yah, sebuah tampilan dari baris markah yang dipertunjukkan oleh layar peramban, sehingga tidak lebih dari sekedar tampilan grafis yang dimaknai dengan sekumpulan kode-kode. Apabila hal ini berkelanjutan — mungkin menjadi sebuah #trending topics — maka jangan terkejut, jika kelak desain yang diartikan seperti tersebut di atas akan tidak bisa diakses oleh suatu peralatan tertentu.

Blog merupakan catatan di web yang tersusun oleh posting/artikel, biasa diurut berdasarkan akhir sampai awal penerbitan. Umumnya sebuah blog merupakan media berbagi, dimana pengelola, penulis, & pengunjung saling berinteraksi. Mungkin pula interaksi tersebut berjalan satu arah, penulis menerbitkan posting/artikel, sedangkan pengunjung cuma mencerna isinya, tanpa perlu ada aksi tertentu. Desain blog berisi karakter unik — HTML, XHTML, CSS, JS, PHP, dan sebagainya — tergantung pada mesin blogger yang mendukungnya.

Ketika kita memandang desain web adalah sebuah sistem, kita tidak dapat melepaskan aksesibilitas (dan usabilitas) di dalamnya. Saya berpendapat bahwa tujuan dari desain antarmuka adalah untuk menunjang aksesibilitas & usabilitas, bukan sebaliknya.

Kembali ke paragraf pertama, Jangan terkejut, jika kelak desain yang diartikan seperti tersebut di atas akan tidak bisa diakses oleh suatu peralatan tertentu. Mungkin sebagian dari kita, lebih mengutamakan tampilan desain yang cool serta elegen. Namun yang pasti, sebuah desain jangan meninggalkan satu poin penting, yakni aksesibilitas. Oleh karena aksesibilitas bukan hanya untuk memfasilitasi penyandang disabilitas, tetapi aksesibilitas itu untuk semua.

Catatan: Posting ini merupakan pembelajaran & dokumentasi penulis tentang aksesibilitas serta usabilitas.

Description: Desain Blog dan Aksesibilitas Rating: 5.0 Reviewer: Unknown ItemReviewed: Desain Blog dan Aksesibilitas