Notes on creating a small test LMS with limited functionality but free hosting, using a Blogger theme (template)

Related previous posts
11:23, 01 January 2026

A few days back, I had created a blog - ravilms.blogspot.com - to test out "LMS Education" third-party Blogger theme, https://lms-education.blogspot.com/. For more about it, search for 'Started exploring "LMS EDUCATION" Blogger template - free version' in this post of mine.

I followed the instructions of uploading the "LMS Education" (LMSEd) theme/template using Restore theme command of Blogger Dashboard UI, into ravilms blog. With that the basic LMSEd theme functionality came into play but while https://lms-education.blogspot.com/ has courses and lessons demo data set up, ravilms did not have any data.

I then created two dummy course posts with a lesson each. The key points I followed were:
  • The course posts had to have the label Courses.
  • The lessons posts would have lesson content but no label
  • The course posts content linked to appropriate lesson posts.
With this basic setup, the Courses category links were listing the course pages correctly.

There were many gadgets on the blog which had to be either dropped or set up properly with images and text description like Header hero image, Campus, Testimonials, Videos etc. (the lms-education demo page shows them). 

At this stage, I felt I should get a better understanding of the code of the LMSEd theme. That resulted in a lot of discussion with ChatGPT about Blogger theme code-level customization and associated learning in general and also getting a very top-level view of approach taken in LMSEd theme. After that, I feel that if I deploy a simple LMS site with LMSEd theme then if there are some bugs, I will find it very difficult to fix them. There also seems to be some license issue related to commercial use as the license in the theme code for the free version, is limited to non-commercial usage.

So I decided to step back from considering using "LMS Education" third-party theme for my test LMS exploration.

I feel I should explore using Google provided Blogger themes like Contempo Light and doing some customization myself in this test LMS exploration.

For that, I wanted to see if I am able to remove the "LMS Education" theme gadgets/widgets from my ravilms blog and reuse the few dummy posts I have created with Contempo Light blog.
...

Me: I have a few tests posts in the blog. I don't want to recreate them in a new blog. How do I copy over these test posts WITHOUT the theme and gadgets?
...
Me: ... Now Google only provides a takeout mechanism will all Blogger data (all blogs of mine). And in that it has a feed.atom file and a there-layouts.xml file besides 2 or 3 other files.

CG was not able to give a good answer.


To import feed.atom or .xml files of your post and comments:

Sign in to Blogger.
At the top left, click the blog you want to import content into.
In the left menu, click Settings.
Under "Manage Blog,” click Import Content and then Import.
If you don't want to automatically publish the imported content, turn off Automatically, publish all imported posts and pages.
Select the feed.atom or .xml file you want to import from your computer.
Click Open.
=========

The above implies that I should be able to import only the feed.atom file which as per Google Takeout -> Blogger formats, has:
The posts, pages and comments that make up a blog. For blogs that you are an admin of, you can export all posts, pages and comments. For other blogs, you can only export the posts, pages and comments that you are the author of.
-----------

The theme XML is a different file in the backup which as per Google Takeout -> Blogger formats, has:
The theme for a blog. ... As it appears in blogger.com theme editor
-----

So it seems that only the theme XML file will have the gadgets of the theme. Using feed.atom as the input file to restore, may import only posts, pages and comments and not gadgets and other parts of  the theme.

The problem is that Google Takeout provides option to only backup all blogs and not a single blog. As I have some blogs with many posts, the download size of only Blogger data comes to around 800 MB. So I wanted to see if there was some other way to remove LMSEd theme related stuff from my ravilms blog.
--------

For my test blog - ravilms.blogspot.com:
Tried deleting entire theme XML file and saving it. Blogger seems to simply restore old theme contents!
...
[Related CG chat: Blogger Initialize Theme]
Me: What if I copy paste a Contempo Light theme from another blog of mine which has bare minimum changes to the theme, and overwrite the theme of my ravilms.blogspot.com blog. that should make all "LMS Education" them gadgets disappear. .... The manual process of deleting these gadges from Blogger Dashboard is tedious and so I want to avoid that.

CG: Short answer: No—copy-pasting a “clean” Contempo Light theme XML from another blog will not make the LMS Education gadgets disappear.
It will change the template, but the gadgets will remain and will be reattached wherever the new theme exposes sections.
...

Me: Also some blog metadata which is specific to a particular blog will get copied over and will not match the blog to which I am applying it.

CG: Yes — that concern is valid, and it is another strong reason why copying a theme XML wholesale from one blog to another is not a safe or clean operation, especially in Blogger.
...

Me: Maybe I should view the theme HTML, identify the "LMS Education" widget sections and delete only those parts. Hopefully that will make associated gadgets go away from Layout OR will Blogger reattach (recreate) them in theme file?

CG: ...

Short answer

  • Deleting “LMS Education” widget sections from the theme HTML will not delete the associated gadgets.

  • Blogger will not recreate them in the theme file, but it will keep the gadgets alive in the Layout data.

  • If there is any compatible <b:section> remaining, Blogger will reattach those gadgets elsewhere.

  • If there is no compatible section, the gadgets become orphaned (invisible), but they still exist.

So this approach does not truly remove them; it only changes where (or whether) they render.
...

Me: Hmm. So the safe way to do it is to manually delete them from Blogger Dashboard -> Layout.

CG: Yes. Given all the constraints you have identified, that statement is correct.

If you want to keep:

  • The same blog

  • The existing test posts

  • The official Contempo Light theme

  • Zero risk of metadata leakage

  • Zero reliance on undocumented behavior

then manually deleting the gadgets from Dashboard → Layout is the only fully safe and deterministic method. [Ravi: Not a fully accurate answer I think, as I have already mentioned earlier in this post that Google support says that one can restore or import only the feed.atom file of a backup which should exclude the theme and gadgets/widgets.]
...
------------

