2201 – 2319 of 2319
Halaman tanya jawab tentang topik umum, seputar template atau sharing pengetahuan tentang blogger.
#ads
#21
hello min , i want to learn about making custom headers and footers and landing apge on home and homepage on custom url like hexanime for any blogger theme . can you please help me ?
Anticipating a positive response .
Thanking You ,
Anix Themes
#27
I know, it not fun to make.
Learn how to use framework, it speed up your development time.
The quickest way to get started working with Flowbite is to include the CSS and JS into your project via CDN.
Paste above head <link href="https://cdn.jsdelivr.net/npm/flowbite@3.1.2/dist/flowbite.min.css" rel="stylesheet" /> Paste above body <script src="https://cdn.jsdelivr.net/npm/flowbite@3.1.2/dist/flowbite.min.js"></script> Next copy navbar code, chose any navbar you like: https://flowbite.com/docs/components/navbar/ or footer https://flowbite.com/docs/components/footer/ You can use an AI assistant like ChatGPT to help you get through this difficulty.
#30
thank you min , yeah sure and i am working now on a new "Anime Streaming project" using base theme v12 ....

demo : https://anixplay-bt.blogspot.com/

cloning : https://github.com/5rahim/seanime/blob/main/docs/images/4/anime-entry-torrent-stream--sq.jpg

just came cross some issues like the layout is bit changed and getting issues in styling . if you are free btw can you help me with some aspects like blog1 grid layout and post series layout only ?

Anticipating a positive response .
Thanking You ,
Anix
#31
Sorry, i still working on my theme.
In this case you can use b:tag with condition. Replace: <b:loop index='i' values='data:posts' var='post'>
<b:include data='post' name='postCommentsAndAd'/>
</b:loop>
With: <b:tag class='grid grid-cols-[repeat(auto-fill,minmax(230px,1fr))] gap-4' cond='data:view.isMultipleItems' name='div'>
<b:loop index='i' values='data:posts' var='post'>
<b:include data='post' name='postCommentsAndAd'/>
</b:loop>
</b:tag>
#38
bang bisa bantu javascript?

aku ingin memasang post author blogger tapi gagal terus.

// buat ambil data penulis
const post = posts[originalPosition]; // Dapatkan post dari data yang sesuai
const author = post.author ? post.author[0].name.$t : 'Unknown'; // data penulisnya

const contentRow = document.createElement('tr');
contentRow.classList.add('post-content');
contentRow.innerHTML = `
<td colspan="4">${content}</td> <!-- Konten utama -->
<td colspan="1" class="author-cell"><strong>Penulis:</strong> ${author}</td> <!-- Author di kolom Rilis -->
`;



hasilnya Unknown terus.
gimana caranya biar dapetin post authornya?
#40
Coba ini: // buat ambil data penulis const post = posts[originalPosition]; // Dapatkan post dari data yang sesuai
const author = post.author ?
(Array.isArray(post.author) ? post.author[0].name.$t : post.author.name.$t)
: (post.entry && post.entry.author ? post.entry.author.name.$t : 'Unknown');

const contentRow = document.createElement('tr');
contentRow.classList.add('post-content');
contentRow.innerHTML = `
<td colspan="4">${content}</td>
<td colspan="1" class="author-cell"><strong>Penulis:</strong> ${author}</td>
`;
Entah bisa atau engk, karena ini buatan ai.
Coba baca dokumetasi ini: [audiralog - Menggunakan Blogger JSON Feed API]
#59
Sequential loading from the feed source takes a long time. However, I have a method that can load thousands of chapters from the data feed in under 3 seconds.

You can refer to the following article: https://emissionhex.blogspot.com/2025/03/demo-onetap-manga-100-theme-of-story.html
#60
gini?

