Cara Membuat Views dan Like Menggunakan Firebase

Cara Membuat Views dan Like Menggunakan Firebase
Get Started > Details
  • Details
  • Install

Deskripsi.

Views count merupakan metrik yang digunakan untuk mengukur seberapa sering halaman atau postingan yang diakses oleh pengunjung. dan Bottom Like mungkin merujuk pada elemen atau tombol "Like" yang ditempatkan di suatu postingan atau artikel yang bertujuan untuk meyampaikan renpon positif dari pengunjung.

Yang Minta kemarin.

Views Post V1.0.0

Menambahkan satuan rb(Ribu), jt(Juta), m(Miliar).

  • Letakkan kode ini di atas </head>.

    <script src="https://www.gstatic.com/firebasejs/8.3.0/firebase-app.js"></script>
    <script src="https://www.gstatic.com/firebasejs/8.3.0/firebase-database.js"></script>
  • Dan letakkan kode javascript dibawah diatas </body>.

    // Konfigurasi Firebase Anda
    var firebaseConfig = {
      apiKey: "xxxxxxxxxxx",
      authDomain: "xxxxxxxxxxx",
      databaseURL: "xxxxxxxxxxx",
      projectId: "xxxxxxxxxxx",
      storageBucket: "xxxxxxxxxxx",
      messagingSenderId: "xxxxxxxxxxx",
      appId: "xxxxxxxxxxx"
    };
    
    firebase.initializeApp(firebaseConfig);
    
    // Dapatkan ID post dari URL atau tempat lain
    var postId = document.querySelector('#viewsCount').dataset.id; // Ganti dengan ID post yang sesuai
    
    // Referensi ke path yang ingin Anda lacak (misalnya, "posts/{postId}/views")
    var viewsCountRef = firebase.database().ref('posts/' + postId + '/views');
    
    // Fungsi untuk menambah jumlah tampilan saat halaman dimuat
    viewsCountRef.transaction(function(currentViews) {
      // Menambah jumlah tampilan
      return (currentViews || 0) + 1;
    });
    
    // Memperbarui tampilan jumlah tampilan saat halaman dimuat
    viewsCountRef.on('value', function(snapshot) {
      var views = snapshot.val();
    
      // Konversi views lebih dari 1000 menjadi format "rb"
      if (views >= 1000000000) {
        var formattedViews = (views / 1000000000).toFixed(0) + "m";
        document.getElementById('viewsCount').textContent = formattedViews;
      } else if (views >= 1000000) {
        var formattedViews = (views / 1000000).toFixed(0) + "jt";
        document.getElementById('viewsCount').textContent = formattedViews;
      } else if (views >= 1000) {
        var formattedViews = (views / 1000).toFixed(0) + "rb";
        document.getElementById('viewsCount').textContent = formattedViews;
      } else {
        document.getElementById('viewsCount').textContent = views;
      }
    });
  • Pada firebaseConfig diatas kalian ganti dengan punya kalian.

    var firebaseConfig = {
      apiKey: "xxxxxxxxxxx",
      authDomain: "xxxxxxxxxxx",
      databaseURL: "xxxxxxxxxxx",
      projectId: "xxxxxxxxxxx",
      storageBucket: "xxxxxxxxxxx",
      messagingSenderId: "xxxxxxxxxxx",
      appId: "xxxxxxxxxxx"
    };
  • Untuk untuk mendapatkan Config Firebase kalian bisa melihat postingan Mengambil URL Firebase dan Config Firebase.

  • Dan letakan kode HTML ini di mana saja tapi harus di dalam postingan atau artikel.

    <div>Jumlah Tampilan: <span id="viewsCount" data-id="[kode_id]">0 Views</span></div>

    pada data-id kalian bebas ini dengan id apa saja dengan syarat tiap post tidak boleh sama. tapi kalian juga bisa menggunakan post id blogger yaitu data:post.id dan jadinya akan seperti ini.

    <div>Jumlah Tampilan: <span id='viewsCount' expr:data-id='data:post.id'>0 Views</span></div>
Referensi :
https://firebase.google.com/
https://id.quora.com/Apa-maksud-dari-simbol-k-dalam-penulisan-angka-ribuan-misal-10-000-10K
https://www.dimassetiawan.com/finance/153/arti-mio-dan-bio-istilah-mata-uang-untuk-valuasi-startup
*[-_-]*

