Skip to content
View in the app

A better way to browse. Learn more.

Lalu Pro

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Membuat Template Blogger Mulai dari Nol

Tujuan: Membangun template Blogger dari kerangka kosong secara bertahap — mulai dari header, footer, sidebar, hingga area postingan — sehingga pemula bisa melihat langsung perubahan yang terjadi di blog mereka.


Prasyarat

  • Akun Google & blog Blogger yang sudah dibuat

  • Akses ke Tema → Edit HTML di dashboard Blogger

  • Browser (disarankan Chrome/Firefox)

  • Semangat belajar


Cara Mengganti Template di Blogger

  1. Login ke blogger.com

  2. Pilih blog Anda → klik Tema di menu kiri

  3. Klik tombol Edit HTML (ikon pensil)

  4. Hapus semua kode yang ada

  5. Tempel kode baru dari tutorial ini

  6. Klik Simpan tema

  7. Buka blog Anda di tab baru untuk melihat hasilnya

💡 Tips: Buka blog Anda di tab terpisah, lalu setiap selesai menyimpan, refresh tab tersebut untuk melihat perubahannya langsung.


Tahap 1 — Kerangka Dasar (Hanya Tulang)

Kita mulai dari kerangka paling sederhana: hanya struktur HTML tanpa konten apapun. Ini untuk memastikan template terbaca oleh Blogger tanpa error.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html>
<html b:css='false' b:layoutsversion='3'
  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'>

<head>
  <meta charset='utf-8'/>
  <meta content='width=device-width,initial-scale=1' name='viewport'/>
  <title><data:view.title.escape/></title>

  <b:skin><![CDATA[
    body {
      font-family: sans-serif;
      margin: 0;
      padding: 0;
      background-color: #f4f4f4;
      color: #333;
    }
    .wrapper {
      max-width: 1200px;
      margin: 0 auto;
      padding: 20px;
    }
  ]]></b:skin>
</head>

<body>
  <div class='wrapper'>
    <p>Blog saya sedang dibangun...</p>
  </div>
</body>

</html>

Apa yang terjadi?

Simpan dan refresh blog Anda. Anda akan melihat halaman putih dengan tulisan "Blog saya sedang dibangun..."

Ini artinya:

  • Blogger menerima template Anda

  • Judul tab browser sudah menggunakan nama blog Anda (lihat <data:view.title.escape/>)

  • CSS dasar sudah aktif

Penjelasan Kode Penting

Kode

Fungsi

b:css='false'

Mematikan CSS bawaan Blogger agar kita pakai CSS sendiri

b:layoutsversion='3'

Menggunakan versi layout Blogger terbaru

xmlns:b, xmlns:data, xmlns:expr

Namespace yang dibutuhkan agar tag Blogger (b:section, data:, dll) bisa dibaca

<data:view.title.escape/>

Tag Blogger untuk menampilkan judul halaman secara otomatis

<b:skin><![CDATA[ ... ]]></b:skin>

Tempat menulis CSS utama template


Tahap 2 — Menambahkan Header

Sekarang kita tambahkan header — bagian paling atas blog yang biasanya berisi nama blog dan deskripsi.

Ganti seluruh kode dengan yang berikut:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html>
<html b:css='false' b:layoutsversion='3'
  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'>

<head>
  <meta charset='utf-8'/>
  <meta content='width=device-width,initial-scale=1' name='viewport'/>
  <title><data:view.title.escape/></title>

  <b:skin><![CDATA[
    * { box-sizing: border-box; }
    body {
      font-family: sans-serif;
      margin: 0;
      padding: 0;
      background-color: #f4f4f4;
      color: #333;
    }
    .wrapper {
      max-width: 1200px;
      margin: 0 auto;
      padding: 20px;
    }

    /* === HEADER === */
    header {
      background: #2c3e50;
      color: #fff;
      padding: 30px 20px;
      margin-bottom: 20px;
      border-radius: 6px;
    }
    header a {
      color: #fff;
      text-decoration: none;
    }
  ]]></b:skin>
</head>

