Join our community and get latest updates!

Saturday, May 16, 2020

Blank Blogger Template and Widget Codes

In this article, we will discuss how to create a bank blogger template without many efforts. Blank templates are useful for those trying to learn the blogger template structure. 

It is also used for clearing all unwanted widgets in your themes, remember even changing the themes would not delete the complete widgets. My personal method of clearing all unwanted widgets is to use a blank blogger template.

Whatever be the case lets start the basic or a skeleton of a blogger template, If you know a little bit about HTML you know that a basic page requires a <html> and </html> and all other components inside this tag.
Table of Contents

How to Create a Blank Blogger Template

We will be discussing the latest updated theme structure which is widget version 3 and layout version 2

Basic Structure

<?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE html>
   <html b:css='false' b:defaultwidgetversion='2' b:layoutsVersion='3' b:responsive='true' b:templateVersion='1.3.0' expr:dir='data:blog.languageDirection' 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 content='width=device-width, initial-scale=1' name='viewport'/>
    <title><data:view.title.escaped/></title>
    <b:include data='blog' name='all-head-content'/>
        <meta content='width=device-width, initial-scale=1' name='viewport' />
        <b:skin version='1.3.0'>
            <![CDATA[
               
            ]]>
        </b:skin>
        <b:template-skin>
            <![CDATA[
            ]]>
        </b:template-skin>
    </head>
    <body>
        <div id="blog-wrapper">
            <header>
                <b:section class='header' id='header' maxwidgets='1' showaddelement='no'>
                    <b:widget id='Header1' locked='true' title='' type='Header'></b:widget>
                </b:section>
            </header>
            <div id="content-wrapper">
                <div class="content-table">
                    <div class="content-row">
                        <b:section class='main column' id='main' showaddelement='yes'>
                            <b:widget id='Blog1' locked='true' title='Blog Posts Section' type='Blog' />
                        </b:section>
                        <aside class="column">
                            <b:section class='sidebar' id='sidebar' maxwidgets='' showaddelement='yes'>
                            </b:section>
                        </aside>
                    </div>
                </div>
            </div>
            <footer>
                <div>
                    Copyright © 2020 <strong><data:blog.title/></strong>
                </div>
            </footer>
        </div>
    </body>
    </html>

<b:skin version='1.3.0'> holds the CSS required for the entire theme and <b:template-skin> should contain the view of your layout version in the dashboard.

At least one section and one widget are required for a valid minimum template. In the latest update of the layout version and widget version, you also require to add some additional codes in the old or previous version of themes.

When you Save the after pasting the above code, you can see additional code generated inside the theme. This is automatically inserted by the blogger, so we just have to learn the syntax that's all, and the blogger will do the rest.