const postContainer=document.getElementById("post-container");const label=postContainer.getAttribute("data-label");const feedUrl=startIndex=>`/feeds/posts/default/-/${label}?alt=json&start-index=${startIndex}&max-results=150`;let allChapters=[],currentIndex=-1;function getCurrentPostLink(){return window.location.href;}async function fetchChapters(startIndex){try{const response=await fetch(feedUrl(startIndex));const data=await response.json();return data.feed.entry.map(entry=>({title:entry.title.$t,link:entry.link.find(link=>link.rel==="alternate").href,thumbnail:entry.media$thumbnail?entry.media$thumbnail.url:"",published:new Date(entry.published.$t)}));}catch(error){console.error("Error fetching chapters:",error);return[];}}async function loadAllChapters(){try{const initialResponse=await fetch(feedUrl(1));const initialData=await initialResponse.json();const totalResults=parseInt(initialData.feed.openSearch$totalResults.$t);allChapters.push(...initialData.feed.entry.map(entry=>({title:entry.title.$t,link:entry.link.find(link=>link.rel==="alternate").href,thumbnail:entry.media$thumbnail?entry.media$thumbnail.url:"",published:new Date(entry.published.$t)})));const startIndexes=[];for(let i=151;i<=totalResults;i+=150){startIndexes.push(i);}const remainingChapters=await Promise.all(startIndexes.map(startIndex=>fetchChapters(startIndex)));remainingChapters.forEach(chapters=>allChapters.push(...chapters));const currentPostLink=getCurrentPostLink();currentIndex=allChapters.findIndex(chapter=>chapter.link===currentPostLink);if(currentIndex===-1){currentIndex=0;}updateButtonVisibility();createToC(allChapters);}catch(error){console.error("Error loading all chapters:",error);}}function createToC(filteredPosts){const tocItems=document.getElementById("toc-items");tocItems.innerHTML=filteredPosts.map((post,i)=>`<div class="toc-item"><img src="${post.thumbnail}" alt="Thumbnail" class="toc-thumbnail"><a href="#" onclick="jumpToPost(${i})" class="toc-link">${post.title}</a></div>`).join("");}function jumpToPost(index){currentIndex=index;const postLink=allChapters[currentIndex].link;window.location.assign(postLink);}function updateButtonVisibility(){document.getElementById("prev-btn").disabled=currentIndex<=0;document.getElementById("next-btn").disabled=currentIndex>=allChapters.length-1;}function navigatePost(step){currentIndex+=step;if(currentIndex<0)currentIndex=0;if(currentIndex>=allChapters.length)currentIndex=allChapters.length-1;updateButtonVisibility();const postLink=allChapters[currentIndex]?.link;if(postLink){window.location.assign(postLink);}else{console.warn("Tidak ada tautan untuk postingan ini.");}}document.getElementById("prev-btn").addEventListener("click",()=>{navigatePost(-1);});document.getElementById("next-btn").addEventListener("click",()=>{navigatePost(1);});document.getElementById("toc-btn").addEventListener("click",()=>{const tocList=document.getElementById("toc-list");tocList.classList.add("open");});document.getElementById("close-btn").addEventListener("click",()=>{const tocList=document.getElementById("toc-list");tocList.classList.remove("open");});loadAllChapters();
#64
The common method people often use is sequential loading. Each time the number of posts in the feed equals max-results, the system will call the next start-index. However, this approach is very time-consuming when dealing with a large number of posts.

This new method is my own idea. If you look closely, you’ll notice that the openSearch$totalResults parameter represents the total number of posts across the entire system, unrestricted by max-results. By simply using this value to set up a for loop, determining the necessary start-index values, and leveraging Promise.all for parallel fetching, we can significantly optimize loading speed. This is the best possible method, so there will be no better approach.
#66
For a long time, I couldn't understand what you meant.

In my new version, I've added session storage to improve the speed of navigating between chapters.

Now, after reading your second comment, I understand.
Essentially, we are reusing the feed repeatedly all across the theme?

I'm going to try to create a unified feed that can be accessed by all feed themes.
This is a big project, I'm not sure if I'll succeed.
#67
Using "session storage" is not a good idea because it has a limit of about 5–10MB.

My idea is to use an array:
let ChapterCache = [];
to store the chapters.

We will take the id (post ID) of the current chapter and compare it within ChapterCache to determine its position.

When the user clicks "next/prev," instead of reloading the page, we will fetch the data from ChapterCache. We will reuse the existing page structure, only changing the title and content (similar to a single-page application but limited to navigating between chapters).

Using history.pushState, we update the URL as if the user is accessing a new page and push the state into the browser history. This allows the user to use the back/forward buttons as usual.