<body>
  <div class='wrapper'>

    <header role='banner'>
      <b:section class='header-section' id='header-section' maxwidgets='1' showaddelement='yes'/>
    </header>

  </div>
</body>

</html>

Cara Menambahkan Widget Header

Setelah menyimpan dan refresh blog, Anda akan melihat area gelap di atas (header). Tapi masih kosong! Sekarang:

  1. Kembali ke dashboard Blogger → Tata Letak

  2. Anda akan melihat kotak bertuliskan "header-section"

  3. Klik tombol Tambah Widget di kotak header

  4. Pilih widget Header → Simpan

  5. Refresh blog Anda

Hasilnya: Nama blog dan deskripsi muncul di header dengan latar belakang gelap.

Penjelasan <b:section>

<b:section id='header-section' maxwidgets='1' showaddelement='yes'/>

Atribut

Fungsi

id

Nama unik untuk section ini (wajib, tidak boleh sama)

maxwidgets='1'

Membatasi hanya 1 widget yang bisa ditambahkan di sini

showaddelement='yes'

Menampilkan tombol "Tambah Widget" di mode Tata Letak


Tahap 3 — Menambahkan Footer

Footer adalah bagian paling bawah blog. Mari kita tambahkan sekarang.

Ganti seluruh kode dengan:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html>
<html b:css='false' b:layoutsversion='3'
  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'>

<head>
  <meta charset='utf-8'/>
  <meta content='width=device-width,initial-scale=1' name='viewport'/>
  <title><data:view.title.escape/></title>

  <b:skin><![CDATA[
    * { box-sizing: border-box; }
    body {
      font-family: sans-serif;
      margin: 0;
      padding: 0;
      background-color: #f4f4f4;
      color: #333;
    }
    .wrapper {
      max-width: 1200px;
      margin: 0 auto;
      padding: 20px;
    }

    /* === HEADER === */
    header {
      background: #2c3e50;
      color: #fff;
      padding: 30px 20px;
      margin-bottom: 20px;
      border-radius: 6px;
    }
    header a {
      color: #fff;
      text-decoration: none;
    }

    /* === FOOTER === */
    footer {
      background: #2c3e50;
      color: #ccc;
      padding: 20px;
      margin-top: 20px;
      border-radius: 6px;
      text-align: center;
      font-size: 0.9em;
    }
    footer a {
      color: #aed6f1;
      text-decoration: none;
    }
  ]]></b:skin>
</head>

<body>
  <div class='wrapper'>

    <header role='banner'>
      <b:section class='header-section' id='header-section' maxwidgets='1' showaddelement='yes'/>
    </header>

    <!-- Area tengah (isi & sidebar) akan ditambahkan nanti -->
    <div style='background:#fff; padding:20px; border-radius:6px; min-height:200px; margin-bottom:20px;'>
      <p style='color:#999; text-align:center;'>[ Area Postingan &amp; Sidebar — segera hadir ]</p>
    </div>

    <footer role='contentinfo'>
      <b:section class='footer-section' id='footer-section' showaddelement='yes'/>
    </footer>

  </div>
</body>

</html>

Cara Menambahkan Widget Footer

  1. Kembali ke Tata Letak

  2. Di area footer-section, klik Tambah Widget

  3. Pilih Teks → ketik "© 2025 Blog Saya. Hak cipta dilindungi." → Simpan

  4. Refresh blog

Hasilnya: Sekarang blog Anda sudah punya header di atas, area kosong di tengah (placeholder), dan footer di bawah.


Tahap 4 — Menambahkan Sidebar

Sekarang kita bentuk layout dua kolom: konten utama di kiri dan sidebar di kanan.

Ganti seluruh kode dengan:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html>
<html b:css='false' b:layoutsversion='3'
  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'>