Buttom Like Post V2.0.0

  • Letakkan kode ini di atas </head>.

    <script src="https://www.gstatic.com/firebasejs/8.3.0/firebase-app.js"></script>
    <script src="https://www.gstatic.com/firebasejs/8.3.0/firebase-database.js"></script>
  • Dan letakkan kode javascript dibawah diatas </body>.

    const firebaseConfig = {
      apiKey: "xxxxxxxxxxx",
      authDomain: "xxxxxxxxxxx",
      databaseURL: "xxxxxxxxxxx",
      projectId: "xxxxxxxxxxx",
      storageBucket: "xxxxxxxxxxx",
      messagingSenderId: "xxxxxxxxxxx",
      appId: "xxxxxxxxxxx"
    };
    
    firebase.initializeApp(firebaseConfig);
    const database = firebase.database();
    
    // Mendapatkan semua tombol "Like"
    const likeButtons = document.querySelectorAll('.like-button');
    
    // Menambahkan event listener ke setiap tombol "Like"
    likeButtons.forEach(button => {
      const dataId = button.getAttribute('data-id');
      const likeCount = button.querySelector('.like-count');
    
      // Mendapatkan jumlah like dari Firebase dan menampilkannya
      database.ref(`posts/${dataId}/likes`).on('value', snapshot => {
        const likes = snapshot.val() || 0;
    
        // Konversi likes lebih dari 1000 menjadi format "rb"
        if (likes >= 1000000000) {
          let likes_ = (likes / 1000000000).toFixed(0) + "m";
          likeCount.textContent = likes_;
        } else if (likes >= 1000000) {
          let likes_ = (likes / 1000000).toFixed(0) + "jt";
          likeCount.textContent = likes_;
        } else if (likes >= 1000) {
          let likes_ = (likes / 1000).toFixed(0) + "rb";
          likeCount.textContent = likes_;
        } else {
          likeCount.textContent = likes;
        }
      });
    
      // Menambahkan event click untuk menambahkan like
      button.addEventListener('click', () => {
        database.ref(`posts/${dataId}/likes`).transaction(currentLikes => {
          return (currentLikes || 0) + 1;
        });
      });
    });
  • Pada firebaseConfig diatas kalian ganti dengan punya kalian.

    const firebaseConfig = {
      apiKey: "xxxxxxxxxxx",
      authDomain: "xxxxxxxxxxx",
      databaseURL: "xxxxxxxxxxx",
      projectId: "xxxxxxxxxxx",
      storageBucket: "xxxxxxxxxxx",
      messagingSenderId: "xxxxxxxxxxx",
      appId: "xxxxxxxxxxx"
    };
  • Untuk untuk mendapatkan Config Firebase kalian bisa melihat postingan Mengambil URL Firebase dan Config Firebase.

  • Dan letakan kode HTML ini di mana saja tapi harus di dalam postingan atau artikel.

    <div class="like-button" data-id="[kode_id]">
      <div class="like-count">0</div> Like
    </div>

    Pada data-id kalian bebas ini dengan id apa saja dengan syarat tiap post tidak boleh sama. tapi kalian juga bisa menggunakan post id blogger yaitu data:post.id dan jadinya akan seperti ini.

    <div class="like-button" expr:data-id="data:post.id">
      <div class="like-count">0</div> Like
    </div>
Referensi :
https://firebase.google.com/
https://id.quora.com/Apa-maksud-dari-simbol-k-dalam-penulisan-angka-ribuan-misal-10-000-10K
https://www.dimassetiawan.com/finance/153/arti-mio-dan-bio-istilah-mata-uang-untuk-valuasi-startup
*[-_-]*

