Hiyo, I've been having fun working on my other sites over the past week, and one thing I finally got around to trying was implementing zoneRSS on one that uses Zonelets. This was a bit of a task because I already had posts there, and zoneRSS has no simple way to pull historic posts into the RSS feed. So I did it manually, and will explain how in this post.
Zonelets & zoneRSS explainer
If you are unfamiliar Zonelets is a popular html blogging codebase and set of themes (that I use here also) which once you know it, you recognize it everywhere on Neocities and related site hosts. zoneRSS is a supplemental bit of code, designed for use with Zonelets, that does the following:
- generates an RSS feed for your site, as well as a feed.html page (essentially an in-page feed reader that's only subscribed to your site)
- redirects Zonelets' 'post list' to pull from that RSS feed (and not the manually entered 'post array')
- allows you to create new html and/or RSS posts in browser (on the feed page itself)
I think this makes posting with Zonelets easier, especially for beginners not having to manually update the post array every time, and the RSS feed is a nice bonus. The in-browser post editor/creator isn't for everyone though, even I prefer using local templates in text editors and uploading them when ready (which to be fair, you could still do and copy/paste into the zoneRSS editor).
The historic/existing posts problem
The intended use of zoneRSS seems to be replacing the Zonelets 'archive.html' page with the zoneRSS 'feed.html' page, but if you have a history of posts made with Zonelets already you have a problem. You are able to add your old posts to a 'Historic Posts Array' in the zoneRSS code, but they won't appear on the RSS feed, and by extension will be absent from the feed.html page. The historic posts will only appear on the archive.html page, which is just the output of Zonelets' 'post list' that will also now contain any newer posts made with zoneRSS. This means you can't really put the 'postlistdiv' code underneath the feed code, as it will show doubles of any newer posts.
The solutions to this problem seem to be:
- just use the archive.html page still, and have zoneRSS as a means for future posts to be in an RSS feed
- find some combination of the archive.html and feed.html pages that works for you, maybe old posts on the archive, and new zoneRSS posts on the feed?
- manually add your old posts to the RSS feed one at a time
The manually adding posts solution
I chose to take up the latter of the previously mentioned solutions because I wanted every post in full text on the RSS feed, so people can read as they wish or backup/keep if they wanted (posts typically download locally in feed readers). This solution gets much more time consuming with the more posts you have, if you are/were considering zoneRSS and already have a Zonelets blog with posts, it would benefit you to do this sooner rather than later. You also should skip the step in the zoneRSS manual that says to add your posts to the 'historic posts array' as this will make them double up in the archive.html page (if you intend to still use that), and you will be adding them manually to the new system anyway.
While following the zoneRSS manual, you will generate your RSS feed for the first time. From that you have the template with which to add posts. Below is an example of the code, anything in italics will be specific to you/r site, and everything between the 'item' tags is an individual RSS feed post:
<item>
<title>post title</title>
<description>
<![CDATA[ <p>html content of post within the CDATA tag brackets</p> ]]>
</description>
<pubDate>Sat, 28 Feb 2026 00:00:00 +0000</pubDate>
<link>https://example.com/posts/examplepost.html</link>
<guid isPermaLink="false">https://example.com/feed.xml#0</guid>
</item>
If you copy that block from your own RSS feed generated with zoneRSS, it will have your site's address between the link tags and the guid tags. Which means that for each individual post you will have to copy and paste in, or otherwise manually enter the following:
- the title of your post in the 'title' tags
- the full html text content of your post between the 'CDATA' tag brackets, which are within the 'description' tags. If you are copy/pasting these from existing Zonelets posts; everything below '<h4 id="postDate"></h4>' and above '<div id="nextprev"></div>'
- the correct date in between the 'pubdate' tags. This is optional, you can just use the current date and a random time like 00:00:00 in my example above if you are posting a backlog. The date/time format MUST follow the RFC 822 syntax though if you enter/change them manually.
- the link to your post between the 'link' tags, this is easier if you copy/paste because it has to be precise and Zonelets post names are hard to remember (YYYY-MM-DD-post-title) and your site's URL should already be there up until the /posts/... section.
- the number of the post in your feed, after your feed URL, in between the 'guid' tags. This effects the order that posts are displayed on the feed.html page (and in feed readers). In a pre-generated zoneRSS feed this should already have your site's feed URL, followed by '#0' for the first post. You must remember to increase the number by one with each post (#0-#9 use single digits btw)
- repeat the above for every individual post, and paste each post (everything including the 'item' tags) above the last, so post #1 above post #0 and so on.
If you only have a few posts, this should be pretty quick! I had 26 posts, and at one point almost lost all the work by not saving and nearly became the joker, but it took about an hour overall. Once complete, copy/paste the whole feed.xml file's text through an RSS validator to see if it worked, then you can upload it! After this point the manually edited feed should show up corrently in; the feed.html page, the archive.html page (that's now pulling posts from the feed instead of the old Zonelets post array), and you can use zoneRSS as intended by creating new html posts and/or RSS posts in the feed.html page's editor.
Beyond this, I will also note (because it isn't explicitly mentioned in the zoneRSS manual) that the template zoneRSS uses for creating html posts is the one that comes with Zonelets (posts/2020-11-10-Post-Template.html). You can redirect it to a different template in the script.js, but that didn't work properly for me. It may need text in the <p> tags to replace, or it may be set up specifically for the text in the Zonelets post template, idk and I cbf working it out, just keeping that template around was easier (redownload it if you need).
Conclusion
This mess worked for me in this situation, but I am typically someone who slogs through an inefficient solution for a desired end goal if other means are outside of my ability. I'm sure I could 'just' create some other code or script to do this, but that would probably take me days-weeks to learn and struggle with, as opposed to an hour of manual data entry ¯\_(ツ)_/¯. I haven't implemented this on my personal site here, because I already have a setup for updating my RSS feed using RuSShdown. I wrote about that process in another post that might be more useful if you don't use Zonelets/zoneRSS :)
Thanks for reading!