<head>
  <meta charset='utf-8'/>
  <meta content='width=device-width,initial-scale=1' name='viewport'/>
  <title><data:view.title.escape/></title>

  <b:skin><![CDATA[
    * { box-sizing: border-box; }
    body {
      font-family: sans-serif;
      margin: 0;
      padding: 0;
      background-color: #f4f4f4;
      color: #333;
    }
    .wrapper {
      max-width: 1200px;
      margin: 0 auto;
      padding: 20px;
    }

    /* === HEADER === */
    header {
      background: #2c3e50;
      color: #fff;
      padding: 30px 20px;
      margin-bottom: 20px;
      border-radius: 6px;
    }
    header a {
      color: #fff;
      text-decoration: none;
    }

    /* === LAYOUT TENGAH === */
    .main-container {
      display: flex;
      flex-direction: column;
      gap: 20px;
      margin-bottom: 20px;
    }
    @media (min-width: 768px) {
      .main-container {
        flex-direction: row;
      }
    }

    /* === AREA KONTEN UTAMA === */
    main {
      flex: 3;
      background: #fff;
      padding: 20px;
      border-radius: 6px;
      min-height: 300px;
    }

    /* === SIDEBAR === */
    aside {
      flex: 1;
      background: #fff;
      padding: 20px;
      border-radius: 6px;
    }
    aside h2, aside h3 {
      font-size: 1em;
      border-bottom: 2px solid #2c3e50;
      padding-bottom: 6px;
      margin-top: 0;
    }

    /* === FOOTER === */
    footer {
      background: #2c3e50;
      color: #ccc;
      padding: 20px;
      border-radius: 6px;
      text-align: center;
      font-size: 0.9em;
    }
    footer a {
      color: #aed6f1;
      text-decoration: none;
    }
  ]]></b:skin>
</head>

<body>
  <div class='wrapper'>

    <header role='banner'>
      <b:section class='header-section' id='header-section' maxwidgets='1' showaddelement='yes'/>
    </header>

    <div class='main-container'>

      <main id='main-content' role='main'>
        <!-- Postingan akan ditambahkan di tahap berikutnya -->
        <p style='color:#999; text-align:center;'>[ Area Postingan — segera hadir ]</p>
      </main>

      <aside id='sidebar' role='complementary'>
        <b:section class='sidebar-section' id='sidebar-section' showaddelement='yes'/>
      </aside>

    </div>

    <footer role='contentinfo'>
      <b:section class='footer-section' id='footer-section' showaddelement='yes'/>
    </footer>

  </div>
</body>

</html>

Cara Mengisi Sidebar

  1. Buka Tata Letak di dashboard

  2. Di kotak sidebar-section, klik Tambah Widget

  3. Coba tambahkan:

    • Arsip Blog — menampilkan arsip postingan per bulan

    • Label — menampilkan semua label/kategori

    • Tentang Saya — profil singkat Anda

  4. Simpan dan refresh blog

Hasilnya: Blog Anda sekarang punya dua kolom — kiri untuk konten, kanan untuk sidebar. Di layar HP (< 768px), keduanya akan tampil berurutan ke bawah secara otomatis berkat CSS flexbox + @media.

Memahami Flexbox yang Digunakan

.main-container {
  display: flex;        /* aktifkan flexbox */
  flex-direction: column; /* default: kolom (untuk HP) */
  gap: 20px;
}
@media (min-width: 768px) {
  .main-container {
    flex-direction: row; /* di layar lebar: jadi baris (kolom-kolom berdampingan) */
  }
}

main  { flex: 3; } /* ambil 3 bagian dari ruang tersedia */
aside { flex: 1; } /* ambil 1 bagian dari ruang tersedia */

Artinya: main mendapat 75% lebar, sidebar mendapat 25% lebar.


Tahap 5 — Menambahkan Area Postingan (Blog1)

Ini tahap terakhir dan paling penting. Kita akan mengganti placeholder dengan <b:widget id='Blog1'> yang menampilkan postingan sungguhan.

⚠️ Perhatian: Widget Blog1 memang menghasilkan kode yang panjang. Tapi di tahap ini Anda sudah paham strukturnya, jadi tidak perlu khawatir.

Ganti seluruh kode dengan versi final berikut:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html>
<html b:css='false' b:layoutsversion='3'
  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'>