Comments

  1. bang Kodeku outputnya aneh,
    10.000 output jadi 10.0K, yang kuharapkan itu 100K, tetapi ketika ada angka 1-9 diangka decimal nya.

    contoh
    10.100 menjadi 10.1K
    function NFrtBookmark(nZeroBook) {
    if (nZeroBook >= 1000000000) {
    return (nZeroBook / 1000000000).toFixed(1) + 'Miliar';
    } else if (nZeroBook >= 1000000) {
    return (nZeroBook / 1000000).toFixed(1) + 'Juta';
    } else if (nZeroBook >= 1000) {
    return (nZeroBook / 1000).toFixed(1) + 'K';
    } else {
    return nZeroBook.toString();
    }
    }
    console.log(NFrtBookmark(10000));

    ReplyDelete
    Replies
    1. angka 0 harus hilang dan angka 1-9 gak hilang

      100.000 jadi 100K
      10.000 jadi 10K

      100.100 jadi 100.1K
      10.100 jadi 10.1K

      gimana caranya ya?

      Delete
    2. mungkin seperti ini function NFrtBookmark(nZeroBook) {
      if (nZeroBook === 0) {
      return 0;
      } else if (nZeroBook >= 1000000000) {
      const formatted = (nZeroBook / 1000000000).toFixed(1);
      return formatted.endsWith('.0') ? formatted.slice(0, -2) + 'M' : formatted + 'M';
      } else if (nZeroBook >= 1000000) {
      const formatted = (nZeroBook / 1000000).toFixed(1);
      return formatted.endsWith('.0') ? formatted.slice(0, -2) + 'JT' : formatted + 'JT';
      } else if (nZeroBook >= 1000) {
      const formatted = (nZeroBook / 1000).toFixed(1);
      return formatted.endsWith('.0') ? formatted.slice(0, -2) + 'K' : formatted + 'K';
      } else {
      return nZeroBook;
      }
      }

      console.log(NFrtBookmark(0)); // Output: 0
      console.log(NFrtBookmark(1000)); // Output: 1K
      console.log(NFrtBookmark(1100)); // Output: 1.1K
      console.log(NFrtBookmark(10000)); // Output: 10K
      console.log(NFrtBookmark(10500)); // Output: 10.5K
      console.log(NFrtBookmark(100900)); // Output: 100.9K
      console.log(NFrtBookmark(100000)); // Output: 100K
      console.log(NFrtBookmark(100100)); // Output: 100.1K
      console.log(NFrtBookmark(1000000)); // Output: 1JT
      console.log(NFrtBookmark(1100000)); // Output: 1.1JT

      Delete
    3. yep seperti itu, berhasil. makasih bang

      Delete
  2. Trima kasih @Yukine
    Codenya udah kucoba

    ReplyDelete
  3. Koreksi.
    Kurang expr di tombol like: data-id="data:post.id"
    Untuk like button tidak ada event. Bisa tolong cek apa masalahnya.
    Demo

    ReplyDelete
    Replies
    1. ok sorry baru bisa balas. saran saya jangan mengunakan console clear dong atau sejenisnya supaya lebih mudah untuk mendetaksi kesalahan/error pada script.

      sekilas saya lihat kamu mengunakan 2 const yang sama yaitu const firebaseConfig = {
      apiKey: "AIzaSyCZHUf4wIUY5Sl-OTrG9ZwqETxzX9Z2CNQ",
      authDomain: "yugen-c0fa7.firebaseapp.com",
      databaseURL: "https://yugen-c0fa7-default-rtdb.firebaseio.com",
      projectId: "yugen-c0fa7",
      storageBucket: "yugen-c0fa7.appspot.com",
      messagingSenderId: "147562101010",
      appId: "1:147562101010:web:8cc1e5bc7798c1a1065bcb"
      };
      kamu bisa mengunakan salah satu saja. seperti ini <script>/*<![CDATA[*/
      // Konfigurasi Firebase Anda
      const firebaseConfig = {
      apiKey: "AIzaSyCZHUf4wIUY5Sl-OTrG9ZwqETxzX9Z2CNQ",
      authDomain: "yugen-c0fa7.firebaseapp.com",
      databaseURL: "https://yugen-c0fa7-default-rtdb.firebaseio.com",
      projectId: "yugen-c0fa7",
      storageBucket: "yugen-c0fa7.appspot.com",
      messagingSenderId: "147562101010",
      appId: "1:147562101010:web:8cc1e5bc7798c1a1065bcb"
      };

      firebase.initializeApp(firebaseConfig);
      // database untuk like Buttom
      const database = firebase.database();

      //======================================
      // Views count
      //======================================

      // Dapatkan ID post dari URL atau tempat lain
      var postId = document.querySelector('#viewsCount').dataset.id; // Ganti dengan ID post yang sesuai

      // Referensi ke path yang ingin Anda lacak (misalnya, "posts/{postId}/views")
      var viewsCountRef = firebase.database().ref('posts/' + postId + '/views');

      // Fungsi untuk menambah jumlah tampilan saat halaman dimuat
      viewsCountRef.transaction(function(currentViews) {
      // Menambah jumlah tampilan
      return (currentViews || 0) + 1;
      });

      // Memperbarui tampilan jumlah tampilan saat halaman dimuat
      viewsCountRef.on('value', function(snapshot) {
      var views = snapshot.val();

      // Konversi views lebih dari 1000 menjadi format "rb"
      if (views >= 1000000000) {
      var formattedViews = (views / 1000000000).toFixed(0) + "m";
      document.getElementById('viewsCount').textContent = formattedViews;
      } else if (views >= 1000000) {
      var formattedViews = (views / 1000000).toFixed(0) + "jt";
      document.getElementById('viewsCount').textContent = formattedViews;
      } else if (views >= 1000) {
      var formattedViews = (views / 1000).toFixed(0) + "rb";
      document.getElementById('viewsCount').textContent = formattedViews;
      } else {
      document.getElementById('viewsCount').textContent = views;
      }
      });

      //======================================
      // Kode Like Buttom
      //======================================

      // Mendapatkan semua tombol "Like"
      const likeButtons = document.querySelectorAll('.like-button');

      // Menambahkan event listener ke setiap tombol "Like"
      likeButtons.forEach(button => {
      const dataId = button.getAttribute('data-like');
      const likeCount = button.querySelector('.like-count');

      // Mendapatkan jumlah like dari Firebase dan menampilkannya
      database.ref(`posts/${dataId}/likes`).on('value', snapshot => {
      const likes = snapshot.val() || 0;

      // Konversi likes lebih dari 1000 menjadi format "rb"
      if (likes >= 1000000000) {
      let likes_ = (likes / 1000000000).toFixed(0) + "m";
      likeCount.textContent = likes_;
      } else if (likes >= 1000000) {
      let likes_ = (likes / 1000000).toFixed(0) + "jt";
      likeCount.textContent = likes_;
      } else if (likes >= 1000) {
      let likes_ = (likes / 1000).toFixed(0) + "rb";
      likeCount.textContent = likes_;
      } else {
      likeCount.textContent = likes;
      }
      });

      // Menambahkan event click untuk menambahkan like
      button.addEventListener('click', () => {
      database.ref(`posts/${dataId}/likes`).transaction(currentLikes => {
      return (currentLikes || 0) + 1;
      });
      });
      });
      /*]]>*/</script>

      Delete
    2. Ok, gpp.
      Gk sabar lihat tema aurorasekai, tema paling unik tahun 2024 mendatang.

      Delete
    3. tema ini memang unik tapi ada PR yang saya pikirkan yaitu Custom Episode List. Hhhhhhh masih binggung cara membuatnya tapi buat tampil 1 Season kemungkinan bisa saya buat tapi misal lebih 1 Season seperti ini https://aurorasekai.com/tonikawa-istri-idaman saya masih binggung.

      Delete
    4. Ok, besok aku post solusinya.
      Bukan solusi sempurna, masih perlu diperbaiki.

      Delete
    5. Kira2 seperti ini. Siapa tau bisa jadi inspirasi buat bikin sendiri.
      source code Season 1 doang juga gpp menurukut, soalnya banyak user yg bikin post terpisah untuk season 2.

      Delete
    6. ok terimakasih atas kodenya ini seperti hexanime kan, tapi saya ingin buat lebih simpel lagi dan mudah untuk digunakan. ya karena masih banyak juga yang kurang paham dengan array salah sedikit saja array tidak bisa dibaca misal salah petik(") koma(,) dan sebagainya. ini bocoran untuk pemangilan nya nanti <div class="episode_list_aurorasekai" data-title="Season 1" data-label="Data A Live">loading...</div>
      <!--
      data-title untuk judul kiri seperti season
      data-label untuk memanggil feel dengan label yang ditentukan
      -->
      ya walau masih belum selesai juga sih

      Delete