Add the below code between </b:template-skin> and </head> and save the theme.

    <b:defaultmarkups>
      <b:defaultmarkup type='Common'>
        <b:includable id='widgetNotAvailableInPreview'>
          <b:if cond='data:widget.type == &quot;AdSense&quot;'>
            <div class='vertical-ad-placeholder'>
              <span><b:message name='messages.adsGoHere'/></span>
            </div>
          <b:else/>
            <b:include name='super.widgetNotAvailableInPreview'/>
          </b:if>
        </b:includable>
      </b:defaultmarkup>
      <b:defaultmarkup type='AdSense,Blog'>
        <b:includable id='defaultAdUnit'>
          <b:comment>Clear out style (needs to be a non-empty string)</b:comment>
          <b:with value='&quot;/* Done in css. */&quot;' var='style'>
            <b:include name='super.defaultAdUnit'/>
          </b:with>
        </b:includable>
      </b:defaultmarkup>
      <b:defaultmarkup type='Blog,FeaturedPost'>
        <b:includable id='headerByline'>
          <b:include cond='data:view.isMultipleItems or data:widgets.Blog.first.headerByline.items.share' data='{ shareButtonClass: &quot;post-share-buttons-top&quot;, overridden: true }' name='maybeAddShareButtons'/>
          <b:include name='super.headerByline'/>
        </b:includable>
      </b:defaultmarkup>
      <b:defaultmarkup type='Blog,FeaturedPost,PopularPosts'>
        <b:includable id='commentsLink'>
          <a class='comment-link' expr:href='data:post.commentsUrl' expr:onclick='data:post.commentsUrlOnclick'>
            <b:include data='{ iconClass: &quot;touch-icon&quot; }' name='commentIcon'/>
            <span class='num_comments'>
              <b:if cond='data:post.numberOfComments &gt; 0'>
                <b:message name='messages.numberOfComments'>
                  <b:param expr:value='data:post.numberOfComments' name='numComments'/>
                </b:message>
              <b:else/>
                <data:messages.postAComment/>
              </b:if>
            </span>
          </a>
        </b:includable>
        <b:includable id='snippetedPostByline'>
          <b:include name='headerByline'/>
        </b:includable>
        <b:includable id='postLabels'>
          <b:comment>We don&#39;t display labels on the home page.</b:comment>
          <b:if cond='data:view.isSingleItem and data:widget.type == &quot;Blog&quot;'>
            <b:include name='super.postLabels'/>
          </b:if>
        </b:includable>
        <b:includable id='postShareButtons' var='post'>
          <b:comment>We call super.postShareButtons from the migrated positions.</b:comment>
        </b:includable>
        <b:includable id='postJumpLink'>
          <b:comment>Overridden, and migrated to postFooter. Called as postFooterJumpLink.</b:comment>
        </b:includable>
        <b:includable id='postFooterJumpLink'>
          <b:comment>Ripple, and show &#39;keep reading&#39; as the default.</b:comment>
          <div class='jump-link flat-button ripple'>
            <a expr:href='data:post.hasJumpLink ? data:post.url fragment &quot;more&quot; : data:post.url' expr:title='data:post.title'>
              <data:blog.jumpLinkMessage/>
            </a>
          </div>
        </b:includable>
        <b:includable id='postFooter' var='post'>
          <div class='post-bottom'>
            <div class='post-footer float-container'>
              <b:include name='footerBylines'/>
              <b:include cond='data:widget.type == &quot;Blog&quot;' data='post' name='postFooterAuthorProfile'/>
            </div>
            <b:if cond='data:view.isSingleItem'>
                <b:include data='{ shareButtonClass: &quot;post-share-buttons-bottom invisible&quot;, overridden: true }' name='maybeAddShareButtons'/>
            <b:else/>
              <b:include data='post' name='postFooterJumpLink'/>
            </b:if>
          </div>
        </b:includable>
      </b:defaultmarkup>
      <b:defaultmarkup type='Blog'>
        <b:includable id='main'>
          <b:include name='noContentPlaceholder'/>
          <b:comment>Cap the total number of ads (widgets and inline ads).</b:comment>
          <b:with value='3' var='maxNumAds'>
          <b:with value='data:widgets.AdSense.size' var='numDesktopAds'>
          <b:with value='data:widgets.AdSense count (w =&gt; w.sectionId != &quot;ads&quot;)' var='numMobileAds'>
          <b:comment>Filter out the featured post, but only on the homepage.</b:comment>
          <b:with value='data:widgets.FeaturedPost filter (w =&gt; w.sectionId == &quot;page_body&quot;) map (w =&gt; w.postId)' var='featuredPostIds'>
          <b:with value='data:view.isHomepage                                          ? data:posts filter (post =&gt; post.id not in data:featuredPostIds)                                          : data:posts' var='posts'>
            <b:include name='super.main'/>
          </b:with>
          </b:with>
          </b:with>
          </b:with>
          </b:with>
        </b:includable>
        <b:includable id='feedLinks'>
          <b:comment>Don&#39;t show feed links.</b:comment>
        </b:includable>
        <b:includable id='postBodySnippet' var='post'>
          <div class='container post-body entry-content' expr:id='&quot;post-snippet-&quot; + data:post.id'>
            <b:if cond='data:post.featuredImage'>
              <div class='snippet-thumbnail'>
                <b:include data='{                                     image: data:post.featuredImage,                                     imageSizes: [32, 64, 128, 256],                                     imageRatio: &quot;1:1&quot;,                                     sourceSizes: &quot;(max-width: 800px) 20vw, 128px&quot;                                  }' name='responsiveImage'/>
              </div>
            </b:if>
            <b:include cond='data:post' data='post' name='postSnippet'/>
          </div>
        </b:includable>
        <b:includable id='previousPageLink'><b:comment>Don&#39;t show</b:comment></b:includable>
        <b:includable id='homePageLink'><b:comment>Don&#39;t show</b:comment></b:includable>
        <b:includable id='nextPageLink'>
          <a class='blog-pager-older-link flat-button ripple' expr:href='data:olderPageUrl' expr:title='data:messages.morePosts'>
            <data:messages.morePosts/>
          </a>
        </b:includable>
        <b:includable id='inlineAd' var='post'>
          <div>
            <b:class cond='data:post.adNumber + data:numDesktopAds lt data:maxNumAds' name='desktop-ad'/>
            <b:class cond='data:post.adNumber + data:numMobileAds lt data:maxNumAds' name='mobile-ad'/>
            <b:include data='post' name='super.inlineAd'/>
          </div>
        </b:includable>
      </b:defaultmarkup>
      <b:defaultmarkup type='BlogArchive'>
        <b:includable id='main' var='this'>
          <details class='collapsible extendable'>
            <b:attr cond='data:view.isArchive' name='open' value='open'/>
            <b:with value='true' var='renderAsDetails'>
            <b:with value='data:messages.archive' var='defaultTitle'>
              <b:include name='super.main'/>
            </b:with>
            </b:with>
          </details>
        </b:includable>
        <b:includable id='flat'>
          <b:include data='{                               buttonClass: &quot;pill-button&quot;,                               items: data:this.data,                               itemSet: &quot;data&quot;,                               itemsMarkup: &quot;super.flat&quot;                             }' name='extendableItems'/>
        </b:includable>
        <b:includable id='hierarchy'>
          <b:include data='{                               buttonClass: &quot;pill-button&quot;,                               limit: 1,                               items: data:this.data,                               itemSet: &quot;data&quot;,                               itemsMarkup: &quot;super.hierarchy&quot;                             }' name='extendableItems'/>
        </b:includable>
      </b:defaultmarkup>
      <b:defaultmarkup type='BlogSearch'>
        <b:includable id='searchSubmit'>
          <input class='search-action flat-button' expr:value='data:messages.search.escaped' type='submit'/>
        </b:includable>
      </b:defaultmarkup>
      <b:defaultmarkup type='Label'>
        <b:includable id='main' var='this'>
          <details class='collapsible extendable'>
            <b:attr cond='data:view.isLabelSearch' name='open' value='open'/>
            <b:with value='true' var='renderAsDetails'>
            <b:with value='data:messages.labels' var='defaultTitle'>
              <b:include name='super.main'/>
            </b:with>
            </b:with>
          </details>
        </b:includable>
        <b:includable id='list'>
          <b:include data='{                               buttonClass: &quot;pill-button&quot;,                               items: data:this.labels,                               itemSet: &quot;labels&quot;,                               itemsMarkup: &quot;super.list&quot;                             }' name='extendableItems'/>
        </b:includable>
        <b:includable id='cloud'>
          <b:include data='{                               buttonClass: &quot;pill-button&quot;,                               items: data:this.labels,                               itemSet: &quot;labels&quot;,                               itemsMarkup: &quot;super.cloud&quot;                             }' name='extendableItems'/>
        </b:includable>
      </b:defaultmarkup>
      <b:defaultmarkup type='FeaturedPost'>
        <b:includable id='snippetedPostContent'>
          <b:comment>Re-order the thumbnail before the snippet, add &#39;Keep reading&#39; link.</b:comment>
          <b:include cond='data:this.postDisplay.showTitle' name='snippetedPostTitle'/>
          <b:include name='headerByline'/>
          <b:include cond='data:this.postDisplay.showFeaturedImage and data:post.featuredImage' data='post' name='snippetedPostThumbnail'/>
          <b:include cond='data:this.postDisplay.showSnippet' data='post' name='postSnippet'/>
          <b:include data='post' name='postFooter'/>
        </b:includable>
        <b:includable id='snippetedPostThumbnail'>
          <div class='snippet-thumbnail'>
            <b:with value='data:post.featuredImage.isYoutube                            ? resizeImage(data:post.featuredImage.youtubeMaxResDefaultUrl, 945, &quot;945:600&quot;)                            : &quot;&quot;' var='highRes'>
              <b:include data='{                                  image: data:post.featuredImage,                                  imageSizes: [256, 512, 945, 1684],                                  imageRatio: &quot;945:600&quot;,                                  sourceSizes: &quot;(min-width: 954px) 842px, (min-width: 801px) calc(100vw - 112px), calc(100vw - 64px)&quot;,                                  enhancedSourceset: data:highRes                                }' name='responsiveImage'/>
            </b:with>
          </div>
        </b:includable>
      </b:defaultmarkup>
      <b:defaultmarkup type='Header'>
        <b:includable id='image'>
          <b:include name='super.image'/>
          <b:comment>If we are replacing the title, force it to render anyway, and it&#39;ll be hidden in CSS.</b:comment>
          <b:include cond='data:this.imagePlacement == &quot;REPLACE&quot;' name='title'/>
        </b:includable>
        <b:includable id='title'>
          <div>
            <b:class cond='data:this.imagePlacement == &quot;REPLACE&quot;' name='replaced'/>
            <b:include name='super.title'/>
          </div>
        </b:includable>
      </b:defaultmarkup>
      <b:defaultmarkup type='PopularPosts'>
        <b:includable id='main' var='this'>
          <b:comment>Default the title to &#39;Popular posts from this blog&#39;.</b:comment>
          <b:with value='data:messages.popularPostsFromThisBlog' var='defaultTitle'>
            <b:include name='super.main'/>
          </b:with>
        </b:includable>
        <b:includable id='snippetedPostContent'>
          <b:comment>Add a &#39;keep reading&#39; link to the item-content.</b:comment>
          <b:include name='snippetedPostTitle'/>
          <b:include name='snippetedPostByline'/>
          <div class='item-content float-container'>
            <b:include cond='data:this.postDisplay.showFeaturedImage and data:post.featuredImage' name='snippetedPostThumbnail'/>
            <b:if cond='data:this.postDisplay.showSnippet'>
              <b:with value='&quot;popular-posts&quot;' var='snippetPrefix'>
                <b:include cond='data:post' data='post' name='postSnippet'/>
              </b:with>
            </b:if>
            <b:include data='post' name='postFooterJumpLink'/>
          </div>
        </b:includable>
      </b:defaultmarkup>
      <b:defaultmarkup type='PageList'>
        <b:includable id='content'>
          <div class='widget-content'>
            <b:include cond='data:widget.sectionId == &quot;page_list_top&quot;' name='overflowablePageList'/>
            <b:include cond='data:widget.sectionId != &quot;page_list_top&quot;' name='pageList'/>
          </div>
        </b:includable>
        <b:includable id='overflowButton'>
          <a><data:messages.moreEllipsis/></a>
        </b:includable>
      </b:defaultmarkup>
      <b:defaultmarkup type='Profile'>
        <b:includable id='main' var='this'>
          <div class='wrapper'>
            <b:class cond='!data:this.team' name='solo'/>
            <b:comment>No title for single profiles. Default to &#39;Blog authors&#39; for team.</b:comment>
            <b:with value='data:messages.blogAuthors' var='defaultTitle'>
              <b:include cond='data:this.team' name='widget-title'/>
            </b:with>
            <b:include name='content'/>
          </div>
        </b:includable>
        <b:includable id='defaultProfileImage'>
          <div class='default-avatar-wrapper'>
            <b:include data='{ iconClass: &quot;avatar-icon&quot; }' name='defaultAvatarIcon'/>
          </div>
        </b:includable>
        <b:includable id='userProfileText'>
          <dd class='profile-textblock profile-snippet snippet-container r-snippet-container'>
            <div class='snippet-item r-snippetized'>
              <data:aboutme/>
            </div>
            <div class='snippet-fade r-snippet-fade hidden'/>
          </dd>
        </b:includable>
        <b:includable id='viewProfileLink'>
          <b:comment>Change link to &#39;visit profile&#39;</b:comment>
          <a class='profile-link visit-profile pill-button' expr:href='data:userUrl' rel='author'>
            <data:messages.visitProfile/>
          </a>
        </b:includable>
      </b:defaultmarkup>
    </b:defaultmarkups>

Blogger Widget HTML Code

Now we will see some of the basic syntax for different widgets like search box, header etc.

Search Widget

<b:widget id='BlogSearch1' locked='true' title='Search This Blog' type='BlogSearch' visible='true'>
</b:widget>

Header

 <b:widget id='Header1' locked='true' title='CSS Minify (Header)' type='Header' visible='true'>
</b:widget>

Follow by Mail

<b:widget id='FollowByEmail1' locked='true' title='Newsletter' type='FollowByEmail' visible='true'>
</b:widget>


Blog Posts

<b:widget id='Blog1' locked='true' title='Blog Posts' type='Blog' visible='true'>
</b:widget>

Conclusion

I hope that this article on Blank Blogger Template and Widget Codes helped you. If you think something is missing in our article please let us know.

You can freely comment on your doubts and queries below. If you liked this article, then please share this with your friends. You can also find us on Twitter, Facebook, YouTube, and Instagram.

I'm an Electronics Engineer with years of experience in Blogging and DIY Projects. I like to make new gadgets and write contents related to technology and Blogging.

Disqus Comments
Disclaimer : Muhammed Fasil K is a participant in the Amazon Services LLC Associates Program, an affiliate program to earn commission by advertising and linking sites to Amazon products.