I have started manually deleting gadgets which seem to be LMS Education template/theme related, using Blogger Dashboard → Layout.
It got over quite quickly - not as time consuming as I thought it would be. 
Now my blog does not show any of the "LMS Education" theme gadgets in the blog display. The blog theme HTML file also does not show "LMS Education" theme widgets/gadgets.

Me: BTW what is the difference between Blogger gadget and widget? Are they the same, except that Blogger Dashboard UI refers to them as gadgets?

CG: Short answer: Yes — in Blogger, “gadget” and “widget” refer to the same thing.

The difference is largely terminological and historical, not functional.

Below is the precise breakdown so you have a clean mental model.


1. Official Blogger terminology

In the Blogger Dashboard UI

  • Google consistently uses the term Gadget

    • Layout → Add a Gadget

    • Remove Gadget

  • This is the user-facing term

In Blogger theme XML

  • The exact same entities are referred to as Widgets

    • <b:widget>

    • <b:includable>

    • <b:section maxwidgets="…">

So:

Gadget (UI) = Widget (theme XML)

They are two names for the same underlying object.


2. Why two different terms exist (historical context)

  • Early Blogger documentation and internal APIs used widget

  • When Google introduced the Layout UI for non-technical users:

    • “Widget” was considered too technical

    • “Gadget” was chosen as a friendlier term

The codebase, however, retained the original naming.

That is why:

  • XML uses <b:widget>

  • UI uses “Gadget”


3. Functional equivalence

There is no functional distinction between:

  • A “Blogger gadget”

  • A “Blogger widget”

Both:

  • Are stored in the layout database

  • Have a unique ID

  • Are bound to a <b:section>

  • Render via <b:widget> templates

  • Can be HTML/JS, Feed-based, or system-provided


4. Why you sometimes see both terms mixed

You may encounter:

  • Older blog posts saying “widget”

  • Blogger Help using “gadget”

  • Theme authors using “widget”

  • JavaScript referencing widget IDs

This is normal and not a sign of different objects.


5. Practical guidance for future work

For clarity:

  • When thinking about behavior or architecture
    → Use widget (matches XML and internal logic)

  • When navigating Blogger UI
    → Use gadget (matches the dashboard)

But always remember they are identical.


6. One subtle but useful nuance

While the terms are synonymous, the context matters:

  • “Gadget” implies:

    • User-added

    • Layout-managed

  • “Widget” in XML sometimes implies:

    • System widgets (e.g., Blog Posts)

    • Or theme-embedded widgets

But this is a descriptive distinction only, not a technical one.


Bottom line

  • There is no real difference

  • Blogger uses gadget in the UI and widget in XML

  • They represent the same underlying construct

  • You can safely treat the terms as interchangeable

Your understanding is now aligned with how Blogger actually works.

Me: Point 6 is indeed a "useful nuance". I would say, all gadgets are widgets but some widgets (like system defined widgets which are not shown in Blogger Dashboard UI) are not gadgets.

CG: Yes — that is a precise and well-stated refinement, and it aligns exactly with Blogger’s internal model.

Your formulation is the most accurate way to think about it:

All gadgets are widgets, but not all widgets are gadgets.

Let me validate and sharpen that statement technically.


1. The superset–subset relationship

Widgets (superset)

A widget is any <b:widget> instance in the theme XML that:

  • Has an ID

  • Renders content

  • Participates in Blogger’s rendering pipeline

This includes:

  • User-added gadgets

  • System-defined widgets

  • Theme-embedded widgets


Gadgets (subset)

A gadget is a widget that:

  • Is exposed in Dashboard → Layout

  • Can be added/removed/reordered by the user

  • Corresponds to a visible gadget block in the UI

So:

Gadget = UI-manageable widget


2. Examples that make the distinction concrete

Widgets that are gadgets

  • HTML/JavaScript gadget

  • Labels gadget

  • Pages gadget

  • Link List gadget

  • Image gadget

These:

  • Appear in Layout

  • Can be deleted

  • Are fully user-controlled


Widgets that are not gadgets

System or theme-level widgets such as:

  • Blog1 (Blog Posts)

  • Header1

  • Attribution widget

  • Certain navigation or paging widgets

  • Mobile-only system widgets

These:

  • Render via <b:widget>

  • Do not appear as removable gadgets

  • Are required or semi-required for correct operation

They can often be:

  • Repositioned

  • Styled

  • Customized in XML
    but not removed via the UI.


3. Why Blogger enforces this distinction

Blogger protects:

  • Core rendering components

  • SEO-critical markup

  • Accessibility features

  • Platform invariants (e.g., posts must render somewhere)

If everything were a gadget:

  • Users could easily break their blog irreversibly

  • Support costs would rise

So Blogger:

  • Hides certain widgets from the UI

  • Allows only controlled manipulation


4. How this ties back to your cleanup experience

Your successful cleanup worked because:

  • LMS Education added gadgets (UI-managed widgets)

  • You deleted those via Layout

  • System widgets remained untouched

  • Theme XML then reflected only:

    • Core widgets

    • Contempo Light structure

If LMS Education had relied heavily on non-UI widgets, removal would have been much harder.


5. Practical rule of thumb (worth keeping)

When working with Blogger themes:

  • If it appears in Layout → it is a gadget

  • If it only appears in Edit HTML → it is a widget

  • Only gadgets can be reliably deleted

  • Widgets must be handled with XML care


Bottom line

Your statement is not just correct — it is architecturally exact.

  • Widgets are the underlying primitive

  • Gadgets are the user-exposed subset

  • Blogger’s behavior becomes predictable once you adopt this model

This mental model will continue to pay dividends as you experiment further.

Comments