Here is a demo:
Demo page: [Link]
Demo video: [Link]

This is currently the best approach, and there is certainly no better alternative. Using "session storage" is not just a bad idea—it’s terrible. With this approach, resource usage is minimized because the feed is only loaded once, as we reuse both the feed data and the page structure.
#74
Jika pakai blogger conditional tag, Cara identifikasi url memiliki query tertentu bagaimana ya?
misalnya membuka https://blogger.blogspot.com/?m=1&u=kataKunci
<!-- sudah pakai ini tapi tidak bisa -->
<b:if cond='data:blog.url has "u=kataKunci"'>
<b:if cond='data:blog.url in "u=kataKunci"'>
<b:if cond='data:blog.url includes "u=kataKunci"'>
#76
Yes, it may be true, as a beginner I also had difficulty understanding it, until it took me 3 days to learn about retrieving data in batch using [promiseAll].

The result is quite satisfying, as a start for me 🥳 [Link].

I think it's better to make an article, I need to understand how it works further.
Reading it through code is a bit difficult.
#79
Good, but using session storage has a 5MB limit. So, we'll use an array to store the chapters and reuse it multiple times when navigating next/prev. Since the array is stored in RAM, it's more suitable for handling large JSON data that exceeds the 5MB limit.
#84
Using IndexedDB can be quite complicated when it comes to managing series, updating data, and optimizing performance. If you're storing thousands of series and a bug occurs, fixing it can be a real headache :))

To handle this properly, you need a robust system with optimized algorithms. For example, binary search and other powerful algorithms can be applied to speed up queries.
However, to keep things simple, we can just use a JavaScript array to temporarily store the chapters – and that's more than enough!
Demo Storing chapters in an array: [Link]
#85
If we only rely on variables to store data as an array, it is difficult to do because our website needs to load every time we change pages.

This method is only good on Single page.

Recently I tested indexedDB with 12000 data, The results are quite good even though when there is a new post or post update it takes a little longer, about 5-9seconds to update the post.
#99
I initially thought it would load everything.
However, you should use a Web Worker to prevent lag on the main thread when loading Series data into IndexedDB.
Additionally, there are several major challenges, such as updating posts, optimizing resources, and bandwidth efficiency.
There's a similar site that also uses IndexedDB for storage across the entire platform: https://truyendex.com/nettrom
#102
kira-kira berat gak nih bang?
Baca manga : [Demo]
Baca novel : [Demo]

Untuk baca manga pake navigasi dinamis bisa dengan cara klik gambar dan navigasi keyboard jadi enak mau di baca di pc atau mobile apalagi fokus ke manganya.

Untuk baca novel pake highlight teks jadi enak kalo pake text to speech.

untuk baca novel masih agak was-was soalnya itu merubah struktur html ketika ada higlight teks jadi takutnya bikin yang perangkatnya biasa aja jadi lag.
#103
Ringan. Recomended.
Seharusnya seperti ini post chapter, temaku sudah ketingalan zaman.
Makanya, kedepannya nanti temaku pakai cara ini.

Aku gk terlalu minat dengan text to speech.
Tapi berguna untuk orang yg punya disabilitas.

Menurutku gk akan berdampak pada peformace.
#104
Hello guys. I don't speak your language, so i will speak in english. I would like to know how to use the "random post" field. I labeled some works as "completed", as it is marked in the field, but the works did not appear, this part just kept loading. What should I do to make it work?
#110
untuk menghilangkan postingan tertentu di blog1 biasanya menggunakan apa?
saya pake ini:
<b:loop index='i' values='data:posts' var='post'>
<b:if cond='data:post.labels'>
<b:if cond='!(data:post.labels any (l =&gt; l.name == &quot;Chapter&quot;))'>
<b:include data='post' name='postCommentsAndAd'/>
</b:if>
</b:if>
</b:loop>

ternyata kalo pake itu yang di hilangkan juga masih termasuk postingannya, jadi kalo di set 9 post, postingan terbaru yang di hilangkan tetap di hitung, di homepage jadinya cuman ada 8 postingan.
2201 – 2319 of 2319

Forum rules
You can use English or Indonesian


image quote pre code