<head>
  <meta charset='utf-8'/>
  <meta content='width=device-width,initial-scale=1' name='viewport'/>
  <title><data:view.title.escape/></title>

  <b:skin><![CDATA[
    * { box-sizing: border-box; }
    body {
      font-family: sans-serif;
      margin: 0;
      padding: 0;
      background-color: #f4f4f4;
      color: #333;
    }
    .wrapper {
      max-width: 1200px;
      margin: 0 auto;
      padding: 20px;
    }

    /* === HEADER === */
    header {
      background: #2c3e50;
      color: #fff;
      padding: 30px 20px;
      margin-bottom: 20px;
      border-radius: 6px;
    }
    header a {
      color: #fff;
      text-decoration: none;
    }

    /* === LAYOUT TENGAH === */
    .main-container {
      display: flex;
      flex-direction: column;
      gap: 20px;
      margin-bottom: 20px;
    }
    @media (min-width: 768px) {
      .main-container {
        flex-direction: row;
      }
    }

    /* === AREA KONTEN UTAMA === */
    main {
      flex: 3;
      background: #fff;
      padding: 20px;
      border-radius: 6px;
    }

    /* === POSTINGAN === */
    .post {
      margin-bottom: 40px;
      padding-bottom: 40px;
      border-bottom: 1px solid #eee;
    }
    .post:last-child {
      border-bottom: none;
      margin-bottom: 0;
    }
    .post-title {
      font-size: 1.5em;
      margin: 0 0 8px 0;
    }
    .post-title a {
      color: #2c3e50;
      text-decoration: none;
    }
    .post-title a:hover {
      color: #e74c3c;
    }
    .post-meta {
      font-size: 0.85em;
      color: #888;
      margin-bottom: 14px;
    }
    .post-body {
      line-height: 1.7;
    }
    .post-labels {
      margin-top: 12px;
      font-size: 0.85em;
    }
    .post-labels a {
      background: #eaf2ff;
      color: #2980b9;
      padding: 2px 8px;
      border-radius: 12px;
      text-decoration: none;
      margin-right: 4px;
    }

    /* === NAVIGASI HALAMAN === */
    .blog-pager {
      display: flex;
      justify-content: space-between;
      margin-top: 20px;
      font-size: 0.9em;
    }
    .blog-pager a {
      background: #2c3e50;
      color: #fff;
      padding: 8px 16px;
      border-radius: 4px;
      text-decoration: none;
    }
    .blog-pager a:hover {
      background: #e74c3c;
    }

    /* === SIDEBAR === */
    aside {
      flex: 1;
      background: #fff;
      padding: 20px;
      border-radius: 6px;
    }
    aside h2, aside h3 {
      font-size: 1em;
      border-bottom: 2px solid #2c3e50;
      padding-bottom: 6px;
      margin-top: 0;
    }

    /* === FOOTER === */
    footer {
      background: #2c3e50;
      color: #ccc;
      padding: 20px;
      border-radius: 6px;
      text-align: center;
      font-size: 0.9em;
    }
    footer a {
      color: #aed6f1;
      text-decoration: none;
    }
  ]]></b:skin>
</head>

<body>
  <div class='wrapper'>

    <header role='banner'>
      <b:section class='header-section' id='header-section' maxwidgets='1' showaddelement='yes'/>
    </header>

    <div class='main-container'>

      <main id='main-content' role='main'>
        <b:section class='main-section' id='main-section' showaddelement='yes'>

          <b:widget id='Blog1' locked='false' title='Postingan Blog' type='Blog' version='2'>
            <b:widget-settings>
              <b:widget-setting name='showDateHeader'>false</b:widget-setting>
            </b:widget-settings>
            <b:includable id='main' var='top'>

              <!-- Loop semua postingan -->
              <b:loop values='data:posts' var='post'>
                <article class='post' expr:id='"post-" + data:post.id'>

                  <!-- Judul postingan -->
                  <h2 class='post-title'>
                    <a expr:href='data:post.url'><data:post.title/></a>
                  </h2>

                  <!-- Meta: tanggal & penulis -->
                  <div class='post-meta'>
                    <data:post.dateHeader/> &#8226; oleh <data:post.author/>
                  </div>

                  <!-- Isi postingan -->
                  <div class='post-body'>
                    <b:if cond='data:view.isPost'>
                      <!-- Di halaman postingan tunggal: tampilkan semua isi -->
                      <data:post.body/>
                    <b:else/>
                      <!-- Di halaman beranda: tampilkan ringkasan / snippet -->
                      <data:post.snippets/>
                      <a expr:href='data:post.url'>Baca selengkapnya &#8594;</a>
                    </b:if>
                  </div>

                  <!-- Label / kategori -->
                  <b:if cond='data:post.labels'>
                    <div class='post-labels'>
                      Label:
                      <b:loop values='data:post.labels' var='label'>
                        <a expr:href='data:label.url'><data:label.name/></a>
                      </b:loop>
                    </div>
                  </b:if>

                </article>
              </b:loop>

              <!-- Navigasi halaman (Lebih Baru / Lebih Lama) -->
              <div class='blog-pager'>
                <b:if cond='data:newerPageUrl'>
                  <a expr:href='data:newerPageUrl'>&#8592; Postingan lebih baru</a>
                </b:if>
                <b:if cond='data:olderPageUrl'>
                  <a expr:href='data:olderPageUrl'>Postingan lebih lama &#8594;</a>
                </b:if>
              </div>

            </b:includable>
          </b:widget>

        </b:section>
      </main>

      <aside id='sidebar' role='complementary'>
        <b:section class='sidebar-section' id='sidebar-section' showaddelement='yes'/>
      </aside>

    </div>

    <footer role='contentinfo'>
      <b:section class='footer-section' id='footer-section' showaddelement='yes'/>
    </footer>

  </div>
</body>

</html>

Cara Kerja Widget Blog1

Widget ini berisi tag-tag Blogger untuk menampilkan data dari database blog Anda:

Tag

Fungsi

<b:loop values='data:posts' var='post'>

Mengulang (loop) untuk setiap postingan yang ada

<data:post.title/>

Menampilkan judul postingan

<data:post.url/>

URL / link ke postingan

<data:post.dateHeader/>

Tanggal postingan

<data:post.author/>

Nama penulis

<data:post.body/>

Isi lengkap postingan

<data:post.snippets/>

Ringkasan/preview postingan (untuk beranda)

<b:if cond='data:view.isPost'>

Kondisi: apakah ini halaman postingan tunggal?

<b:loop values='data:post.labels'>

Loop untuk setiap label postingan

data:newerPageUrl

URL halaman postingan lebih baru

data:olderPageUrl

URL halaman postingan lebih lama


Ringkasan

Tahap

Yang Dilakukan

Hasilnya

1

Kerangka HTML dasar

Halaman terbaca, judul dari nama blog

2

Header + b:section

Area header gelap, bisa tambah widget nama blog

3

Footer + placeholder tengah

Blog punya kepala & kaki

4

Sidebar + flexbox layout

Dua kolom: konten & sidebar

5

Widget Blog1

Postingan asli tampil lengkap


Langkah Selanjutnya

Setelah template berjalan, Anda bisa mengembangkannya lebih lanjut:

  • Ubah warna — ganti nilai #2c3e50 dan #e74c3c dengan warna pilihan Anda

  • Ganti font — tambahkan Google Fonts di dalam <head>

  • Sempurnakan responsif — uji di berbagai ukuran layar

  • Tambah SEO — tambahkan meta description dan Open Graph tags

  • Dark mode — tambahkan CSS @media (prefers-color-scheme: dark)

  • Komentar — tambahkan widget komentar di bawah <data:post.body/>


Tutorial ini dibuat untuk pemula yang ingin memahami template Blogger dari dalam. Selamat bereksperimen!


Begini cara saya membuat template blogger mulai dari nol. Anda tertarik? Silahkan ikuti langkah-langkahnya. Copy-paste saja setiap tahap untuk melihat perubahannya.

Bagaimana pendapat Anda mengenai topik ini? Mari bagikan perspektif Anda di bawah!

User Feedback

Recommended Comments

There are no comments to display.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.