<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-8128085283179772973</atom:id><lastBuildDate>Mon, 14 Sep 2026 16:32:56 +0000</lastBuildDate><category>Documentation</category><category>Plugin</category><category>AMP</category><category>Fullpage</category><category>Google Adsense</category><category>Google Analytics</category><category>PWA</category><category>Product</category><category>Resources</category><category>SEO</category><category>Safelink</category><category>Tools</category><category>Update</category><title>Plus UI</title><description>v3.7.0</description><link>https://www.plus-ui.blog/</link><managingEditor>noreply@blogger.com (Unknown)</managingEditor><generator>Blogger</generator><openSearch:totalResults>23</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8128085283179772973.post-4522797833074489276</guid><pubDate>Sun, 21 Dec 2025 05:33:03 +0000</pubDate><atom:updated>2025-12-21T02:08:03.333-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Documentation</category><category domain="http://www.blogger.com/atom/ns#">Safelink</category><category domain="http://www.blogger.com/atom/ns#">SEO</category><category domain="http://www.blogger.com/atom/ns#">Update</category><title>Plus UI v3.7.0 Released: Multi-page SafeLink &amp; SEO</title><description>&lt;div&gt;
  &lt;div hidden aria-hidden=&#39;true&#39;&gt;Discover the new features in Plus UI v3.7.0 including Multi-page SafeLink, Custom SEO Titles, PWA stability, and critical bug fixes.&lt;/div&gt;

  &lt;p class=&#39;alert info outline&#39;&gt;&lt;b&gt;Update v3.7.0&lt;/b&gt;
    This version brings major improvements to Monetization (SafeLink) and SEO (Titles), along with core stability fixes for PWA and Ads.
  &lt;/p&gt;
&lt;p class=&#39;note wr&#39;&gt;&lt;b&gt;Important!&lt;/b&gt;&lt;br&gt;
  Before making any changes to your theme XML or settings, please &lt;b&gt;backup your theme&lt;/b&gt;. Go to Theme &gt; Backup &gt; Download to save a copy of your current version.
&lt;/p&gt;
  &lt;details class=&#39;sp toc&#39;&gt;
    &lt;summary data-show=&#39;Show all&#39; data-hide=&#39;Hide all&#39;&gt;Table of Contents&lt;/summary&gt;  
    &lt;div class=&#39;aToc&#39;&gt;&lt;/div&gt;
  &lt;/details&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;img alt=&quot;Plus UI v3.7.0 Update&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitrhGfs2Z5iXI2gQBge0Eyz6P7-AcPrJZzd2b_KwegcjEsGE6xHxWHbA_WO96-nJ688HICjxiQShMpQse3BsErSgtKbi98oZgO3EjsuQSzT3vux-RbhxM3PO8MGj5EOTNB5ZqdoFUy9mzjvTiXqcotdOnwfmHqvxTt6kfKGEDCSfaxe1KZOhEss8U0nqQ/s720/Picsart_25-12-20_20-03-39-773.jpg&quot;/&gt;&lt;/div&gt;
  &lt;p&gt;Welcome everyone! We are excited to announce the release of &lt;b&gt;Plus UI v3.7.0&lt;/b&gt;. This update focuses on maximizing your revenue through advanced SafeLink features and improving your blog&#39;s search engine visibility.&lt;/p&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
  &lt;h2&gt;1. Custom Home Page Title (SEO)&lt;/h2&gt;
&lt;img class=&#39;lazyload&#39; alt=&#39;SEO Title Comparison&#39; data-src=&#39;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp6-G3QkGhlcSMzRYop4U3bF0GNbc_N8ZlCzIGEyUotaRybeQskCTvzqljeDNczjUUBDbQqyCisTd8s3LnKctWJ93gnqAKC7_Sqy0kE9h66eQjakPHfx0bLpUUIe3gaZd_40qIhini-j2d6fGAJpnWR9Mggff0FfSOrFgn_E_mVarxvKL2uNPE4sZHDzY/s820/Custom-Home-Page-Title.png&#39; src=&#39;data:image/png;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=&#39;/&gt;
  &lt;p&gt;Previously, the home page title relied on the blog name. Now, you can set a separate, SEO-optimized title specifically for the home page.&lt;/p&gt;

  &lt;ol class=&#39;steps&#39;&gt;
    &lt;li&gt;Open your Blogger Theme XML editor and search for the following variable:
      &lt;pre data-comment=&#39;plus-ui.xml&#39;&gt;&lt;code&gt;&amp;lt;Variable name=&amp;quot;home.title&amp;quot; description=&amp;quot;Enter Your Custom Title in Value (Enable Custom Title Plugin)&amp;quot; type=&amp;quot;string&amp;quot; default=&amp;quot;&amp;quot; value=&amp;quot;&lt;mark&gt;Plus Ui&lt;/mark&gt;&amp;quot;/&amp;gt;

[!] Enter Your Custom Home page Title in Value
[!] @type {String}
[!] Page: its Only For Home Page
[!] Note: Must Should enable Custom Home page Title Plugin To use this Title&lt;/code&gt;&lt;/pre&gt;
    &lt;/li&gt;
    &lt;li&gt;Replace the &lt;code&gt;value&lt;/code&gt; (currently &quot;Plus Ui&quot;) with your desired SEO Title.&lt;/li&gt;
    &lt;li&gt;
      &lt;b&gt;Activate the Plugin:&lt;/b&gt; Go to Blogger &gt; Theme Designer &amp;gt; &lt;b&gt;Advanced&lt;/b&gt;.
      &lt;ul&gt;
        &lt;li&gt;Find &lt;b&gt;Plugin: Custom Home Page Title&lt;/b&gt;.&lt;/li&gt;
        &lt;li&gt;Change the value from &lt;b&gt;1px&lt;/b&gt; to &lt;b&gt;2px&lt;/b&gt;.&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
  
  &lt;p class=&#39;alert success&#39;&gt;&lt;b&gt;Done!&lt;/b&gt; Your custom home page title is now successfully set up.&lt;/p&gt;

  &lt;h2&gt;2. Multi-page SafeLink (Advanced)&lt;/h2&gt; 
&lt;img class=&#39;lazyload&#39; alt=&#39;SafeLink Logic&#39; data-src=&#39;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijVajspDr-BZT5hFr9R-HaUhfVYo3MsFMCwBTUolxUOw1mKiWzy9_Zm5irvWGEaZQcHj0R8QCHTkqwXbH5Qv5NMvGrpIh7XlhP78CPbZmB-dcuwrEQ2OpJql32od2LuoXM48I8JfUEYmYkCSP75Y64I_0AlPWyXPnoJMJIMrWVHRWXMsh92aN4kd7cH5A/s820/safelink.jpg&#39; src=&#39;data:image/png;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=&#39;/&gt;
  &lt;p&gt;We have overhauled the SafeLink system. You can now choose between the classic Single Page mode or the new Multi-Page mode which supports automatic page picking and is compatible with &lt;b&gt;Adslinkfly&lt;/b&gt;.&lt;/p&gt;

  &lt;div class=&#39;showH&#39;&gt;
    &lt;details class=&#39;ac&#39;&gt;
      &lt;summary&gt;2.1 Multi-page SafeLink (New)&lt;/summary&gt;
      &lt;div&gt;
        &lt;p&gt;This mode automatically picks pages from your blog feed and supports multiple steps, making it ideal for increasing ad impressions.&lt;/p&gt;
        &lt;ul&gt;
           &lt;li&gt;&lt;b&gt;Features:&lt;/b&gt; Multi-pages, Multiple steps, Auto + Manual page picking, Supports Manual posts, Supports Adslinkfly.&lt;/li&gt;
           &lt;li&gt;&lt;b&gt;How to Enable:&lt;/b&gt; Go to Theme Designer &amp;gt; Advanced &amp;gt; &lt;b&gt;Plugin: Safelink&lt;/b&gt;.&lt;/li&gt;
           &lt;li&gt;Set the length to &lt;mark&gt;3px&lt;/mark&gt;.&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/div&gt;
    &lt;/details&gt;
    &lt;details class=&#39;ac alt&#39;&gt;
      &lt;summary&gt;2.2 Single Page SafeLink (Old)&lt;/summary&gt;
      &lt;div&gt;
        &lt;p&gt;The classic one-step safelink method.&lt;/p&gt;
        &lt;ul&gt;
           &lt;li&gt;&lt;b&gt;Features:&lt;/b&gt; Single page, One step, Manual pages only.&lt;/li&gt;
           &lt;li&gt;&lt;b&gt;Adslinkfly Support:&lt;/b&gt; No.&lt;/li&gt;
           &lt;li&gt;&lt;b&gt;How to Enable:&lt;/b&gt; Go to Theme Designer &amp;gt; Advanced &amp;gt; &lt;b&gt;Plugin: Safelink&lt;/b&gt;.&lt;/li&gt;
           &lt;li&gt;Set the length to &lt;mark&gt;2px&lt;/mark&gt;.&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/div&gt;
    &lt;/details&gt;
  &lt;/div&gt;
&lt;h3&gt;2.3 SafeLink Options Explained&lt;/h3&gt;
  
  &lt;p&gt;Customize the behavior of your SafeLink system using the sliders in &lt;b&gt;Theme Designer &gt; Advanced&lt;/b&gt;. Refer to the table below for details on each option.&lt;/p&gt;

  &lt;table class=&#39;tr-caption-container&#39;&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;
        &lt;img alt=&quot;Safelink Configuration Panel&quot; class=&quot;lazyload&quot; data-src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvGHOCmwQaJoNk-plqYgwio5jG4E4Qkd93Aj_RsxgpDOPA0KrQG8n8pU-VGEdYunbPw1JAVsnapfJb916-4TRLzk5WGur7bpLihBPt0hf0YPd2ha88sDpC126N7xVQnYxkriFGVmqtDoXQ8nlFRzcpSI_nM-HcDBP_8jUAJePL6Ol_aSPHYLPDlZk8lTc/s820/safelink-config.jpg&quot; src=&#39;data:image/png;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=&#39;/&gt;
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td class=&#39;tr-caption&#39;&gt;Figure: Enable &quot;Multi Pages&quot; by setting the slider to 3px.&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
  &lt;div class=&#39;table bordered stripped hovered&#39;&gt;
    &lt;table&gt;
      &lt;thead&gt;
        &lt;tr&gt;
          &lt;th&gt;Option Name&lt;/th&gt;
          &lt;th&gt;Values&lt;/th&gt;
          &lt;th&gt;Description&lt;/th&gt;
        &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
        &lt;tr&gt;
          &lt;td&gt;Safelink Button Behavior&lt;/td&gt;
          &lt;td&gt;1 = Always Show&lt;br&gt;2 = Click to Scroll&lt;/td&gt;
          &lt;td&gt;&lt;b&gt;(1)&lt;/b&gt; Buttons are visible immediately.&lt;br&gt;&lt;b&gt;(2)&lt;/b&gt; User must click a trigger or scroll to reveal the button.&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td&gt;Auto Encrypt Manual Links&lt;/td&gt;
          &lt;td&gt;1 = Disable&lt;br&gt;2 = Enable&lt;/td&gt;
          &lt;td&gt;Automatically encrypts external links found in your posts (with class &lt;code&gt;.safeL&lt;/code&gt;) into safelinks.&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td&gt;Open Encrypted Link in New Tab&lt;/td&gt;
          &lt;td&gt;1 = Disable&lt;br&gt;2 = Enable&lt;/td&gt;
          &lt;td&gt;When a user clicks a safelink, it opens the decryption page in a new browser tab.&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td&gt;Open Destination Link in New Tab&lt;/td&gt;
          &lt;td&gt;1 = Disable&lt;br&gt;2 = Enable&lt;/td&gt;
          &lt;td&gt;Once the timer finishes, the final destination URL opens in a new tab.&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td&gt;Safelink Countdown Seconds&lt;/td&gt;
          &lt;td&gt;Time (e.g., 14)&lt;/td&gt;
          &lt;td&gt;Sets the duration (in seconds) the user must wait before the link is ready.&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td&gt;Total Steps for Safelink&lt;/td&gt;
          &lt;td&gt;Number (e.g., 4)&lt;/td&gt;
          &lt;td&gt;(Multi-page mode only) Sets how many pages/clicks the user must go through.&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td&gt;Safelink AutoScroll&lt;/td&gt;
          &lt;td&gt;1 = Disable&lt;br&gt;2 = Enable&lt;/td&gt;
          &lt;td&gt;Automatically scrolls the user&#39;s screen to the timer or button location.&lt;/td&gt;
        &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;

  &lt;h3&gt;2.4 Custom Placement (Advanced)&lt;/h3&gt;

  &lt;p&gt;By default, the SafeLink controls (Timers and &quot;Next&quot; buttons) automatically appear at the very top and bottom of your post content (&lt;code&gt;.post .pInr&lt;/code&gt;). However, you can manually force them to appear exactly where you want.&lt;/p&gt;

  &lt;p&gt;&lt;b&gt;Manual Placement:&lt;/b&gt;&lt;/p&gt;
  &lt;p&gt;Add the following specific IDs to any &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; in your Post or Theme Layout to override the default position:&lt;/p&gt;

  &lt;ul&gt;
    &lt;li&gt;&lt;code&gt;id=&quot;sl_top_section&quot;&lt;/code&gt; : The container for the top element (e.g., Timer or Ads).&lt;/li&gt;
    &lt;li&gt;&lt;code&gt;id=&quot;sl_bottom_section&quot;&lt;/code&gt; : The container for the bottom element (e.g., &quot;Next&quot; Button).&lt;/li&gt;
  &lt;/ul&gt;

  &lt;pre&gt;&lt;code&gt;&amp;lt;!-- Example: Custom placement inside a post --&amp;gt;
&amp;lt;p&amp;gt;Some intro text...&amp;lt;/p&amp;gt;

&amp;lt;!-- The timer/ad will appear here --&amp;gt;
&amp;lt;div id=&#39;sl_top_section&#39;&amp;gt;&amp;lt;/div&amp;gt;

&amp;lt;p&amp;gt;Main article content...&amp;lt;/p&amp;gt;

&amp;lt;!-- The Next button will appear here --&amp;gt;
&amp;lt;div id=&#39;sl_bottom_section&#39;&amp;gt;&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;

  &lt;p class=&#39;note&#39;&gt;&lt;b&gt;Note:&lt;/b&gt; If these IDs are not found, the script automatically looks for the post content container or standard ad sections (&lt;code&gt;sec_Horizontal-Ad&lt;/code&gt;) to place the elements.&lt;/p&gt;
  &lt;h3&gt;Configure SafeLink Pages&lt;/h3&gt;
  
  &lt;p&gt;To use this feature, you must define the pages in your HTML.&lt;/p&gt;

  &lt;ol class=&#39;steps&#39;&gt;
    &lt;li&gt;Go to Blogger HTML Editor.&lt;/li&gt;
    &lt;li&gt;Find the following code snippet and input your page paths. You must add at least one page.&lt;/li&gt;
  &lt;/ol&gt;

  &lt;p class=&#39;note wr&#39;&gt;&lt;b&gt;Warning!&lt;/b&gt;&lt;br&gt;
    Only put the &lt;b&gt;pathname&lt;/b&gt; of the page (e.g., &lt;code&gt;/p/my-page.html&lt;/code&gt;), not the full URL.
  &lt;/p&gt;

  &lt;pre&gt;&lt;code&gt;&amp;lt;Variable name=&quot;safelink.page1&quot; description=&quot;Safelink Page 1&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark data-before=&#39;Safelink Page 1&#39;&gt;/p/safelink-page-1.html&lt;/mark&gt;&quot;/&amp;gt;
[!] Safelink Page 1
[!] @type {String}
[!] Warning: Don&#39;t add full url of the safelink page, only include the pathname

&amp;lt;Variable name=&quot;safelink.page2&quot; description=&quot;Safelink Page 2&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark data-before=&#39;Safelink Page 2 (optional)&#39;&gt;&lt;/mark&gt;&quot;/&amp;gt;
[!] Safelink Page 2
[!] @type {String}
[!] Warning: Don&#39;t add full url of the safelink page, only include the pathname

&amp;lt;Variable name=&quot;safelink.page3&quot; description=&quot;Safelink Page 3&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark data-before=&#39;Safelink Page 3 (optional)&#39;&gt;&lt;/mark&gt;&quot;/&amp;gt;
[!] Safelink Page 3
[!] @type {String}
[!] Warning: Don&#39;t add full url of the safelink page, only include the pathname

&amp;lt;Variable name=&quot;safelink.page4&quot; description=&quot;Safelink Page 4&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark data-before=&#39;Safelink Page 4 (optional)&#39;&gt;&lt;/mark&gt;&quot;/&amp;gt;
[!] Safelink Page 4
[!] @type {String}
[!] Warning: Don&#39;t add full url of the safelink page, only include the pathname&lt;/code&gt;&lt;/pre&gt;

  &lt;h3&gt;Safelink Generator Tool&lt;/h3&gt;
  
  &lt;p&gt;You can embed this generator tool on your site to create safelinks easily.&lt;/p&gt;

  &lt;ol class=&#39;steps&#39;&gt;
    &lt;li&gt;Create a new Page or Post and switch to &lt;b&gt;HTML View&lt;/b&gt;.&lt;/li&gt;
    &lt;li&gt;Copy and paste the code below:&lt;/li&gt;
  &lt;/ol&gt;

  &lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Begin: Safelink Generator area ]--&amp;gt;
&amp;lt;style&amp;gt;
.inF.cB button{--svgW:16px;--svgH:16px;position:absolute;inset-block-start:10px;inset-inline-end:10px;width:30px;height:30px;display:flex;align-items:center;justify-content:center;background:var(--contentB);border-radius:8px;border:1px solid var(--contentLa);opacity:0.5;cursor:pointer}
.inF.cB input{padding-inline-end:50px}
.inF.cB input:not(:placeholder-shown) ~ button{opacity:1}
.sgMw{max-width:600px;margin:40px auto}
.sgOw{display:flex;align-items:center;gap:12px 8px;flex-wrap:wrap;background:var(--contentB);border:1px solid var(--contentL);border-radius:5px;padding:12px}
.sgOw span{width:100%;line-height:1.4em;font-size:14px}
.sgOw button{--svgW:20px;--svgH:20px;display:flex;align-items:center;justify-content:center;flex-shrink:0;width:36px;height:36px;background:var(--linkB);color:#fffdfc;border-radius:8px;cursor:pointer}
&amp;lt;/style&amp;gt;
&amp;lt;script&amp;gt;
/*! Plus UI Javascript (safelink/generator.js) | Authors: Deo Kumar, Armaan Kumar (https://fineshopdesign.com) | License: Unlicensed | Copyright (c) 2024-2025 Fineshop Design */
&amp;quot;use strict&amp;quot;;((e,t,l)=&amp;gt;{let{cEl:n,iAE:a,aEL:s,qSel:i,gId:p,eHTML:o,tNtf:g,df:c,pl:u,bg:r}=e,d=e=&amp;gt;(e=&amp;gt;new URL(e,l.baseURI))((e=&amp;gt;e.replace(/(^\w+:|^)/,&amp;quot;&amp;quot;))(e)),h=(t,l,n=&amp;quot;s&amp;quot;)=&amp;gt;{let a=(t=&amp;gt;{let l=JSON.stringify(t);return{decoded:t,value:l,data:e.B64.O3.e(l)}})(l);return t+`#${n}=${encodeURIComponent(a.data)}`},v=u.sl,b=v.pg.map(e=&amp;gt;new URL(e,r.cnHmU).href),f=l.currentScript,C=[];v.ok||C.push(&amp;quot;The Safelink plugin is not enabled. The generated links will not work until it is enabled.&amp;quot;),0===b.length&amp;&amp;C.push(&amp;quot;No Safelink page has been configured!&amp;quot;);let k=n(&amp;quot;div&amp;quot;,{className:&amp;quot;sgMw&amp;quot;,innerHTML:`${0!==C.length?`&amp;lt;div class=&amp;#39;alert warning&amp;#39;&amp;gt;&amp;lt;b&amp;gt;Warning!&amp;lt;/b&amp;gt;${C.map((e,t)=&amp;gt;`${t+1}. ${e}`).join(&amp;quot;&amp;lt;br&amp;gt;&amp;quot;)}&amp;lt;/div&amp;gt;`:&amp;quot;&amp;quot;}&amp;lt;div class=&amp;#39;inF cB&amp;#39; data-message=&amp;#39;URL must begin with http:// or https://&amp;#39;&amp;gt;&amp;lt;input type=&amp;#39;text&amp;#39; name=&amp;#39;link&amp;#39; id=&amp;#39;sg_f_link&amp;#39; placeholder=&amp;#39; &amp;#39;&amp;gt;&amp;lt;label for=&amp;#39;sg_f_link&amp;#39;&amp;gt;Destination URL&amp;lt;/label&amp;gt;&amp;lt;button type=&amp;#39;button&amp;#39; id=&amp;#39;sg_f_clear_link&amp;#39;&amp;gt;&amp;lt;svg class=&amp;#39;line&amp;#39; viewBox=&amp;#39;0 0 24 24&amp;#39;&amp;gt;&amp;lt;path d=&amp;#39;M19.0005 4.99988L5.00049 18.9999M5.00049 4.99988L19.0005 18.9999&amp;#39;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;/svg&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;#39;inF&amp;#39; data-message=&amp;#39;Select a page for safelink&amp;#39;&amp;gt;&amp;lt;select id=&amp;#39;sg_f_page&amp;#39;&amp;gt;&amp;lt;optgroup label=&amp;#39;Static pages&amp;#39;&amp;gt;&amp;lt;option value=&amp;#39;${o(r.cnHmU)}&amp;#39;${0===b.length?&amp;quot; selected&amp;quot;:&amp;quot;&amp;quot;}&amp;gt;Homepage&amp;lt;/option&amp;gt;&amp;lt;/optgroup&amp;gt;${!v.ver&amp;&amp;0!==b.length?`&amp;lt;optgroup label=&amp;#39;Safelink Pages&amp;#39;&amp;gt;${b.reduce((e,t,l)=&amp;gt;`${e}&amp;lt;option value=&amp;#39;${o(t)}&amp;#39;${0===l?&amp;quot; selected&amp;quot;:&amp;quot;&amp;quot;}&amp;gt;Safelink Page (${o(v.pg[l])})&amp;lt;/option&amp;gt;`,&amp;quot;&amp;quot;)}&amp;lt;/optgroup&amp;gt;`:&amp;quot;&amp;quot;}&amp;lt;/select&amp;gt;&amp;lt;label for=&amp;#39;sg_f_page&amp;#39;&amp;gt;Safelink Page&amp;lt;/label&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;#39;sgOw&amp;#39;&amp;gt;&amp;lt;span class=&amp;#39;sgOl&amp;#39;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;button type=&amp;#39;button&amp;#39; class=&amp;#39;sgOv&amp;#39;&amp;gt;&amp;lt;svg class=&amp;#39;line&amp;#39; viewBox=&amp;#39;0 0 24 24&amp;#39;&amp;gt;&amp;lt;path d=&amp;#39;M15.58 12C15.58 13.98 13.98 15.58 12 15.58C10.02 15.58 8.42004 13.98 8.42004 12C8.42004 10.02 10.02 8.42004 12 8.42004C13.98 8.42004 15.58 10.02 15.58 12Z&amp;#39;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;path d=&amp;#39;M12 20.27C15.53 20.27 18.82 18.19 21.11 14.59C22.01 13.18 22.01 10.81 21.11 9.39997C18.82 5.79997 15.53 3.71997 12 3.71997C8.46997 3.71997 5.17997 5.79997 2.88997 9.39997C1.98997 10.81 1.98997 13.18 2.88997 14.59C5.17997 18.19 8.46997 20.27 12 20.27Z&amp;#39;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;/svg&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;button type=&amp;#39;button&amp;#39; class=&amp;#39;sgOc&amp;#39;&amp;gt;&amp;lt;svg class=&amp;#39;line&amp;#39; viewBox=&amp;#39;0 0 24 24&amp;#39;&amp;gt;&amp;lt;path d=&amp;#39;M16 12.9V17.1C16 20.6 14.6 22 11.1 22H6.9C3.4 22 2 20.6 2 17.1V12.9C2 9.4 3.4 8 6.9 8H11.1C14.6 8 16 9.4 16 12.9Z&amp;#39;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;path d=&amp;#39;M22 6.9V11.1C22 14.6 20.6 16 17.1 16H16V12.9C16 9.4 14.6 8 11.1 8H8V6.9C8 3.4 9.4 2 12.9 2H17.1C20.6 2 22 3.4 22 6.9Z&amp;#39;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;/svg&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;/div&amp;gt;`});a(f,&amp;quot;beforebegin&amp;quot;,k);let $=p(&amp;quot;sg_f_link&amp;quot;),_=p(&amp;quot;sg_f_clear_link&amp;quot;),m=p(&amp;quot;sg_f_page&amp;quot;),w=i(&amp;quot;.sgOl&amp;quot;,k),H=i(&amp;quot;.sgOv&amp;quot;,k),L=i(&amp;quot;.sgOc&amp;quot;,k),U=()=&amp;gt;{if(!e.B64)return null;let t=$.value.trim();return&amp;quot;&amp;quot;===t?null:(/^https?:\/\//.test(t)||(t=`https://${t}`),h(m.value,{v:1,u:t}))},M=()=&amp;gt;{let e=U();w.innerText=e||&amp;quot;Input a valid Destination URL first!&amp;quot;};M(),s($,&amp;quot;change&amp;quot;,M),s($,&amp;quot;input&amp;quot;,M),s($,&amp;quot;keyup&amp;quot;,M),s(m,&amp;quot;change&amp;quot;,M),s(m,&amp;quot;input&amp;quot;,M),s($,&amp;quot;blur&amp;quot;,()=&amp;gt;{let e=$.value.trim();&amp;quot;&amp;quot;!==e&amp;&amp;(/^https?:\/\//.test(e)?$.value!==e&amp;&amp;($.value=e):$.value=`https://${e}`)}),s(_,&amp;quot;click&amp;quot;,()=&amp;gt;{$.value=&amp;quot;&amp;quot;,M()}),s(H,&amp;quot;click&amp;quot;,()=&amp;gt;{let e=U();e?t.open(e,&amp;quot;_blank&amp;quot;):g(w.textContent)}),s(L,&amp;quot;click&amp;quot;,()=&amp;gt;{let t=U();t?e.cpT(t).then(()=&amp;gt;g(&amp;quot;Link copied to clipboard!&amp;quot;)):g(w.textContent)}),c.then(()=&amp;gt;{M();if(v.ver){return;}e.iBF().then(async e=&amp;gt;{let t=new e(d(r.cnHmU)),[l,a]=await Promise.all([t.posts.list(),t.pages.list()]);[[&amp;quot;Recent Posts&amp;quot;,l],[&amp;quot;Recent Pages&amp;quot;,a]].forEach(([e,t])=&amp;gt;{let l=n(&amp;quot;optgroup&amp;quot;,{attributes:{label:e},innerHTML:t.reduce((e,t)=&amp;gt;`${e}&amp;lt;option value=&amp;#39;${o(t.url)}&amp;#39;&amp;gt;${o(t.title)}&amp;lt;/option&amp;gt;`,&amp;quot;&amp;quot;)});m.appendChild(l)})})})})(PU,window,document);
&amp;lt;/script&amp;gt;
&amp;lt;!--[ End: Safelink Generator area ]--&amp;gt;&lt;/code&gt;&lt;/pre&gt;

  &lt;h2&gt;3. Bug Fixes: Middle Post Ads&lt;/h2&gt;

  &lt;p&gt;In version 3.2.0, some users reported issues with ads not rendering correctly in the middle of posts. We have upgraded the middle ads script in v3.7.0, and it is now working 100% effectively.&lt;/p&gt;

&lt;h2&gt;4. PWA Stability Improvements&lt;/h2&gt;
&lt;p&gt;We have significantly improved the stability of the Progressive Web App (PWA) functionality. Previous issues where the &quot;Install App&quot; prompt would not appear on certain Android versions have been resolved.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;How to test the new PWA:&lt;/b&gt;&lt;/p&gt;
&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;Clear your browser cache.&lt;/li&gt;
  &lt;li&gt;Visit your blog on a mobile device (Chrome or Safari).&lt;/li&gt;
  &lt;li&gt;You should see the &lt;b&gt;&quot;Add to Home Screen&quot;&lt;/b&gt; or &lt;b&gt;&quot;Install App&quot;&lt;/b&gt; prompt appear faster and more reliably.&lt;/li&gt;
  &lt;li&gt;The app now functions smoothly offline for cached pages.&lt;/li&gt;
&lt;/ol&gt;

  &lt;h2&gt;5. Core Updates: Adslinkfly &amp; Status Code&lt;/h2&gt;

  &lt;p&gt;Two major core updates have been applied to improve functionality.&lt;/p&gt;

  &lt;h3&gt;5.1 Adslinkfly Script Update&lt;/h3&gt;
  
  &lt;p&gt;Update your &lt;code&gt;view_banner.ctp&lt;/code&gt; with the code below to ensure compatibility with the new Safelink system.&lt;/p&gt;

 &lt;pre data-comment=&#39;view_banner.ctp&#39;&gt;&lt;code&gt;&amp;lt;?php
$lurl = &amp;quot;&lt;mark&gt;safelink.page.gd&lt;/mark&gt;&amp;quot;;
$burl = &amp;quot;&lt;mark&gt;plus-ul.blogspot.com&lt;/mark&gt;&amp;quot;;

/** Custom Base64 encoder */
function custom_base64_encode($string) {
    $dict = &amp;quot;MNBVCXZLKJHGFDSAPOIUYTREWQmnbvcxzlkjhgfdsapoiuytrewq0987654321+/=&amp;quot;;
    $std  = &amp;quot;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=&amp;quot;;
    $b64  = base64_encode($string);
    return strtr($b64, $std, $dict);
}

/** Referrer check */
$ref = $_SERVER[&amp;#39;HTTP_REFERER&amp;#39;] ?? &amp;#39;&amp;#39;;
$do = parse_url($ref);
$refer = $do[&amp;#39;host&amp;#39;] ?? &amp;#39;&amp;#39;;

if ($refer != $burl) {

    $originalLink = &amp;#39;https://&amp;#39; . $lurl . &amp;#39;/&amp;#39; . urlencode($link-&amp;gt;alias);

    // Create JSON object for safelink
    $jsonLink = json_encode([
        &amp;quot;v&amp;quot; =&amp;gt; 1,      // version or flag
        &amp;quot;u&amp;quot; =&amp;gt; $originalLink
    ]);

    // Encode JSON with custom Base64
    $encodedLink = custom_base64_encode($jsonLink);

    // Final redirect URL
    $finalUrl = &amp;#39;https://&amp;#39; . $burl . &amp;#39;/#?url=&amp;#39; . $encodedLink;

    header(&amp;quot;Location: $finalUrl&amp;quot;, true, 307);
    exit();
}
?&amp;gt;
&amp;lt;?php
/**
 * @var \App\View\AppView $this
 * @var \App\Model\Entity\Link $link
 * @var \App\Model\Entity\Post $post
 * @var mixed $ad_form_data
 * @var string $banner_336x280
 * @var string $banner_468x60
 * @var string $banner_728x90
 * @var mixed $pop_ad
 * @var mixed $show_pop_ad
 * @var \App\Model\Entity\Plan $link_user_plan
 */

$this-&amp;gt;assign(&amp;#39;title&amp;#39;, get_option(&amp;#39;site_name&amp;#39;));
$this-&amp;gt;assign(&amp;#39;description&amp;#39;, get_option(&amp;#39;description&amp;#39;));
$this-&amp;gt;assign(&amp;#39;content_title&amp;#39;, get_option(&amp;#39;site_name&amp;#39;));
$this-&amp;gt;assign(&amp;#39;og_title&amp;#39;, $link-&amp;gt;title);
$this-&amp;gt;assign(&amp;#39;og_description&amp;#39;, $link-&amp;gt;description);
$this-&amp;gt;assign(&amp;#39;og_image&amp;#39;, $link-&amp;gt;image);
?&amp;gt;

&amp;lt;?php $this-&amp;gt;start(&amp;#39;scriptTop&amp;#39;); ?&amp;gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;
    if (window.self !== window.top) {
        window.top.location.href = window.location.href;
    }
&amp;lt;/script&amp;gt;
&amp;lt;?php $this-&amp;gt;end(); ?&amp;gt;

&amp;lt;div class=&amp;quot;box-main&amp;quot;&amp;gt;
    &amp;lt;?php if (!empty($banner_728x90)) : ?&amp;gt;
        &amp;lt;div class=&amp;quot;banner banner-728x90&amp;quot;&amp;gt;
            &amp;lt;div class=&amp;quot;banner-inner&amp;quot;&amp;gt;
                &amp;lt;?= $banner_728x90; ?&amp;gt;
            &amp;lt;/div&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;?php endif; ?&amp;gt;

    &amp;lt;?php if ($post): ?&amp;gt;
        &amp;lt;div class=&amp;quot;blog-item&amp;quot;&amp;gt;
            &amp;lt;div class=&amp;quot;page-header&amp;quot;&amp;gt;
                &amp;lt;h3&amp;gt;
                    &amp;lt;small&amp;gt;&amp;lt;a href=&amp;quot;&amp;lt;?= build_main_domain_url(&amp;#39;/blog&amp;#39;) ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?= __(&amp;#39;From Our Blog&amp;#39;) ?&amp;gt;:&amp;lt;/a&amp;gt;
                    &amp;lt;/small&amp;gt; &amp;lt;?= h($post-&amp;gt;title) ?&amp;gt;&amp;lt;/h3&amp;gt;
            &amp;lt;/div&amp;gt;
            &amp;lt;div class=&amp;quot;blog-content&amp;quot;&amp;gt;&amp;lt;?= $post-&amp;gt;description ?&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;?php endif; ?&amp;gt;

    &amp;lt;h4&amp;gt;&amp;lt;?= __(&amp;#39;Your link is almost ready.&amp;#39;) ?&amp;gt;&amp;lt;/h4&amp;gt;

    &amp;lt;span id=&amp;quot;countdown&amp;quot; class=&amp;quot;countdown&amp;quot;&amp;gt;
        &amp;lt;span id=&amp;quot;timer&amp;quot; class=&amp;quot;timer&amp;quot;&amp;gt;
            &amp;lt;?= $link_user_plan-&amp;gt;timer ?? 5 ?&amp;gt;
        &amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;?= __(&amp;#39;Seconds&amp;#39;) ?&amp;gt;
    &amp;lt;/span&amp;gt;

    &amp;lt;?php if (!empty($banner_468x60)) : ?&amp;gt;
        &amp;lt;div class=&amp;quot;banner banner-468x60&amp;quot;&amp;gt;
            &amp;lt;div class=&amp;quot;banner-inner&amp;quot;&amp;gt;
                &amp;lt;?= $banner_468x60; ?&amp;gt;
            &amp;lt;/div&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;?php endif; ?&amp;gt;

    &amp;lt;?php
    $hidden_class = &amp;#39;&amp;#39;;
    if (empty($link-&amp;gt;image) &amp;&amp; empty($link-&amp;gt;title) &amp;&amp; empty($link-&amp;gt;description)) {
        $hidden_class = &amp;#39;hidden&amp;#39;;
    }
    ?&amp;gt;

    &amp;lt;?php if (get_option(&amp;#39;short_link_content&amp;#39;, &amp;#39;no&amp;#39;) === &amp;#39;yes&amp;#39;) : ?&amp;gt;
        &amp;lt;div class=&amp;quot;link-details &amp;lt;?= $hidden_class ?&amp;gt;&amp;quot;&amp;gt;
            &amp;lt;div class=&amp;quot;panel panel-default&amp;quot;&amp;gt;
                &amp;lt;div class=&amp;quot;panel-body&amp;quot;&amp;gt;
                    &amp;lt;img class=&amp;quot;link-image&amp;quot; src=&amp;quot;&amp;lt;?= h($link-&amp;gt;image) ?&amp;gt;&amp;quot;/&amp;gt;
                    &amp;lt;h4 class=&amp;quot;link-title&amp;quot;&amp;gt;&amp;lt;?= h($link-&amp;gt;title) ?&amp;gt;&amp;lt;/h4&amp;gt;
                    &amp;lt;p class=&amp;quot;link-description&amp;quot;&amp;gt;&amp;lt;?= h($link-&amp;gt;description) ?&amp;gt;&amp;lt;/p&amp;gt;
                &amp;lt;/div&amp;gt;
            &amp;lt;/div&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;?php endif; ?&amp;gt;

    &amp;lt;div style=&amp;quot;margin-bottom: 10px;&amp;quot;&amp;gt;
        &amp;lt;a href=&amp;quot;javascript: void(0)&amp;quot; class=&amp;quot;btn btn-success btn-lg get-link disabled&amp;quot;&amp;gt;
            &amp;lt;?= __(&amp;#39;Please wait...&amp;#39;) ?&amp;gt;
        &amp;lt;/a&amp;gt;
    &amp;lt;/div&amp;gt;

    &amp;lt;?php if (!empty($banner_336x280)) : ?&amp;gt;
        &amp;lt;div class=&amp;quot;banner banner-336x280&amp;quot;&amp;gt;
            &amp;lt;div class=&amp;quot;banner-inner&amp;quot;&amp;gt;
                &amp;lt;?= $banner_336x280; ?&amp;gt;
            &amp;lt;/div&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;?php endif; ?&amp;gt;

&amp;lt;/div&amp;gt;


&amp;lt;?=
$this-&amp;gt;Form-&amp;gt;create(null, [
    &amp;#39;url&amp;#39; =&amp;gt; [&amp;#39;controller&amp;#39; =&amp;gt; &amp;#39;Links&amp;#39;, &amp;#39;action&amp;#39; =&amp;gt; &amp;#39;go&amp;#39;, &amp;#39;prefix&amp;#39; =&amp;gt; false],
    &amp;#39;id&amp;#39; =&amp;gt; &amp;#39;go-link&amp;#39;,
    &amp;#39;class&amp;#39; =&amp;gt; &amp;#39;hidden&amp;#39;,
]);
?&amp;gt;

&amp;lt;?= $this-&amp;gt;Form-&amp;gt;hidden(&amp;#39;ad_form_data&amp;#39;, [&amp;#39;value&amp;#39; =&amp;gt; $ad_form_data]); ?&amp;gt;

&amp;lt;?=
$this-&amp;gt;Form-&amp;gt;button(__(&amp;#39;Submit&amp;#39;), [
    &amp;#39;id&amp;#39; =&amp;gt; &amp;#39;go-submit&amp;#39;,
    &amp;#39;class&amp;#39; =&amp;gt; &amp;#39;hidden&amp;#39;,
]);
?&amp;gt;

&amp;lt;?= $this-&amp;gt;Form-&amp;gt;end(); ?&amp;gt;

&amp;lt;?php if (get_option(&amp;#39;enable_popup&amp;#39;, &amp;#39;yes&amp;#39;) == &amp;#39;yes&amp;#39; &amp;&amp; $show_pop_ad) : ?&amp;gt;
    &amp;lt;?=
    $this-&amp;gt;Form-&amp;gt;create(null, [
        &amp;#39;url&amp;#39; =&amp;gt; [&amp;#39;controller&amp;#39; =&amp;gt; &amp;#39;Links&amp;#39;, &amp;#39;action&amp;#39; =&amp;gt; &amp;#39;popad&amp;#39;, &amp;#39;prefix&amp;#39; =&amp;gt; false],
        &amp;#39;target&amp;#39; =&amp;gt; &amp;quot;_blank&amp;quot;,
        &amp;#39;id&amp;#39; =&amp;gt; &amp;#39;go-popup&amp;#39;,
        &amp;#39;class&amp;#39; =&amp;gt; &amp;#39;hidden&amp;#39;,
    ]);
    ?&amp;gt;

    &amp;lt;?= $this-&amp;gt;Form-&amp;gt;hidden(&amp;#39;pop_ad&amp;#39;, [&amp;#39;value&amp;#39; =&amp;gt; $pop_ad]); ?&amp;gt;

    &amp;lt;?= $this-&amp;gt;Form-&amp;gt;end(); ?&amp;gt;
&amp;lt;?php endif; ?&amp;gt;

&amp;lt;?php $this-&amp;gt;start(&amp;#39;scriptBottom&amp;#39;); ?&amp;gt;
&amp;lt;?php $this-&amp;gt;end(); ?&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&#39;alert info outline&#39;&gt;
  &lt;b&gt;Configuration Note&lt;/b&gt;
  &lt;ul&gt;
    &lt;li&gt;
      First, locate the line:
      &lt;code&gt;$lurl = &quot;&lt;mark&gt;safelink.page.gd&lt;/mark&gt;&quot;;&lt;/code&gt;&lt;br&gt;
      Replace &lt;mark&gt;safelink.page.gd&lt;/mark&gt; with your own Safelink domain.
    &lt;/li&gt;
    &lt;li&gt;
      Next, find the line:
      &lt;code&gt;$burl = &quot;&lt;mark&gt;plus-ul.blogspot.com&lt;/mark&gt;&quot;;&lt;/code&gt;&lt;br&gt;
      Replace &lt;mark&gt;plus-ul.blogspot.com&lt;/mark&gt; with your own Blogspot domain.
    &lt;/li&gt;
    &lt;li&gt;
      &lt;b&gt;Compatibility:&lt;/b&gt; This Adslinkfly script works &lt;b&gt;only&lt;/b&gt; with the &lt;b&gt;Plus UI&lt;/b&gt; theme.
    &lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;
  &lt;h3&gt;5.2 Blog Status Code (Last Month Views)&lt;/h3&gt;
&lt;img class=&#39;lazyload&#39; alt=&#39;Blog Status&#39; data-src=&#39;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJxeAb2mcNDzsUs_uz2rm1gBwQfwZ3CEC4ZPfbCUUFzO0-rgDwuX2VIGVi-7RhckKH569IyauQKPNfQeU8JStoq6hnXRJ8iTZMxFSXao4gr8hgDsmbNQ9nu-tT3v554RKMp3UzOG3rOhoZLUKXzzXfwCqLsIpumHNGhINS5-zdXRJSM_n2K_Hq7Uc_ijI/s820/Blog-Status.jpg&#39; src=&#39;data:image/png;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=&#39;/&gt;
  &lt;p&gt;You can now display a visual chart of your blog&#39;s estimated views for the last month. Place the following code where you want the chart to appear.&lt;/p&gt;

  &lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Last month estimated views chart ]--&amp;gt;

&amp;lt;script&amp;gt;
&amp;quot;use strict&amp;quot;;!((a,b,c)=&amp;gt;{if(!navigator.onLine)return;const d=c.currentScript,e=d.insertAdjacentElement(&amp;quot;beforebegin&amp;quot;,a.cEl(&amp;quot;canvas&amp;quot;,{style:&amp;quot;width: 100%; height: auto;&amp;quot;,width:800,height:400,ariaLabel:&amp;quot;Estimated views chart&amp;quot;,role:&amp;quot;img&amp;quot;}));a.lz.then(()=&amp;gt;a.df).then(()=&amp;gt;a.lJs(&amp;quot;https://cdn.jsdelivr.net/npm/chart.js&amp;quot;)).then(()=&amp;gt;{const b=new URL(a.cf.bst.su,a.bg.cnHmU);return b.searchParams.set(&amp;quot;timeRange&amp;quot;,&amp;quot;LAST_MONTH&amp;quot;),fetch(b).then(a=&amp;gt;a.ok?a.json():null)}).then(b=&amp;gt;{if(!b)return;const{rows:c}=(a=&amp;gt;{const b=a.total,c=a.sparklineData,d=c.reduce((a,[,b])=&amp;gt;a+b,0),e=[],f=new Date;for(const[g,h]of c){const a=new Date(Date.UTC(f.getUTCFullYear(),f.getUTCMonth(),f.getUTCDate()-(29-g))),c=a.toLocaleDateString(&amp;quot;en-GB&amp;quot;,{day:&amp;quot;2-digit&amp;quot;,month:&amp;quot;short&amp;quot;}),i=Math.round(h/d*b);e.push({date:c,views:i})}return{total:b,rows:e,sparks:c}})(b),d=e.getContext(&amp;quot;2d&amp;quot;),f=d.createLinearGradient(0,0,0,e.height);f.addColorStop(0,&amp;quot;rgba(195, 113, 239, 0.15)&amp;quot;),f.addColorStop(1,&amp;quot;rgba(0, 0, 0, 0)&amp;quot;),new Chart(e,{type:&amp;quot;line&amp;quot;,data:{labels:c.map(a=&amp;gt;a.date),datasets:[{label:&amp;quot;Estimated Views&amp;quot;,data:c.map(a=&amp;gt;a.views),fill:!0,tension:.4,borderColor:&amp;quot;#c371ef&amp;quot;,borderWidth:2,backgroundColor:f,pointRadius:2,pointHoverRadius:5,pointHoverBorderWidth:4,pointHoverBackgroundColor:&amp;quot;#fff&amp;quot;}]},options:{responsive:!0,interaction:{mode:&amp;quot;index&amp;quot;,intersect:!1},plugins:{tooltip:{backgroundColor:&amp;quot;rgba(53, 27, 92, 0.8)&amp;quot;,caretPadding:5,boxWidth:5,usePointStyle:&amp;quot;triangle&amp;quot;,boxPadding:3,callbacks:{label:a=&amp;gt;`Views: ${a.raw}`,title:a=&amp;gt;`Date: ${a[0].label}`}},legend:{display:!1,labels:{usePointStyle:!0}}},scales:{x:{grid:{display:!1},title:{display:!1,text:&amp;quot;Date&amp;quot;}},y:{title:{display:!1,text:&amp;quot;Views&amp;quot;},beginAtZero:!0,ticks:{callback:b=&amp;gt;a.abvN(b,2).join(&amp;quot;&amp;quot;)}}}}})})})(PU,window,document);
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;

  
  
&lt;h2&gt;Live Demo&lt;/h2&gt;
&lt;p&gt;Want to see the new Multi-page SafeLink and Status Chart in action?&lt;/p&gt;
&lt;div class=&#39;button-container&#39; style=&#39;display:flex; gap:10px; flex-wrap:wrap; margin-top:15px;&#39;&gt;
  &lt;a class=&#39;button&#39; href=&#39;/&#39; target=&#39;_blank&#39; rel=&#39;noopener noreferrer&#39;&gt;&lt;i class=&#39;icon demo&#39;&gt;&lt;/i&gt;View v3.7.0 Demo&lt;/a&gt;
  &lt;a class=&#39;button ln&#39; href=&#39;https://t.me/Blogger_Templates_Updated&#39; target=&#39;_blank&#39; rel=&#39;noopener noreferrer&#39;&gt;&lt;i class=&#39;icon dl&#39;&gt;&lt;/i&gt;Join Telegram Support&lt;/a&gt;
&lt;/div&gt;
  
  &lt;h2&gt;Conclusion&lt;/h2&gt;
  
  &lt;p&gt;The &lt;b&gt;Plus UI v3.7.0&lt;/b&gt; update represents a significant step forward in giving you control over your site&#39;s monetization and SEO. We highly recommend upgrading to take advantage of the new Safelink capabilities and bug fixes. Thank you for your continued support!&lt;/p&gt;

&lt;/div&gt;</description><link>https://www.plus-ui.blog/2025/12/plus-ui-v3-7-0-multi-page-safelink-seo-titles.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitrhGfs2Z5iXI2gQBge0Eyz6P7-AcPrJZzd2b_KwegcjEsGE6xHxWHbA_WO96-nJ688HICjxiQShMpQse3BsErSgtKbi98oZgO3EjsuQSzT3vux-RbhxM3PO8MGj5EOTNB5ZqdoFUy9mzjvTiXqcotdOnwfmHqvxTt6kfKGEDCSfaxe1KZOhEss8U0nqQ/s72-c/Picsart_25-12-20_20-03-39-773.jpg" height="72" width="72"/><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8128085283179772973.post-6470919757130763450</guid><pubDate>Sun, 30 Nov 2025 15:27:00 +0000</pubDate><atom:updated>2026-01-05T08:15:42.669-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Documentation</category><category domain="http://www.blogger.com/atom/ns#">Tools</category><title>Plus UI Menu Generator Tool</title><description>&lt;!--[ Explicitly sets post thumbnail ]--&gt;
&lt;!--[
  &lt;div class=&#39;separator&#39;&gt;
    &lt;img src=&#39;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirzlrDzMIOW0cel9WaOJ5vO-WI6dYRFjknXtJNcw3ncHc5G9fXyZB5XRyrQCCOkcPmXvgaobeUZoEM6oG83UOJbxfcw7yKMuk8L8BK3OKRM_KrzIe573XDhEChRHbIw4QQa8kmtxi6j7jsojZCO6TPGaB2vKf0ZkPzdHBsewkN_jlDAn7r7LoDM_7hjvU/w600-h337/Plus-UI-Menu-Generator-Tool.png&#39;/&gt;
  &lt;/div&gt;
]--&gt;

&lt;!--[ Image with caption ]--&gt;
&lt;table class=&#39;tr-caption-container&#39;&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;
        &lt;img alt=&#39;Plus UI Menu Generator Tool&#39; width=&#39;1280&#39; height=&#39;720&#39; src=&#39;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirzlrDzMIOW0cel9WaOJ5vO-WI6dYRFjknXtJNcw3ncHc5G9fXyZB5XRyrQCCOkcPmXvgaobeUZoEM6oG83UOJbxfcw7yKMuk8L8BK3OKRM_KrzIe573XDhEChRHbIw4QQa8kmtxi6j7jsojZCO6TPGaB2vKf0ZkPzdHBsewkN_jlDAn7r7LoDM_7hjvU/w600-h337-p-e90-k-rw-no-nu/Plus-UI-Menu-Generator-Tool.png&#39; /&gt;
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td class=&#39;tr-caption&#39; data-text=&#39;Plus UI Menu Generator Tool&#39;&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;!--[ Price to show in homepage ]--&gt;
&lt;div class=&#39;pPric pPad&#39; data-text=&#39;Supported Version&#39;&gt;Plus UI v3.0++&lt;/div&gt;&lt;div class=&#39;hidden&#39; data-dl=&quot;cGx1cy11aS5ibG9n&quot;&gt;&lt;/div&gt;
&lt;div class=&#39;pInfo pPad&#39;&gt;
&lt;!--[ Button with download icon ]--&gt;
&lt;div class=&#39;L&#39;&gt;&lt;a class=&#39;button&#39; href=&#39;#started-tool&#39;&gt;&lt;svg class=&#39;line&#39; viewBox=&#39;0 0 24 24&#39;&gt;&lt;path d=&#39;M9.31993 13.28H12.4099V20.48C12.4099 21.54 13.7299 22.04 14.4299 21.24L21.9999 12.64C22.6599 11.89 22.1299 10.72 21.1299 10.72H18.0399V3.51997C18.0399 2.45997 16.7199 1.95997 16.0199 2.75997L8.44994 11.36C7.79994 12.11 8.32993 13.28 9.31993 13.28Z&#39; stroke-miterlimit=&#39;10&#39;&gt;&lt;/path&gt;&lt;path d=&#39;M8.5 4H1.5&#39; stroke-miterlimit=&#39;10&#39;&gt;&lt;/path&gt;&lt;path d=&#39;M7.5 20H1.5&#39; stroke-miterlimit=&#39;10&#39;&gt;&lt;/path&gt;&lt;path d=&#39;M4.5 12H1.5&#39; stroke-miterlimit=&#39;10&#39;&gt;&lt;/path&gt;&lt;/svg&gt;
          Get Started&lt;/a&gt;&lt;/div&gt;&lt;div class=&#39;R&#39;&gt;&lt;a class=&#39;button R&#39; href=&#39;https://t.me/Blogger_Templates_Updated&#39;&gt;
          &lt;svg class=&#39;line&#39; viewBox=&#39;0 0 24 24&#39;&gt;&lt;path d=&#39;M7.39999 6.32003L15.89 3.49003C19.7 2.22003 21.77 4.30003 20.51 8.11003L17.68 16.6C15.78 22.31 12.66 22.31 10.76 16.6L9.91999 14.08L7.39999 13.24C1.68999 11.34 1.68999 8.23003 7.39999 6.32003Z&#39;&gt;&lt;/path&gt;&lt;path d=&#39;M10.11 13.6501L13.69 10.0601&#39;&gt;&lt;/path&gt;&lt;/svg&gt;
          Join Telegram&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;

&lt;!--[ Post snippet ]--&gt;
&lt;div class=&#39;hidden&#39;&gt;Easily generate and edit your Blogger Plus UI menus without touching theme code. Smart, fast, and ReactUI powered!&lt;/div&gt;

&lt;div class=&#39;pInfo pPad&#39;&gt;
  &lt;div class=&#39;L&#39;&gt;&lt;small&gt;Tool Name&lt;/small&gt;&lt;span&gt;Plus UI Menu Generator&lt;/span&gt;&lt;/div&gt;
  &lt;div class=&#39;R&#39;&gt;&lt;small&gt;Platform&lt;/small&gt;&lt;span&gt;React UI&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&#39;pInfo pPad&#39;&gt;
  &lt;div class=&#39;L&#39;&gt;&lt;small&gt;Type&lt;/small&gt;&lt;span&gt;Development Utility&lt;/span&gt;&lt;/div&gt;
  &lt;div class=&#39;R&#39;&gt;&lt;small&gt;Version&lt;/small&gt;&lt;span&gt;1.0 (Beta)&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&#39;pInfo pPad&#39;&gt;
  &lt;div class=&#39;L&#39;&gt;&lt;small&gt;Developer&lt;/small&gt;&lt;span&gt;Deo Kumar&lt;/span&gt;&lt;/div&gt;
  &lt;div class=&#39;R&#39;&gt;&lt;small&gt;Release Date&lt;/small&gt;&lt;span&gt;October 2025&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&#39;pInfo pPad o&#39;&gt;&lt;p&gt;Build your navigation menu items below. Choose the type of item, fill in the details, and click &quot;Add&quot;. Use the &quot;Choose Icon&quot; button to select an icon (the full SVG code will be generated).&lt;/p&gt;
&lt;/div&gt;


&lt;style&gt;.choose-icon-btn,.icons-container button{cursor:pointer;align-items:center;gap:8px;display:inline-flex}.choose-icon-btn,.icon-btn-preview{display:inline-flex}label[for$=&quot;-li-class&quot;] code{font-size:10px;padding:0 3px}.icon-picker{background:var(--contentB);border:1px solid var(--contentL);border-radius:8px}.icon-picker input{width:100%;border-radius:0;border:none;outline:0;padding:12px 16px;background:0 0;border-bottom:1px solid var(--contentL)}.icons-container{position:relative;padding:16px;max-height:none!important;overflow-x:hidden;overflow-y:auto}.icon-picker.has-icons .icons-container{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.icons-container button{position:relative;padding:8px;border:1px solid var(--contentL);border-radius:4px;overflow:hidden}.icons-container button::after{position:relative;content:attr(data-code);border-inline-start:1px solid var(--contentL);padding-inline-start:8px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.icons-container svg{width:20px;height:20px;flex-shrink:0}@media screen and (max-width:640px){.icon-picker.has-icons .icons-container{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}}#icons_wrapper{flex:1;overflow-y:auto;min-height:0}.choose-icon-btn{background-color:var(--lStatusC);color:var(--white);padding:10px 18px;border:none;border-radius:var(--linkR);font-size:16px;font-family:var(--fontB);font-weight:700;margin-right:10px;transition:opacity .2s;margin-bottom:5px}.choose-icon-btn:hover{background-color:var(--lStatusC);opacity:.9}.button.btn-red,.button.btn-red:hover{background-color:var(--synxRed)}.button.btn-red:hover{opacity:.9}.sub-item-section{background:var(--contentBa);border:1px dashed var(--contentL);padding:15px;margin-top:15px;margin-bottom:15px;border-radius:var(--linkR)}.sub-item-controls button{font-size:14px;padding:6px 12px;margin-top:5px}hr{margin:20px 0;border:0;border-top:1px solid var(--contentL)}#output-container{margin-top:30px}#outputCode{width:100%;height:400px;font-family:var(--fontC);font-size:13px;background:var(--synxB);color:var(--synxC);border:1px solid var(--contentL);border-radius:var(--linkR);padding:20px;box-sizing:border-box;line-height:1.4;white-space:pre;overflow-wrap:normal;overflow-x:auto}#copyFeedback{color:var(--synxGreen);font-weight:700;margin-left:10px;opacity:0;transition:opacity .4s}#copyFeedback.show{opacity:1}.modal{display:none;position:fixed;z-index:1000;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgba(0,0,0,.6);animation:.3s fadeIn}.modal .papB{max-height:85vh;padding:10px;margin:5% auto;width:88%;max-width:700px;position:relative;animation:.3s slideIn}.papB .mainCC{border-bottom:1px solid var(--contentL);display:flex;align-items:center;gap:10px;width:100%;padding:0 20px}.papB .mainCC .title{margin:0;flex-grow:1;padding:16px 0}.close-btn{position:relative;flex-shrink:0;display:flex;align-items:center;justify-content:flex-end;gap:2px}.close-btn svg{width:16px;height:16px}.close-btn:focus,.close-btn:hover{color:var(--synxRed);text-decoration:none}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes slideIn{from{transform:translateY(-30px);opacity:0}to{transform:translateY(0);opacity:1}}&lt;/style&gt;
 



    &lt;div class=&quot;container&quot; id=&quot;started-tool&quot;&gt;
    &lt;!-- &lt;p&gt;Build your navigation menu items below. Choose the type of item, fill in the details, and click &quot;Add&quot;. Use the &quot;Choose Icon&quot; button to select an icon (the full SVG code will be generated).&lt;/p&gt;--&gt;
&lt;div class=&quot;menu-class-guide&quot;&gt;
  &lt;h3&gt;Menu Item Class Reference&lt;/h3&gt;

 &lt;div class=&#39;table sticky bordered stripped hovered&#39;&gt;
    &lt;table&gt;
      &lt;thead&gt;
        &lt;tr&gt;
          &lt;th&gt;Class&lt;/th&gt;
          &lt;th&gt;Meaning&lt;/th&gt;
          &lt;th&gt;Behavior / Purpose&lt;/th&gt;
        &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
        &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;.mr&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Menu Root / Heading&lt;/td&gt;
          &lt;td&gt;Used for section titles inside the menu. These items are &lt;strong&gt;not clickable&lt;/strong&gt; and are often used to group related links.&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;.br&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Border / Divider&lt;/td&gt;
          &lt;td&gt;Adds a &lt;strong&gt;horizontal line&lt;/strong&gt; below the item — useful for separating menu sections.&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;.nt&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Notification Indicator&lt;/td&gt;
          &lt;td&gt;Displays a &lt;strong&gt;small dot&lt;/strong&gt; (usually colored) to highlight new or important links.&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Normal &amp;lt;li&amp;gt;&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Standard Menu Item&lt;/td&gt;
          &lt;td&gt;Regular &lt;strong&gt;clickable link&lt;/strong&gt; used for navigation or actions.&lt;/td&gt;
        &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;

&lt;/div&gt;
        &lt;div class=&quot;widget&quot;&gt;
            &lt;h2 class=&quot;title&quot;&gt;Add Standard Link&lt;/h2&gt;
            &lt;div class=&quot;field-group inF&quot; data-message=&#39;e.g., About&#39;&gt;
                &lt;input type=&quot;text&quot; id=&quot;std-title&quot; placeholder=&quot;&quot;&gt;
                &lt;label for=&quot;std-title&quot;&gt;Title:&lt;/label&gt;
            &lt;/div&gt;
            &lt;div class=&quot;field-group inF&quot; data-message=&quot;e.g., /p/about.html or https://example.com&quot;&gt;
                &lt;input type=&quot;url&quot; id=&quot;std-url&quot; placeholder=&quot;&quot;&gt;
                &lt;label for=&quot;std-url&quot;&gt;URL:&lt;/label&gt;
            &lt;/div&gt;
            &lt;div class=&quot;field-group&quot;&gt; &lt;label style=&quot;display:block; margin-bottom: 5px;&quot;&gt;Icon (Optional):&lt;/label&gt;
                &lt;button type=&quot;button&quot; class=&quot;choose-icon-btn&quot; onclick=&quot;openIconPicker(&#39;std-icon-input&#39;, &#39;std-icon-preview&#39;)&quot;&gt;
                    Choose Icon &lt;span class=&quot;icon-btn-preview&quot; id=&quot;std-icon-preview&quot;&gt;&lt;/span&gt;
                &lt;/button&gt;
                &lt;textarea id=&quot;std-icon-input&quot; class=&quot;icon-svg-input&quot; style=&quot;display:none;&quot;&gt;&lt;/textarea&gt;
            &lt;/div&gt;
             &lt;div class=&quot;field-group inF&quot; data-message=&quot;e.g., br mr (space-separated)&quot;&gt;
                &lt;input type=&quot;text&quot; id=&quot;std-li-class&quot; placeholder=&quot;&quot;&gt;
                &lt;label for=&quot;std-li-class&quot;&gt;Optional &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; Classes:&lt;/label&gt;
             &lt;/div&gt;
             &lt;button class=&quot;button&quot; onclick=&quot;addStandardLink()&quot;&gt;Add Standard Link&lt;/button&gt;
        &lt;/div&gt;

        &lt;div class=&quot;widget&quot;&gt;
            &lt;h2 class=&quot;title&quot;&gt;Add Badge Link&lt;/h2&gt;
             &lt;p&gt;Adds a link with a special class (&lt;code&gt;new&lt;/code&gt; or &lt;code&gt;free&lt;/code&gt;) to show a theme-defined badge.&lt;/p&gt;
            &lt;div class=&quot;field-group inF&quot;&gt;
                &lt;input type=&quot;text&quot; id=&quot;badge-title&quot; placeholder=&quot;&quot;&gt;
                &lt;label for=&quot;badge-title&quot;&gt;Title:&lt;/label&gt;
            &lt;/div&gt;
            &lt;div class=&quot;field-group inF&quot;&gt;
                &lt;input type=&quot;url&quot; id=&quot;badge-url&quot; placeholder=&quot;&quot;&gt;
                &lt;label for=&quot;badge-url&quot;&gt;URL:&lt;/label&gt;
            &lt;/div&gt;
            &lt;div class=&quot;field-group&quot;&gt; &lt;label style=&quot;display:block; margin-bottom: 5px;&quot;&gt;Icon (Optional):&lt;/label&gt;
                 &lt;button type=&quot;button&quot; class=&quot;choose-icon-btn&quot; onclick=&quot;openIconPicker(&#39;badge-icon-input&#39;, &#39;badge-icon-preview&#39;)&quot;&gt;
                     Choose Icon &lt;span class=&quot;icon-btn-preview&quot; id=&quot;badge-icon-preview&quot;&gt;&lt;/span&gt;
                 &lt;/button&gt;
                 &lt;textarea id=&quot;badge-icon-input&quot; class=&quot;icon-svg-input&quot; style=&quot;display:none;&quot;&gt;&lt;/textarea&gt;
            &lt;/div&gt;
            &lt;div class=&quot;field-group inF&quot;&gt;
                &lt;select id=&quot;badge-span-class&quot;&gt;
                    &lt;option value=&quot;new&quot;&gt;New&lt;/option&gt;
                    &lt;option value=&quot;free&quot;&gt;Free&lt;/option&gt;
                &lt;/select&gt;
                &lt;label for=&quot;badge-span-class&quot;&gt;Badge:&lt;/label&gt;
            &lt;/div&gt;
             &lt;div class=&quot;field-group inF&quot; data-message=&quot;e.g., br mr (space-separated)&quot;&gt;
                &lt;input type=&quot;text&quot; id=&quot;badge-li-class&quot; placeholder=&quot;&quot;&gt;
                &lt;label for=&quot;badge-li-class&quot;&gt;Optional &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; Classes:&lt;/label&gt;
             &lt;/div&gt;
            &lt;button class=&quot;button&quot; onclick=&quot;addBadgeLink()&quot;&gt;Add Badge Link&lt;/button&gt;
        &lt;/div&gt;

        &lt;div class=&quot;widget&quot;&gt;
            &lt;h2 class=&quot;title&quot;&gt;Add Dropdown (Style 1: No Sub-Item Icons)&lt;/h2&gt;
            &lt;div class=&quot;field-group inF&quot;&gt;
                &lt;input type=&quot;text&quot; id=&quot;drop1-title&quot; placeholder=&quot;&quot;&gt;
                &lt;label for=&quot;drop1-title&quot;&gt;Dropdown Title:&lt;/label&gt;
            &lt;/div&gt;
            &lt;div class=&quot;field-group&quot;&gt; &lt;label style=&quot;display:block; margin-bottom: 5px;&quot;&gt;Dropdown Icon:&lt;/label&gt;
                &lt;button type=&quot;button&quot; class=&quot;choose-icon-btn&quot; onclick=&quot;openIconPicker(&#39;drop1-icon-input&#39;, &#39;drop1-icon-preview&#39;)&quot;&gt;
                    Choose Icon &lt;span class=&quot;icon-btn-preview&quot; id=&quot;drop1-icon-preview&quot;&gt;&lt;/span&gt;
                &lt;/button&gt;
                &lt;textarea id=&quot;drop1-icon-input&quot; class=&quot;icon-svg-input&quot; style=&quot;display:none;&quot;&gt;&lt;/textarea&gt;
            &lt;/div&gt;
             &lt;div class=&quot;field-group inF&quot; data-message=&quot;e.g., nt mr (space-separated)&quot;&gt;
                &lt;input type=&quot;text&quot; id=&quot;drop1-li-class&quot; placeholder=&quot;&quot;&gt;
                &lt;label for=&quot;drop1-li-class&quot;&gt;Optional &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; Classes:&lt;/label&gt;
             &lt;/div&gt;
             &lt;div class=&quot;field-group&quot;&gt;
                &lt;input type=&quot;checkbox&quot; id=&quot;drop1-expanded&quot; style=&quot;width: auto; margin-right: 5px;&quot;&gt;
                &lt;label for=&quot;drop1-expanded&quot; style=&quot;display:inline-block; font-weight: normal; color: var(--bodyC);&quot;&gt;Start expanded (add &lt;code&gt;checked&lt;/code&gt;)&lt;/label&gt;
             &lt;/div&gt;

            
            &lt;label&gt;Sub-Items:&lt;/label&gt;
            &lt;div id=&quot;drop1-sub-items&quot;&gt;
                &lt;/div&gt;
            &lt;button type=&quot;button&quot; class=&quot;button ln&quot; onclick=&quot;addDropdownSubItem(&#39;drop1&#39;, false)&quot;&gt;+ Add Sub-Item&lt;/button&gt;
            &lt;br&gt;&lt;br&gt;
            &lt;button class=&quot;button&quot; onclick=&quot;addDropdown(&#39;drop1&#39;, false)&quot;&gt;Add Style 1 Dropdown&lt;/button&gt;
        &lt;/div&gt;

        &lt;div class=&quot;widget&quot;&gt;
            &lt;h2 class=&quot;title&quot;&gt;Add Dropdown (Style 2: With Sub-Item Icons)&lt;/h2&gt;
            &lt;div class=&quot;field-group inF&quot;&gt;
                &lt;input type=&quot;text&quot; id=&quot;drop2-title&quot; placeholder=&quot;&quot;&gt;
                &lt;label for=&quot;drop2-title&quot;&gt;Dropdown Title:&lt;/label&gt;
            &lt;/div&gt;
            &lt;div class=&quot;field-group&quot;&gt; &lt;label style=&quot;display:block; margin-bottom: 5px;&quot;&gt;Dropdown Icon:&lt;/label&gt;
                &lt;button type=&quot;button&quot; class=&quot;choose-icon-btn&quot; onclick=&quot;openIconPicker(&#39;drop2-icon-input&#39;, &#39;drop2-icon-preview&#39;)&quot;&gt;
                     Choose Icon &lt;span class=&quot;icon-btn-preview&quot; id=&quot;drop2-icon-preview&quot;&gt;&lt;/span&gt;
                 &lt;/button&gt;
                 &lt;textarea id=&quot;drop2-icon-input&quot; class=&quot;icon-svg-input&quot; style=&quot;display:none;&quot;&gt;&lt;/textarea&gt;
            &lt;/div&gt;
            &lt;div class=&quot;field-group inF&quot; data-message=&quot;e.g., nt mr (space-separated)&quot;&gt;
                &lt;input type=&quot;text&quot; id=&quot;drop2-li-class&quot; placeholder=&quot;&quot;&gt;
                &lt;label for=&quot;drop2-li-class&quot;&gt;Optional &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; Classes:&lt;/label&gt;
             &lt;/div&gt;
             &lt;div class=&quot;field-group&quot;&gt;
                &lt;input type=&quot;checkbox&quot; id=&quot;drop2-expanded&quot; style=&quot;width: auto; margin-right: 5px;&quot;&gt;
                &lt;label for=&quot;drop2-expanded&quot; style=&quot;display:inline-block; font-weight: normal; color: var(--bodyC);&quot;&gt;Start expanded (add &lt;code&gt;checked&lt;/code&gt;)&lt;/label&gt;
             &lt;/div&gt;

            
            &lt;label&gt;Sub-Items (Icon required for each):&lt;/label&gt;
            &lt;div id=&quot;drop2-sub-items&quot;&gt;
                &lt;/div&gt;
            &lt;button type=&quot;button&quot; class=&quot;button ln&quot; onclick=&quot;addDropdownSubItem(&#39;drop2&#39;, true)&quot;&gt;+ Add Sub-Item&lt;/button&gt;
            &lt;br&gt;&lt;br&gt;
            &lt;button class=&quot;button&quot; onclick=&quot;addDropdown(&#39;drop2&#39;, true)&quot;&gt;Add Style 2 Dropdown&lt;/button&gt;
        &lt;/div&gt;

        &lt;div class=&quot;widget&quot;&gt;
            &lt;h2 class=&quot;title&quot;&gt;Add Dropdown (Style 3: Top Level Sub-Menu)&lt;/h2&gt;
             &lt;p&gt;A dropdown with no parent icon, designed for &quot;More...&quot; links. Sub-items require icons.&lt;/p&gt;
            &lt;div class=&quot;field-group inF&quot;&gt;
                &lt;input type=&quot;text&quot; id=&quot;drop3-title&quot; placeholder=&quot;&quot;&gt;
                &lt;label for=&quot;drop3-title&quot;&gt;Dropdown Title:&lt;/label&gt;
            &lt;/div&gt;
            &lt;div class=&quot;field-group inF&quot; data-message=&quot;e.g., mr (space-separated)&quot;&gt;
                &lt;input type=&quot;text&quot; id=&quot;drop3-li-class&quot; placeholder=&quot;&quot;&gt;
                &lt;label for=&quot;drop3-li-class&quot;&gt;Optional &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; Classes:&lt;/label&gt;
             &lt;/div&gt;
             &lt;div class=&quot;field-group&quot;&gt;
                &lt;input type=&quot;checkbox&quot; id=&quot;drop3-expanded&quot; style=&quot;width: auto; margin-right: 5px;&quot; checked&gt;
                &lt;label for=&quot;drop3-expanded&quot; style=&quot;display:inline-block; font-weight: normal; color: var(--bodyC);&quot;&gt;Start expanded (add &lt;code&gt;checked&lt;/code&gt;)&lt;/label&gt;
             &lt;/div&gt;

            
            &lt;label&gt;Sub-Items (Icon required for each):&lt;/label&gt;
            &lt;div id=&quot;drop3-sub-items&quot;&gt;
                &lt;/div&gt;
            &lt;button type=&quot;button&quot; class=&quot;button ln&quot; onclick=&quot;addDropdownSubItem(&#39;drop3&#39;, true)&quot;&gt;+ Add Sub-Item&lt;/button&gt;
            &lt;br&gt;&lt;br&gt;
            &lt;button class=&quot;button&quot; onclick=&quot;addDropdownStyle3()&quot;&gt;Add Style 3 Dropdown&lt;/button&gt;
        &lt;/div&gt;


        &lt;div id=&quot;output-container&quot; class=&quot;widget&quot;&gt;
  &lt;h2 class=&quot;title&quot;&gt;Generated Menu Code&lt;/h2&gt;
  &lt;p&gt;Copy the code below to update your Blogger menu:&lt;/p&gt;


    &lt;h3&gt;Method 1: Using Layout&lt;/h3&gt;
    &lt;ol class=&quot;steps&quot;&gt;
      &lt;li&gt;Go to your &lt;strong&gt;Blogger Dashboard&lt;/strong&gt; → &lt;strong&gt;Layout&lt;/strong&gt;.&lt;/li&gt;
      &lt;li&gt;Locate the &lt;strong&gt;Navigation Menu&lt;/strong&gt; section.&lt;/li&gt;
      &lt;li&gt;Replace the existing menu code with the code generated by the &lt;strong&gt;ReactUI Menu Generator Tool&lt;/strong&gt;.&lt;/li&gt;
    &lt;/ol&gt;
    &lt;div class=&quot;alert info&quot;&gt;
      &lt;b&gt;Tip:&lt;/b&gt; If you prefer not to manage the menu via Layout, leave the Layout field empty and edit your theme’s XML manually.
    &lt;/div&gt;
  

  
    &lt;h3&gt;Method 2: Editing Theme Code&lt;/h3&gt;
    &lt;p&gt;
      Go to your &lt;strong&gt;Blogger Dashboard&lt;/strong&gt; → &lt;strong&gt;Theme&lt;/strong&gt; → &lt;strong&gt;Edit HTML&lt;/strong&gt;. 
      Find &lt;code&gt;&amp;lt;b:includable id=&#39;items-mainMenu&#39;&amp;gt;&lt;/code&gt; and replace everything 
      &lt;strong&gt;between&lt;/strong&gt; its opening and closing tags (including &lt;code&gt;&amp;lt;!--[ ... ]--&amp;gt;&lt;/code&gt; comments and all existing &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; elements) with your new copied code. 
      Save the theme to apply changes.
    &lt;/p&gt;
  

            &lt;textarea id=&quot;outputCode&quot; readonly&gt;&lt;/textarea&gt;
            &lt;br&gt;
            &lt;button class=&quot;button&quot; onclick=&quot;copyToClipboard()&quot;&gt;Copy to Clipboard&lt;/button&gt;
            &lt;span id=&quot;copyFeedback&quot;&gt;&lt;/span&gt;
            &lt;button class=&quot;button btn-red&quot; onclick=&quot;clearOutput()&quot;&gt;Clear Output&lt;/button&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div id=&quot;iconPickerModal&quot; class=&quot;modal&quot; role=&quot;dialog&quot; aria-modal=&quot;true&quot; aria-labelledby=&quot;iconPickerTitle&quot;&gt;
        &lt;div class=&quot;papB&quot;&gt;
           &lt;div class=&#39;mainCC&#39;&gt; &lt;h2 id=&quot;iconPickerTitle&quot; class=&quot;title&quot;&gt;Select an Icon&lt;/h2&gt;
             &lt;span class=&quot;close-btn&quot; onclick=&quot;closeIconPicker()&quot; aria-label=&quot;Close icon picker&quot;&gt;&lt;svg class=&quot;line&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M19.0005 4.99988L5.00049 18.9999M5.00049 4.99988L19.0005 18.9999&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/div&gt;
          
             
            &lt;p&gt;Click an icon to choose it. Use the search bar to filter.&lt;/p&gt;
            &lt;div id=&quot;icons_wrapper&quot;&gt;
                &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;




&lt;script disable-devtool-auto type=&quot;text/javascript&quot;&gt;  
 // Protected Js Functions  
  !function(e,t){&quot;object&quot;==typeof exports&amp;&amp;&quot;undefined&quot;!=typeof module?module.exports=t():&quot;function&quot;==typeof define&amp;&amp;define.amd?define(t):(e=&quot;undefined&quot;!=typeof globalThis?globalThis:e||self).DisableDevtool=t()}(this,function(){&quot;use strict&quot;;function i(e){return(i=&quot;function&quot;==typeof Symbol&amp;&amp;&quot;symbol&quot;==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&amp;&amp;&quot;function&quot;==typeof Symbol&amp;&amp;e.constructor===Symbol&amp;&amp;e!==Symbol.prototype?&quot;symbol&quot;:typeof e})(e)}function o(e,t){if(!(e instanceof t))throw new TypeError(&quot;Cannot call a class as a function&quot;)}function r(e,t){for(var n=0;n&lt;t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,&quot;value&quot;in o&amp;&amp;(o.writable=!0),Object.defineProperty(e,o.key,o)}}function u(e,t,n){t&amp;&amp;r(e.prototype,t),n&amp;&amp;r(e,n),Object.defineProperty(e,&quot;prototype&quot;,{writable:!1})}function e(e,t,n){t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}function c(e,t){if(&quot;function&quot;!=typeof t&amp;&amp;null!==t)throw new TypeError(&quot;Super expression must either be null or a function&quot;);e.prototype=Object.create(t&amp;&amp;t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,&quot;prototype&quot;,{writable:!1}),t&amp;&amp;n(e,t)}function a(e){return(a=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function n(e,t){return(n=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function U(e,t){if(t&amp;&amp;(&quot;object&quot;==typeof t||&quot;function&quot;==typeof t))return t;if(void 0!==t)throw new TypeError(&quot;Derived constructors may only return object or undefined&quot;);t=e;if(void 0===t)throw new ReferenceError(&quot;this hasn&#39;t been initialised - super() hasn&#39;t been called&quot;);return t}function l(n){var o=function(){if(&quot;undefined&quot;==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(&quot;function&quot;==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}();return function(){var e,t=a(n);return U(this,o?(e=a(this).constructor,Reflect.construct(t,arguments,e)):t.apply(this,arguments))}}function f(e,t){(null==t||t&gt;e.length)&amp;&amp;(t=e.length);for(var n=0,o=new Array(t);n&lt;t;n++)o[n]=e[n];return o}function s(e,t){var n,o=&quot;undefined&quot;!=typeof Symbol&amp;&amp;e[Symbol.iterator]||e[&quot;@@iterator&quot;];if(!o){if(Array.isArray(e)||(o=function(e,t){if(e){if(&quot;string&quot;==typeof e)return f(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return&quot;Map&quot;===(n=&quot;Object&quot;===n&amp;&amp;e.constructor?e.constructor.name:n)||&quot;Set&quot;===n?Array.from(e):&quot;Arguments&quot;===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?f(e,t):void 0}}(e))||t&amp;&amp;e&amp;&amp;&quot;number&quot;==typeof e.length)return o&amp;&amp;(e=o),n=0,{s:t=function(){},n:function(){return n&gt;=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:t};throw new TypeError(&quot;Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.&quot;)}var i,r=!0,u=!1;return{s:function(){o=o.call(e)},n:function(){var e=o.next();return r=e.done,e},e:function(e){u=!0,i=e},f:function(){try{r||null==o.return||o.return()}finally{if(u)throw i}}}}function t(){if(d.url)window.location.href=d.url;else if(d.rewriteHTML)try{document.documentElement.innerHTML=d.rewriteHTML}catch(e){document.documentElement.innerText=d.rewriteHTML}else{try{window.opener=null,window.open(&quot;&quot;,&quot;_self&quot;),window.close(),window.history.back()}catch(e){console.log(e)}setTimeout(function(){window.location.href=d.timeOutUrl||&quot;https://plus-ul.blogspot.com?ref=&quot;.concat(encodeURIComponent(location.host))},500)}}var d={md5:&quot;&quot;,ondevtoolopen:t,ondevtoolclose:null,url:&quot;&quot;,timeOutUrl:&quot;&quot;,tkName:&quot;ddtk&quot;,interval:500,disableMenu:!0,stopIntervalTime:5e3,clearIntervalWhenDevOpenTrigger:!1,detectors:[1,3,4,5,6,7],clearLog:!0,disableSelect:!1,disableInputSelect:!1,disableCopy:!1,disableCut:!1,disablePaste:!1,ignore:null,disableIframeParents:!0,seo:!0,rewriteHTML:&quot;&quot;},H=[&quot;detectors&quot;,&quot;ondevtoolclose&quot;,&quot;ignore&quot;];function q(e){var t,n=0&lt;arguments.length&amp;&amp;void 0!==e?e:{};for(t in n.onDevtoolOpen&amp;&amp;(n.ondevtoolopen=n.onDevtoolOpen),n.onDevtoolClose&amp;&amp;(n.ondevtoolclose=n.onDevtoolClose),d){var o=t;void 0===n[o]||i(d[o])!==i(n[o])&amp;&amp;-1===H.indexOf(o)||(d[o]=n[o])}&quot;function&quot;==typeof d.ondevtoolclose&amp;&amp;!0===d.clearIntervalWhenDevOpenTrigger&amp;&amp;(d.clearIntervalWhenDevOpenTrigger=!1,console.warn(&quot;【DISABLE-DEVTOOL】clearIntervalWhenDevOpenTrigger 在使用 ondevtoolclose 时无效&quot;))}function v(){return(new Date).getTime()}function h(e){var t=v();return e(),v()-t}function z(n,o){function e(t){return function(){n&amp;&amp;n();var e=t.apply(void 0,arguments);return o&amp;&amp;o(),e}}var t=window.alert,i=window.confirm,r=window.prompt;try{window.alert=e(t),window.confirm=e(i),window.prompt=e(r)}catch(e){}}var p,y,B,b={iframe:!1,pc:!1,qqBrowser:!1,firefox:!1,macos:!1,edge:!1,oldEdge:!1,ie:!1,iosChrome:!1,iosEdge:!1,chrome:!1,seoBot:!1,mobile:!1};function W(){function e(e){return-1!==t.indexOf(e)}var t=navigator.userAgent.toLowerCase(),n=function(){var e=navigator,t=e.platform,e=e.maxTouchPoints;if(&quot;number&quot;==typeof e)return 1&lt;e;if(&quot;string&quot;==typeof t){e=t.toLowerCase();if(/(mac|win)/i.test(e))return!1;if(/(android|iphone|ipad|ipod|arch)/i.test(e))return!0}return/(iphone|ipad|ipod|ios|android)/i.test(navigator.userAgent.toLowerCase())}(),o=!!window.top&amp;&amp;window!==window.top,i=!n,r=e(&quot;qqbrowser&quot;),u=e(&quot;firefox&quot;),c=e(&quot;macintosh&quot;),a=e(&quot;edge&quot;),l=a&amp;&amp;!e(&quot;chrome&quot;),f=l||e(&quot;trident&quot;)||e(&quot;msie&quot;),s=e(&quot;crios&quot;),d=e(&quot;edgios&quot;),v=e(&quot;chrome&quot;)||s,h=!n&amp;&amp;/(googlebot|baiduspider|bingbot|applebot|petalbot|yandexbot|bytespider|chrome\-lighthouse|moto g power)/i.test(t);Object.assign(b,{iframe:o,pc:i,qqBrowser:r,firefox:u,macos:c,edge:a,oldEdge:l,ie:f,iosChrome:s,iosEdge:d,chrome:v,seoBot:h,mobile:n})}function M(){for(var e=function(){for(var e={},t=0;t&lt;500;t++)e[&quot;&quot;.concat(t)]=&quot;&quot;.concat(t);return e}(),t=[],n=0;n&lt;50;n++)t.push(e);return t}function g(){d.clearLog&amp;&amp;B()}var K=&quot;&quot;,V=!1;function N(){var e=d.ignore;if(e){if(&quot;function&quot;==typeof e)return e();if(0!==e.length){var t=location.href;if(K===t)return V;K=t;var n,o=!1,i=s(e);try{for(i.s();!(n=i.n()).done;){var r=n.value;if(&quot;string&quot;==typeof r){if(-1!==t.indexOf(r)){o=!0;break}}else if(r.test(t)){o=!0;break}}}catch(e){i.e(e)}finally{i.f()}return V=o}}}var X=function(){return!1};function w(n){var t,e,o=74,i=73,r=85,u=83,c=123,a=b.macos?function(e,t){return e.metaKey&amp;&amp;e.altKey&amp;&amp;(t===i||t===o)}:function(e,t){return e.ctrlKey&amp;&amp;e.shiftKey&amp;&amp;(t===i||t===o)},l=b.macos?function(e,t){return e.metaKey&amp;&amp;e.altKey&amp;&amp;t===r||e.metaKey&amp;&amp;t===u}:function(e,t){return e.ctrlKey&amp;&amp;(t===u||t===r)};n.addEventListener(&quot;keydown&quot;,function(e){var t=(e=e||n.event).keyCode||e.which;if(t===c||a(e,t)||l(e,t))return T(n,e)},!0),t=n,d.disableMenu&amp;&amp;t.addEventListener(&quot;contextmenu&quot;,function(e){if(&quot;touch&quot;!==e.pointerType)return T(t,e)}),e=n,(d.disableSelect||d.disableInputSelect)&amp;&amp;m(e,&quot;selectstart&quot;),e=n,d.disableCopy&amp;&amp;m(e,&quot;copy&quot;),e=n,d.disableCut&amp;&amp;m(e,&quot;cut&quot;),e=n,d.disablePaste&amp;&amp;m(e,&quot;paste&quot;)}function m(o,e){o.addEventListener(e,function(e){if(!(t=e.target)||&quot;INPUT&quot;!==t.tagName&amp;&amp;&quot;TEXTAREA&quot;!==t.tagName&amp;&amp;&quot;true&quot;!==(null==(n=t.getAttribute)?void 0:n.call(t,&quot;contenteditable&quot;))){if(d.disableSelect)return T(o,e)}else if(d.disableInputSelect)return T(o,e);var t,n})}function T(e,t){if(!N()&amp;&amp;!X())return(t=t||e.event).returnValue=!1,t.preventDefault(),!1}var O,D=!1,S={};function F(e){S[e]=!1}function $(){for(var e in S)if(S[e])return D=!0;return D=!1}(A=O=O||{})[A.Unknown=-1]=&quot;Unknown&quot;,A[A.RegToString=0]=&quot;RegToString&quot;,A[A.DefineId=1]=&quot;DefineId&quot;,A[A.Size=2]=&quot;Size&quot;,A[A.DateToString=3]=&quot;DateToString&quot;,A[A.FuncToString=4]=&quot;FuncToString&quot;,A[A.Debugger=5]=&quot;Debugger&quot;,A[A.Performance=6]=&quot;Performance&quot;,A[A.DebugLib=7]=&quot;DebugLib&quot;;var k=function(){function n(e){var t=e.type,e=e.enabled,e=void 0===e||e;o(this,n),this.type=O.Unknown,this.enabled=!0,this.type=t,this.enabled=e,this.enabled&amp;&amp;(t=this,Q.push(t),this.init())}return u(n,[{key:&quot;onDevToolOpen&quot;,value:function(){var e;console.warn(&quot;You don&#39;t have permission to use DEVTOOL!【type = &quot;.concat(this.type,&quot;】&quot;)),d.clearIntervalWhenDevOpenTrigger&amp;&amp;te(),window.clearTimeout(J),d.ondevtoolopen(this.type,t),e=this.type,S[e]=!0}},{key:&quot;init&quot;,value:function(){}}]),n}(),G=function(){c(t,k);var e=l(t);function t(){return o(this,t),e.call(this,{type:O.DebugLib})}return u(t,[{key:&quot;init&quot;,value:function(){}},{key:&quot;detect&quot;,value:function(){var e;(!0===(null==(e=null==(e=window.eruda)?void 0:e._devTools)?void 0:e._isShow)||window._vcOrigConsole&amp;&amp;window.document.querySelector(&quot;#__vconsole.vc-toggle&quot;))&amp;&amp;this.onDevToolOpen()}}],[{key:&quot;isUsing&quot;,value:function(){return!!window.eruda||!!window._vcOrigConsole}}]),t}(),Y=0,J=0,Q=[],Z=0;function ee(i){function e(){l=!0}function t(){l=!1}var n,o,r,u,c,a,l=!1;function f(){(a[u]===r?o:n)()}z(e,t),n=t,o=e,void 0!==(a=document).hidden?(r=&quot;hidden&quot;,c=&quot;visibilitychange&quot;,u=&quot;visibilityState&quot;):void 0!==a.mozHidden?(r=&quot;mozHidden&quot;,c=&quot;mozvisibilitychange&quot;,u=&quot;mozVisibilityState&quot;):void 0!==a.msHidden?(r=&quot;msHidden&quot;,c=&quot;msvisibilitychange&quot;,u=&quot;msVisibilityState&quot;):void 0!==a.webkitHidden&amp;&amp;(r=&quot;webkitHidden&quot;,c=&quot;webkitvisibilitychange&quot;,u=&quot;webkitVisibilityState&quot;),a.removeEventListener(c,f,!1),a.addEventListener(c,f,!1),Y=window.setInterval(function(){if(!(i.isSuspend||l||N())){var e,t,n=s(Q);try{for(n.s();!(e=n.n()).done;){var o=e.value;F(o.type),o.detect(Z++)}}catch(e){n.e(e)}finally{n.f()}g(),&quot;function&quot;==typeof d.ondevtoolclose&amp;&amp;(t=D,!$()&amp;&amp;t&amp;&amp;d.ondevtoolclose())}},d.interval),J=setTimeout(function(){b.pc||G.isUsing()||te()},d.stopIntervalTime)}function te(){window.clearInterval(Y)}var P=8;function ne(e){for(var t=function(e,t){e[t&gt;&gt;5]|=128&lt;&lt;t%32,e[14+(t+64&gt;&gt;&gt;9&lt;&lt;4)]=t;for(var n=1732584193,o=-271733879,i=-1732584194,r=271733878,u=0;u&lt;e.length;u+=16){var c=n,a=o,l=i,f=r;n=E(n,o,i,r,e[u+0],7,-680876936),r=E(r,n,o,i,e[u+1],12,-389564586),i=E(i,r,n,o,e[u+2],17,606105819),o=E(o,i,r,n,e[u+3],22,-1044525330),n=E(n,o,i,r,e[u+4],7,-176418897),r=E(r,n,o,i,e[u+5],12,1200080426),i=E(i,r,n,o,e[u+6],17,-1473231341),o=E(o,i,r,n,e[u+7],22,-45705983),n=E(n,o,i,r,e[u+8],7,1770035416),r=E(r,n,o,i,e[u+9],12,-1958414417),i=E(i,r,n,o,e[u+10],17,-42063),o=E(o,i,r,n,e[u+11],22,-1990404162),n=E(n,o,i,r,e[u+12],7,1804603682),r=E(r,n,o,i,e[u+13],12,-40341101),i=E(i,r,n,o,e[u+14],17,-1502002290),o=E(o,i,r,n,e[u+15],22,1236535329),n=I(n,o,i,r,e[u+1],5,-165796510),r=I(r,n,o,i,e[u+6],9,-1069501632),i=I(i,r,n,o,e[u+11],14,643717713),o=I(o,i,r,n,e[u+0],20,-373897302),n=I(n,o,i,r,e[u+5],5,-701558691),r=I(r,n,o,i,e[u+10],9,38016083),i=I(i,r,n,o,e[u+15],14,-660478335),o=I(o,i,r,n,e[u+4],20,-405537848),n=I(n,o,i,r,e[u+9],5,568446438),r=I(r,n,o,i,e[u+14],9,-1019803690),i=I(i,r,n,o,e[u+3],14,-187363961),o=I(o,i,r,n,e[u+8],20,1163531501),n=I(n,o,i,r,e[u+13],5,-1444681467),r=I(r,n,o,i,e[u+2],9,-51403784),i=I(i,r,n,o,e[u+7],14,1735328473),o=I(o,i,r,n,e[u+12],20,-1926607734),n=j(n,o,i,r,e[u+5],4,-378558),r=j(r,n,o,i,e[u+8],11,-2022574463),i=j(i,r,n,o,e[u+11],16,1839030562),o=j(o,i,r,n,e[u+14],23,-35309556),n=j(n,o,i,r,e[u+1],4,-1530992060),r=j(r,n,o,i,e[u+4],11,1272893353),i=j(i,r,n,o,e[u+7],16,-155497632),o=j(o,i,r,n,e[u+10],23,-1094730640),n=j(n,o,i,r,e[u+13],4,681279174),r=j(r,n,o,i,e[u+0],11,-358537222),i=j(i,r,n,o,e[u+3],16,-722521979),o=j(o,i,r,n,e[u+6],23,76029189),n=j(n,o,i,r,e[u+9],4,-640364487),r=j(r,n,o,i,e[u+12],11,-421815835),i=j(i,r,n,o,e[u+15],16,530742520),o=j(o,i,r,n,e[u+2],23,-995338651),n=L(n,o,i,r,e[u+0],6,-198630844),r=L(r,n,o,i,e[u+7],10,1126891415),i=L(i,r,n,o,e[u+14],15,-1416354905),o=L(o,i,r,n,e[u+5],21,-57434055),n=L(n,o,i,r,e[u+12],6,1700485571),r=L(r,n,o,i,e[u+3],10,-1894986606),i=L(i,r,n,o,e[u+10],15,-1051523),o=L(o,i,r,n,e[u+1],21,-2054922799),n=L(n,o,i,r,e[u+8],6,1873313359),r=L(r,n,o,i,e[u+15],10,-30611744),i=L(i,r,n,o,e[u+6],15,-1560198380),o=L(o,i,r,n,e[u+13],21,1309151649),n=L(n,o,i,r,e[u+4],6,-145523070),r=L(r,n,o,i,e[u+11],10,-1120210379),i=L(i,r,n,o,e[u+2],15,718787259),o=L(o,i,r,n,e[u+9],21,-343485551),n=C(n,c),o=C(o,a),i=C(i,l),r=C(r,f)}return Array(n,o,i,r)}(function(e){for(var t=Array(),n=(1&lt;&lt;P)-1,o=0;o&lt;e.length*P;o+=P)t[o&gt;&gt;5]|=(e.charCodeAt(o/P)&amp;n)&lt;&lt;o%32;return t}(e),e.length*P),n=&quot;0123456789abcdef&quot;,o=&quot;&quot;,i=0;i&lt;4*t.length;i++)o+=n.charAt(t[i&gt;&gt;2]&gt;&gt;i%4*8+4&amp;15)+n.charAt(t[i&gt;&gt;2]&gt;&gt;i%4*8&amp;15);return o}function x(e,t,n,o,i,r){return C((t=C(C(t,e),C(o,r)))&lt;&lt;i|t&gt;&gt;&gt;32-i,n)}function E(e,t,n,o,i,r,u){return x(t&amp;n|~t&amp;o,e,t,i,r,u)}function I(e,t,n,o,i,r,u){return x(t&amp;o|n&amp;~o,e,t,i,r,u)}function j(e,t,n,o,i,r,u){return x(t^n^o,e,t,i,r,u)}function L(e,t,n,o,i,r,u){return x(n^(t|~o),e,t,i,r,u)}function C(e,t){var n=(65535&amp;e)+(65535&amp;t);return(e&gt;&gt;16)+(t&gt;&gt;16)+(n&gt;&gt;16)&lt;&lt;16|65535&amp;n}var A=function(){c(t,k);var e=l(t);function t(){return o(this,t),e.call(this,{type:O.RegToString,enabled:b.qqBrowser||b.firefox})}return u(t,[{key:&quot;init&quot;,value:function(){var t=this;this.lastTime=0,this.reg=/./,p(this.reg),this.reg.toString=function(){var e;return b.qqBrowser?(e=(new Date).getTime(),t.lastTime&amp;&amp;e-t.lastTime&lt;100?t.onDevToolOpen():t.lastTime=e):b.firefox&amp;&amp;t.onDevToolOpen(),&quot;&quot;}}},{key:&quot;detect&quot;,value:function(){p(this.reg)}}]),t}(),oe=function(){c(t,k);var e=l(t);function t(){return o(this,t),e.call(this,{type:O.DefineId})}return u(t,[{key:&quot;init&quot;,value:function(){var e=this;this.div=document.createElement(&quot;div&quot;),this.div.__defineGetter__(&quot;id&quot;,function(){e.onDevToolOpen()}),Object.defineProperty(this.div,&quot;id&quot;,{get:function(){e.onDevToolOpen()}})}},{key:&quot;detect&quot;,value:function(){p(this.div)}}]),t}(),ie=function(){c(t,k);var e=l(t);function t(){return o(this,t),e.call(this,{type:O.Size,enabled:!b.iframe&amp;&amp;!b.edge})}return u(t,[{key:&quot;init&quot;,value:function(){var e=this;this.checkWindowSizeUneven(),window.addEventListener(&quot;resize&quot;,function(){setTimeout(function(){e.checkWindowSizeUneven()},100)},!0)}},{key:&quot;detect&quot;,value:function(){}},{key:&quot;checkWindowSizeUneven&quot;,value:function(){var e=function(){if(re(window.devicePixelRatio))return window.devicePixelRatio;var e=window.screen;return!!(re(e)&amp;&amp;e.deviceXDPI&amp;&amp;e.logicalXDPI)&amp;&amp;e.deviceXDPI/e.logicalXDPI}();if(!1!==e){var t=200&lt;window.outerWidth-window.innerWidth*e,e=300&lt;window.outerHeight-window.innerHeight*e;if(t||e)return this.onDevToolOpen(),!1;F(this.type)}return!0}}]),t}();function re(e){return null!=e}var _,ue=function(){c(t,k);var e=l(t);function t(){return o(this,t),e.call(this,{type:O.DateToString,enabled:!b.iosChrome&amp;&amp;!b.iosEdge})}return u(t,[{key:&quot;init&quot;,value:function(){var e=this;this.count=0,this.date=new Date,this.date.toString=function(){return e.count++,&quot;&quot;}}},{key:&quot;detect&quot;,value:function(){this.count=0,p(this.date),g(),2&lt;=this.count&amp;&amp;this.onDevToolOpen()}}]),t}(),ce=function(){c(t,k);var e=l(t);function t(){return o(this,t),e.call(this,{type:O.FuncToString,enabled:!b.iosChrome&amp;&amp;!b.iosEdge})}return u(t,[{key:&quot;init&quot;,value:function(){var e=this;this.count=0,this.func=function(){},this.func.toString=function(){return e.count++,&quot;&quot;}}},{key:&quot;detect&quot;,value:function(){this.count=0,p(this.func),g(),2&lt;=this.count&amp;&amp;this.onDevToolOpen()}}]),t}(),ae=function(){c(t,k);var e=l(t);function t(){return o(this,t),e.call(this,{type:O.Debugger,enabled:b.iosChrome||b.iosEdge})}return u(t,[{key:&quot;detect&quot;,value:function(){var e=v();100&lt;v()-e&amp;&amp;this.onDevToolOpen()}}]),t}(),le=function(){c(n,k);var t=l(n);function n(){var e;return o(this,n),(e=t.call(this,{type:O.Performance,enabled:b.chrome||!b.mobile})).count=0,e}return u(n,[{key:&quot;init&quot;,value:function(){this.maxPrintTime=0,this.largeObjectArray=M()}},{key:&quot;detect&quot;,value:function(){var e=this,t=h(function(){y(e.largeObjectArray)}),n=h(function(){p(e.largeObjectArray)});if(this.maxPrintTime=Math.max(this.maxPrintTime,n),g(),0===t||0===this.maxPrintTime)return!1;t&gt;10*this.maxPrintTime&amp;&amp;(2&lt;=this.count?this.onDevToolOpen():(this.count++,this.detect()))}}]),n}(),fe=(e(_={},O.RegToString,A),e(_,O.DefineId,oe),e(_,O.Size,ie),e(_,O.DateToString,ue),e(_,O.FuncToString,ce),e(_,O.Debugger,ae),e(_,O.Performance,le),e(_,O.DebugLib,G),_);var R=Object.assign(function(e){function t(){var e=0&lt;arguments.length&amp;&amp;void 0!==arguments[0]?arguments[0]:&quot;&quot;;return{success:!e,reason:e}}var n;if(R.isRunning)return t(&quot;already running&quot;);if(W(),n=window.console||{log:function(){},table:function(){},clear:function(){}},B=b.ie?(p=function(){return n.log.apply(n,arguments)},y=function(){return n.table.apply(n,arguments)},function(){return n.clear()}):(p=n.log,y=n.table,n.clear),q(e),d.md5&amp;&amp;ne(function(e){var t=window.location.search,n=window.location.hash;if(&quot;&quot;!==(t=&quot;&quot;===t&amp;&amp;&quot;&quot;!==n?&quot;?&quot;.concat(n.split(&quot;?&quot;)[1]):t)&amp;&amp;void 0!==t){n=new RegExp(&quot;(^|&amp;)&quot;+e+&quot;=([^&amp;]*)(&amp;|$)&quot;,&quot;i&quot;),e=t.substr(1).match(n);if(null!=e)return unescape(e[2])}return&quot;&quot;}(d.tkName))===d.md5)return t(&quot;token passed&quot;);if(d.seo&amp;&amp;b.seoBot)return t(&quot;seobot&quot;);R.isRunning=!0,ee(R);var o=R,i=(X=function(){return o.isSuspend},window.top),r=window.parent;if(w(window),d.disableIframeParents&amp;&amp;i&amp;&amp;r&amp;&amp;i!==window){for(;r!==i;)w(r),r=r.parent;w(i)}return(&quot;all&quot;===d.detectors?Object.keys(fe):d.detectors).forEach(function(e){new fe[e]}),t()},{isRunning:!1,isSuspend:!1,md5:ne,version:&quot;0.3.9&quot;,DetectorType:O,isDevToolOpened:$});A=function(){if(&quot;undefined&quot;==typeof window||!window.document)return null;var n=document.querySelector(&quot;[disable-devtool-auto]&quot;);if(!n)return null;var o=[&quot;disable-menu&quot;,&quot;disable-select&quot;,&quot;disable-copy&quot;,&quot;disable-cut&quot;,&quot;disable-paste&quot;,&quot;clear-log&quot;],i=[&quot;interval&quot;],r={};return[&quot;md5&quot;,&quot;url&quot;,&quot;tk-name&quot;,&quot;detectors&quot;].concat(o,i).forEach(function(e){var t=n.getAttribute(e);null!==t&amp;&amp;(-1!==i.indexOf(e)?t=parseInt(t):-1!==o.indexOf(e)?t=&quot;false&quot;!==t:&quot;detector&quot;===e&amp;&amp;&quot;all&quot;!==t&amp;&amp;(t=t.split(&quot; &quot;)),r[function(e){if(-1===e.indexOf(&quot;-&quot;))return e;var t=!1;return e.split(&quot;&quot;).map(function(e){return&quot;-&quot;===e?(t=!0,&quot;&quot;):t?(t=!1,e.toUpperCase()):e}).join(&quot;&quot;)}(e)]=t)}),r}();return A&amp;&amp;R(A),R});&lt;/script&gt;








</description><link>https://www.plus-ui.blog/2025/11/plus-ui-menu-generator-tool.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirzlrDzMIOW0cel9WaOJ5vO-WI6dYRFjknXtJNcw3ncHc5G9fXyZB5XRyrQCCOkcPmXvgaobeUZoEM6oG83UOJbxfcw7yKMuk8L8BK3OKRM_KrzIe573XDhEChRHbIw4QQa8kmtxi6j7jsojZCO6TPGaB2vKf0ZkPzdHBsewkN_jlDAn7r7LoDM_7hjvU/s72-w600-h337-c/Plus-UI-Menu-Generator-Tool.png" height="72" width="72"/><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8128085283179772973.post-1853888219985365318</guid><pubDate>Sun, 19 Oct 2025 02:44:00 +0000</pubDate><atom:updated>2025-12-08T08:09:39.886-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Documentation</category><title>Safelink and Shortlink - v3.2+</title><description>&lt;!--[ Explicitly sets post snippet ]--&gt;
&lt;div aria-hidden=&quot;true&quot; hidden=&quot;&quot;&gt;
Create short and safe URLs easily using the built-in Shortlink and Safelink Generator.
&lt;/div&gt;
&lt;!--[&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;div class=&#39;separator&#39;&gt;&lt;img src=&#39;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVnRlVRDOUWbzWLR7Il-OSc8oery73gZ0V7ygxYBYSOSs7gBpRTVRHd9f-3ob-VD5qGEI98DFWE9DmKV3bVTNYEWi5zFQLbvNlZyqXnOc6YSMUmWaUXNKdRtDnl3-O_o7boJ4oWFLq7qQ3zaKgmMq_NP_ak1BuIKkpKYrBU1mazEuD3LM9566_A5oVDb0/s320/safelink-and-shortlink-generator.png&#39;/&gt;&lt;/div&gt;

]--&gt;

&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;

&lt;p class=&quot;note wr&quot;&gt;&lt;u&gt;Shortlink &amp;amp; Safelink Generator&lt;/u&gt; tools are designed to help you easily create shortened URLs and secure them with safelink redirection. These features were introduced in &lt;b&gt;Plus UI v3.2+&lt;/b&gt;.&lt;/p&gt;

&lt;!--&lt;p class=&#39;note wr&#39;&gt;
  &lt;b&gt;Experimental Features!&lt;/b&gt;&lt;br&gt;
  Both the &lt;u&gt;Shortlink&lt;/u&gt; and &lt;u&gt;Safelink Generator&lt;/u&gt; are in experimental stage. Your feedback will help improve stability and performance in upcoming updates.
&lt;/p&gt;--&gt;

&lt;!--Alert Info--&gt;
&lt;div class=&quot;alert info outline&quot;&gt;
  &lt;b&gt;Looking for Demo?&lt;/b&gt;  
  You can view the live demo of both generators here:  
  &lt;a href=&quot;/p/safelink-generator.html&quot;&gt;Safelink Generator&lt;/a&gt; | 
  &lt;a href=&quot;/p/shortlink-generator.html&quot;&gt;Shortlink Generator&lt;/a&gt;
| 
  &lt;a href=&quot;/p/safelink-shortlink-generator.html&quot;&gt;Safelink + Shortlink Generator&lt;/a&gt;
&lt;/div&gt;

&lt;h2&gt;Shortlink Generator&lt;/h2&gt;

&lt;p&gt;The Shortlink Generator uses Firebase Dynamic Links to create short, shareable links. These links can redirect users to your desired URLs while allowing tracking, branding, and optional analytics.&lt;/p&gt;

&lt;p&gt;To enable this feature, you must configure your Firebase API credentials first.&lt;/p&gt;

&lt;ol class=&quot;steps&quot;&gt;
  &lt;li&gt;Open your Firebase Console and navigate to &lt;b&gt;Dynamic Links&lt;/b&gt;.&lt;/li&gt;
  &lt;li&gt;Create a new domain, for example: &lt;code&gt;https://example.page.link&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;Copy your &lt;b&gt;API Key&lt;/b&gt; from &lt;code&gt;Project Settings → General → Web API Key&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;Replace the placeholder values in the script:
    &lt;pre&gt;&lt;code&gt;const SHORTLINK_DOMAIN = &quot;https://YOUR_DOMAIN.page.link&quot;;
const SHORTLINK_KEY = &quot;YOUR_FIREBASE_API_KEY&quot;;&lt;/code&gt;&lt;/pre&gt;
  &lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;How to Get Firebase Web API Key&lt;/h3&gt;

&lt;ol class=&quot;steps&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;https://console.firebase.google.com/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;Go to Firebase Console&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Select an existing project or create a new one.&lt;/li&gt;
  &lt;li&gt;Navigate to &lt;b&gt;Project Settings → General&lt;/b&gt; to find your &lt;b&gt;Web API Key&lt;/b&gt;.&lt;/li&gt;
&lt;/ol&gt;

  &lt;p class=&quot;note&quot;&gt;If the key isn’t visible, go to &lt;b&gt;Authentication&lt;/b&gt; and enable any Auth provider. This will generate the key automatically.&lt;/p&gt;
&lt;h3&gt;How to Create a &lt;code&gt;page.link&lt;/code&gt; Domain for Dynamic Links&lt;/h3&gt;

&lt;ol class=&quot;steps&quot;&gt;
  &lt;li&gt;In Firebase Console, open &lt;b&gt;Engage → Dynamic Links&lt;/b&gt;.&lt;/li&gt;
  &lt;li&gt;Click &lt;b&gt;Get Started&lt;/b&gt; and enter your desired domain (e.g., &lt;code&gt;fineshop.page.link&lt;/code&gt;).
  &lt;p class=&quot;note&quot;&gt;Your domain must end with &lt;code&gt;page.link&lt;/code&gt; and can contain only alphabets and numbers.&lt;/p&gt;&lt;/li&gt;
  &lt;li&gt;Once completed, you’ll see a success notification. Note down your &lt;b&gt;page.link&lt;/b&gt; domain for use in your script.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Adding the Script to Blogger&lt;/h3&gt;
&lt;p&gt;
  After setting up your Firebase credentials, paste the following JavaScript code into your Blogger page’s HTML view:
&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!-- [Begin: Shortlink Generator area] --&amp;gt;

&amp;lt;style&amp;gt;
.inF.cB button,.sgOw{align-items:center;background:var(--contentB)}.inF.cB button,.sgOw button{display:flex;cursor:pointer}.inF.cB button{--svgW:16px;--svgH:16px;position:absolute;inset-block-start:10px;inset-inline-end:10px;width:30px;height:30px;justify-content:center;border-radius:8px;border:1px solid var(--contentLa);opacity:.5}.inF.cB input{padding-inline-end:50px}.inF.cB input:not(:placeholder-shown)~button{opacity:1}.sgMw{max-width:600px;margin:40px auto}.sgOw{display:flex;gap:12px 8px;flex-wrap:wrap;border:1px solid var(--contentL);border-radius:5px;padding:12px}.sgOw span{width:100%;line-height:1.4em;font-size:14px}.sgOw button{--svgW:20px;--svgH:20px;align-items:center;justify-content:center;flex-shrink:0;width:36px;height:36px;background:var(--linkB);color:#fffdfc;border-radius:8px}.sgOs{flex:1 1 35%;width:100%;max-width:120px;margin:12px 0;padding:16px}
&amp;lt;/style&amp;gt;

&amp;lt;script&amp;gt;
// Firebase shortlink config
  const SHORTLINK_DOMAIN = &quot;https://XXXXXX.page.link&quot;; // Replace
  const SHORTLINK_KEY = &quot;XXXXXXXX-NNN-7VVVVV-UUUUUUU-P&quot;; // Replace
  
/*! Plus UI Javascript (shortlink/generator.js) | Authors: Deo Kumar, Armaan Kumar | Refactored 2025 */
 
&quot;use strict&quot;;((t,e,n)=&amp;gt;{let{cEl:_,iAE:i,aEL:s,qSel:r,gId:o,eHTML:a,tNtf:l}=n,c=_(&quot;div&quot;,{className:&quot;sgMw&quot;,innerHTML:`&amp;lt;div class=&quot;inF cB&quot; style=&quot;position:relative&quot;&amp;gt;&amp;lt;input type=&quot;text&quot; name=&quot;link&quot; id=&quot;sg_f_link&quot; placeholder=&quot; &quot; autocomplete=&quot;off&quot;&amp;gt;&amp;lt;label for=&quot;sg_f_link&quot;&amp;gt;Destination URL&amp;lt;/label&amp;gt;&amp;lt;button type=&quot;button&quot; id=&quot;sg_f_clear_link&quot; title=&quot;Clear&quot;&amp;gt;&amp;lt;svg class=&quot;line&quot; viewBox=&quot;0 0 24 24&quot; width=&quot;14&quot; height=&quot;14&quot;&amp;gt;&amp;lt;path d=&quot;M19.0005 4.99988L5.00049 18.9999M5.00049 4.99988L19.0005 18.9999&quot;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;/svg&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&quot;sgOw&quot;&amp;gt;&amp;lt;span class=&quot;sgOl&quot;&amp;gt;Enter a URL to shorten&amp;lt;/span&amp;gt;&amp;lt;button type=&quot;button&quot; class=&quot;sgOs&quot; id=&quot;sg_f_shorten&quot;&amp;gt;Shorten&amp;lt;/button&amp;gt;&amp;lt;button type=&quot;button&quot; class=&quot;sgOv&quot; title=&quot;Open Link&quot;&amp;gt;&amp;lt;svg class=&quot;line&quot; viewBox=&quot;0 0 24 24&quot; width=&quot;16&quot; height=&quot;16&quot;&amp;gt;&amp;lt;path d=&quot;M15.58 12C15.58 13.98 13.98 15.58 12 15.58C10.02 15.58 8.42004 13.98 8.42004 12C8.42004 10.02 10.02 8.42004 12 8.42004C13.98 8.42004 15.58 10.02 15.58 12Z&quot;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;path d=&quot;M12 20.27C15.53 20.27 18.82 18.19 21.11 14.59C22.01 13.18 22.01 10.81 21.11 9.39997C18.82 5.79997 15.53 3.71997 12 3.71997C8.46997 3.71997 5.17997 5.79997 2.88997 9.39997C1.98997 10.81 1.98997 13.18 2.88997 14.59C5.17997 18.19 8.46997 20.27 12 20.27Z&quot;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;/svg&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;button type=&quot;button&quot; class=&quot;sgOc&quot; title=&quot;Copy Link&quot;&amp;gt;&amp;lt;svg class=&quot;line&quot; viewBox=&quot;0 0 24 24&quot; width=&quot;16&quot; height=&quot;16&quot;&amp;gt;&amp;lt;path d=&quot;M16 12.9V17.1C16 20.6 14.6 22 11.1 22H6.9C3.4 22 2 20.6 2 17.1V12.9C2 9.4 3.4 8 6.9 8H11.1C14.6 8 16 9.4 16 12.9Z&quot;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;path d=&quot;M22 6.9V11.1C22 14.6 20.6 16 17.1 16H16V12.9C16 9.4 14.6 8 11.1 8H8V6.9C8 3.4 9.4 2 12.9 2H17.1C20.6 2 22 3.4 22 6.9Z&quot;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;/svg&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;/div&amp;gt;`});e.currentScript.before(c);let $=o(&quot;sg_f_link&quot;),d=o(&quot;sg_f_clear_link&quot;),h=c.querySelector(&quot;.sgOl&quot;),p=c.querySelector(&quot;.sgOv&quot;),g=c.querySelector(&quot;.sgOc&quot;),k=o(&quot;sg_f_shorten&quot;),u=t=&amp;gt;(t=(t||&quot;&quot;).trim(),/^https?:\/\//i.test(t)?t:t?`https://${t}`:null),v=t=&amp;gt;{h.textContent=t||&quot;Enter a URL to shorten&quot;};d.addEventListener(&quot;click&quot;,()=&amp;gt;{$.value=&quot;&quot;,v()});let y=async()=&amp;gt;{let t=u($.value);if(!t)return l(&quot;Please enter a valid URL!&quot;);v(&quot;Shortening...&quot;);let e=`https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=${encodeURIComponent(SHORTLINK_KEY)}`,n={dynamicLinkInfo:{domainUriPrefix:SHORTLINK_DOMAIN,link:t},suffix:{option:&quot;SHORT&quot;}};try{let _=await fetch(e,{method:&quot;POST&quot;,headers:{&quot;Content-Type&quot;:&quot;application/json&quot;},body:JSON.stringify(n)});if(!_.ok){let i=await _.text();return console.error(&quot;Shortlink API response:&quot;,_.status,i),l(&quot;API error occurred!&quot;)}let s=await _.json();s&amp;amp;&amp;amp;s.shortLink?v(s.shortLink):(console.error(&quot;Unexpected API response:&quot;,s),l(&quot;Failed to generate short link!&quot;))}catch(r){console.error(r),l(&quot;Network or CORS error!&quot;)}};$.addEventListener(&quot;keydown&quot;,t=&amp;gt;&quot;Enter&quot;===t.key&amp;amp;&amp;amp;y()),k.addEventListener(&quot;click&quot;,y),p.addEventListener(&quot;click&quot;,()=&amp;gt;{let e=h.textContent;!e||e.startsWith(&quot;Enter&quot;)||e.startsWith(&quot;Shortening&quot;)||e.startsWith(&quot;Error&quot;)?l(&quot;No valid link to open!&quot;):t.open(e,&quot;_blank&quot;)}),g.addEventListener(&quot;click&quot;,async()=&amp;gt;{let t=h.textContent;if(!t||t.startsWith(&quot;Enter&quot;)||t.startsWith(&quot;Shortening&quot;)||t.startsWith(&quot;Error&quot;))l(&quot;No link to copy!&quot;);else try{await navigator.clipboard.writeText(t),l(&quot;Link copied to clipboard!&quot;)}catch(e){console.error(e),l(&quot;Copy failed — select and copy manually.&quot;)}}),$.addEventListener(&quot;input&quot;,()=&amp;gt;{v(&quot;Enter a URL to shorten&quot;)}),v()})(window,document,PU);
&amp;lt;/script&amp;gt;
&amp;lt;!-- [End: Shortlink Generator area] --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Safelink + Shortlink Generator&lt;/h2&gt;

&lt;p&gt;This combined generator provides both link-shortening and safelink encryption. It encodes outgoing links for extra security and monetization flexibility while also providing Firebase-based shortlinks.&lt;/p&gt;

&lt;ol class=&quot;steps&quot;&gt;
  &lt;li&gt;Ensure &lt;b&gt;Safelink Plugin&lt;/b&gt; is enabled from Theme Designer.&lt;/li&gt;
  &lt;li&gt;Configure at least one safelink page in your Theme HTML editor (see &lt;a href=&quot;/2024/10/safelink.html&quot;&gt;Safelink Setup Guide&lt;/a&gt;).&lt;/li&gt;
  &lt;li&gt;Replace Firebase credentials in the script below.&lt;/li&gt;
  &lt;li&gt;Paste the code inside a new Blogger page (HTML view).&lt;/li&gt;
&lt;/ol&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Begin: Safelink + Shortlink Generator area ]--&amp;gt;
&amp;lt;style&amp;gt;.inF.cB button,.sgOw{align-items:center;background:var(--contentB)}.inF.cB button,.sgOw button{display:flex;cursor:pointer}.inF.cB button{--svgW:16px;--svgH:16px;position:absolute;inset-block-start:10px;inset-inline-end:10px;width:30px;height:30px;justify-content:center;border-radius:8px;border:1px solid var(--contentLa);opacity:.5}.inF.cB input{padding-inline-end:50px}.inF.cB input:not(:placeholder-shown)~button{opacity:1}.sgMw{max-width:600px;margin:40px auto}.sgOw{display:flex;gap:12px 8px;flex-wrap:wrap;border:1px solid var(--contentL);border-radius:5px;padding:12px}.sgOw span{width:100%;line-height:1.4em;font-size:14px}.sgOw button{--svgW:20px;--svgH:20px;align-items:center;justify-content:center;flex-shrink:0;width:36px;height:36px;background:var(--linkB);color:#fffdfc;border-radius:8px}.sgOs{flex:1 1 35%;width:100%;max-width:120px;margin:12px 0;padding:16px}&amp;lt;/style&amp;gt;




&amp;lt;script&amp;gt;
    // Firebase shortlink config
    const SHORTLINK_DOMAIN = &quot;https://XXXXXX.page.link&quot;; // Replace
    const SHORTLINK_KEY = &quot;XXXXXXXX-NNN-7VVVVV-UUUUUUU-P&quot;; // Replace
  
 /*! Plus UI Javascript (safelink+Shortlink/generator.js) | Authors: Deo Kumar, Armaan Kumar | Refactored 2025 */
&quot;use strict&quot;;((t,e,n)=&amp;gt;{let{cEl:_,iAE:i,aEL:a,qSel:l,gId:s,eHTML:r,tNtf:o,df:p,pl:$,bg:g}=n,u=t=&amp;gt;{var n,_;return _=t.replace(/(^\w+:|^)/,&quot;&quot;),new URL(_,e.baseURI)},c=$.sl,h=c.pg.map(t=&amp;gt;new URL(t,g.cnHmU).href),d=e.currentScript,f=[];c.ok||f.push(&quot;The Safelink plugin is not enabled.&quot;),0===h.length&amp;amp;&amp;amp;f.push(&quot;No Safelink page has been configured!&quot;);let v=_(&quot;div&quot;,{className:&quot;sgMw&quot;,innerHTML:`${0!==f.length?`&amp;lt;div class=&#39;alert warning&#39;&amp;gt;&amp;lt;b&amp;gt;Warning!&amp;lt;/b&amp;gt;${f.map((t,e)=&amp;gt;`${e+1}. ${t}`).join(&quot;&amp;lt;br&amp;gt;&quot;)}&amp;lt;/div&amp;gt;`:&quot;&quot;}&amp;lt;div class=&#39;inF cB&#39; data-message=&#39;URL must begin with http:// or https://&#39;&amp;gt;&amp;lt;input type=&#39;text&#39; name=&#39;link&#39; id=&#39;sg_f_link&#39; placeholder=&#39; &#39;&amp;gt;&amp;lt;label for=&#39;sg_f_link&#39;&amp;gt;Destination URL&amp;lt;/label&amp;gt;&amp;lt;button type=&#39;button&#39; id=&#39;sg_f_clear_link&#39;&amp;gt;&amp;lt;svg class=&#39;line&#39; viewBox=&#39;0 0 24 24&#39;&amp;gt;&amp;lt;path d=&#39;M19.0005 4.99988L5.00049 18.9999M5.00049 4.99988L19.0005 18.9999&#39;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;/svg&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&#39;inF&#39; data-message=&#39;Select a page for safelink&#39;&amp;gt;&amp;lt;select id=&#39;sg_f_page&#39;&amp;gt;${c.ok?`&amp;lt;optgroup label=&#39;Static pages&#39;&amp;gt;&amp;lt;option value=&#39;${r(g.cnHmU)}&#39; selected&amp;gt;Homepage&amp;lt;/option&amp;gt;&amp;lt;/optgroup&amp;gt;`:&quot;&quot;}${c.ver||0===h.length?&quot;&quot;:`&amp;lt;optgroup label=&#39;Safelink Pages&#39;&amp;gt;${h.reduce((t,e,n)=&amp;gt;`${t}&amp;lt;option value=&#39;${r(e)}&#39;${0===n?&quot; selected&quot;:&quot;&quot;}&amp;gt;Safelink Page (${r(c.pg[n])})&amp;lt;/option&amp;gt;`,&quot;&quot;)}&amp;lt;/optgroup&amp;gt;`}&amp;lt;/select&amp;gt;&amp;lt;label for=&#39;sg_f_page&#39;&amp;gt;Safelink Page&amp;lt;/label&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&#39;sgOw&#39;&amp;gt;&amp;lt;span class=&#39;sgOl&#39;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;button type=&#39;button&#39; class=&#39;sgOs&#39; id=&#39;sg_f_shorten&#39;&amp;gt;&amp;lt;svg class=&#39;line&#39; viewBox=&#39;0 0 24 24&#39;&amp;gt;&amp;lt;path d=&#39;M13.0601 10.9399C15.3101 13.1899 15.3101 16.8299 13.0601 19.0699C10.8101 21.3099 7.17009 21.3199 4.93009 19.0699C2.69009 16.8199 2.68009 13.1799 4.93009 10.9399&#39;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;path d=&#39;M10.59 13.4099C8.24996 11.0699 8.24996 7.26988 10.59 4.91988C12.93 2.56988 16.73 2.57988 19.08 4.91988C21.43 7.25988 21.42 11.0599 19.08 13.4099&#39;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;/svg&amp;gt;Short it&amp;lt;/button&amp;gt;&amp;lt;button type=&#39;button&#39; class=&#39;sgOv&#39;&amp;gt;&amp;lt;svg class=&#39;line&#39; viewBox=&#39;0 0 24 24&#39;&amp;gt;&amp;lt;path d=&#39;M15.58 12C15.58 13.98 13.98 15.58 12 15.58C10.02 15.58 8.42 13.98 8.42 12C8.42 10.02 10.02 8.42 12 8.42C13.98 8.42 15.58 10.02 15.58 12Z&#39;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;path d=&#39;M12 20.27C15.53 20.27 18.82 18.19 21.11 14.59C22.01 13.18 22.01 10.81 21.11 9.39997C18.82 5.79997 15.53 3.71997 12 3.71997C8.47 3.71997 5.18 5.79997 2.88997 9.39997C1.98997 10.81 1.98997 13.18 2.88997 14.59C5.18 18.19 8.47 20.27 12 20.27Z&#39;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;/svg&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;button type=&#39;button&#39; class=&#39;sgOc&#39;&amp;gt;&amp;lt;svg class=&#39;line&#39; viewBox=&#39;0 0 24 24&#39;&amp;gt;&amp;lt;path d=&#39;M16 12.9V17.1C16 20.6 14.6 22 11.1 22H6.9C3.4 22 2 20.6 2 17.1V12.9C2 9.4 3.4 8 6.9 8H11.1C14.6 8 16 9.4 16 12.9Z&#39;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;path d=&#39;M22 6.9V11.1C22 14.6 20.6 16 17.1 16H16V12.9C16 9.4 14.6 8 11.1 8H8V6.9C8 3.4 9.4 2 12.9 2H17.1C20.6 2 22 3.4 22 6.9Z&#39;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;/svg&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;/div&amp;gt; `});i(d,&quot;beforebegin&quot;,v);let b=s(&quot;sg_f_link&quot;),k=s(&quot;sg_f_clear_link&quot;),C=s(&quot;sg_f_page&quot;),m=l(&quot;.sgOl&quot;,v),w=l(&quot;.sgOv&quot;,v),y=l(&quot;.sgOc&quot;,v),L=l(&quot;#sg_f_shorten&quot;,v),T=()=&amp;gt;{if(!n.B64)return null;let t=b.value.trim();return t?(/^https?:\/\//.test(t)||(t=`https://${t}`),`${C.value}#s=${encodeURIComponent(n.B64.O3.e(JSON.stringify({v:1,u:t})))}`):null},H=()=&amp;gt;{m.innerText=T()||&quot;Input a valid Destination URL first!&quot;};async function x(t){if(!t)return null;try{let e=await fetch(`https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=${SHORTLINK_KEY}`,{method:&quot;POST&quot;,headers:{&quot;Content-Type&quot;:&quot;application/json&quot;},body:JSON.stringify({dynamicLinkInfo:{domainUriPrefix:SHORTLINK_DOMAIN,link:t},suffix:{option:&quot;SHORT&quot;}})});if(!e.ok)return o(&quot;Error generating shortlink&quot;),null;return(await e.json()).shortLink||null}catch(n){return console.error(n),o(&quot;Network error&quot;),null}}H(),a(b,&quot;change&quot;,H),a(b,&quot;input&quot;,H),a(b,&quot;keyup&quot;,H),a(C,&quot;change&quot;,H),a(C,&quot;input&quot;,H),a(b,&quot;blur&quot;,()=&amp;gt;{let t=b.value.trim();&quot;&quot;!==t&amp;amp;&amp;amp;(/^https?:\/\//.test(t)?b.value!==t&amp;amp;&amp;amp;(b.value=t):b.value=`https://${t}`)}),a(k,&quot;click&quot;,()=&amp;gt;{b.value=&quot;&quot;,H()}),a(L,&quot;click&quot;,async()=&amp;gt;{let t=T();if(!t)return o(&quot;Enter a valid URL first!&quot;);m.innerText=&quot;Generating short safe link...&quot;;let e=await x(t);m.innerText=e||t}),a(w,&quot;click&quot;,()=&amp;gt;{let e=m.innerText.trim(),n=T(),_=/^https?:\/\//.test(e)?e:n;if(!_)return o(&quot;Enter a valid URL first!&quot;);t.open(_,&quot;_blank&quot;)}),a(y,&quot;click&quot;,async()=&amp;gt;{let t=m.innerText.trim(),e=T(),_=/^https?:\/\//.test(t)?t:e;if(!_)return o(&quot;Enter a valid URL first!&quot;);await n.cpT(_),o(&quot;Link copied to clipboard!&quot;),m.innerText=_}),p.then(()=&amp;gt;{H(),c.ver||n.iBF().then(async t=&amp;gt;{let e=new t(u(g.cnHmU)),[n,i]=await Promise.all([e.posts.list(),e.pages.list()]),a=_(&quot;optgroup&quot;,{attributes:{label:&quot;Recent Posts&quot;},innerHTML:n.reduce((t,e)=&amp;gt;`${t}&amp;lt;option value=&#39;${r(e.url)}&#39;&amp;gt;${r(e.title)}&amp;lt;/option&amp;gt;`,&quot;&quot;)});C.appendChild(a);let l=_(&quot;optgroup&quot;,{attributes:{label:&quot;Recent Pages&quot;},innerHTML:i.reduce((t,e)=&amp;gt;`${t}&amp;lt;option value=&#39;${r(e.url)}&#39;&amp;gt;${r(e.title)}&amp;lt;/option&amp;gt;`,&quot;&quot;)});C.appendChild(l)})})})(window,document,PU);
&amp;lt;/script&amp;gt;

&amp;lt;!--[ End: Safelink + Shortlink Generator area ]--&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Tips&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Always replace your Firebase keys with real credentials before testing.&lt;/li&gt;
  &lt;li&gt;If the shortened or safelinked URL doesn’t open, ensure your API permissions are set to public.&lt;/li&gt;
  &lt;li&gt;Enable “Safelink Plugin” under Theme Designer → Advanced → Plugin: Safelink (Experimental).&lt;/li&gt;
  &lt;li&gt;Use &lt;code&gt;class=&#39;safeL&#39;&lt;/code&gt; on anchor links to auto-wrap them in safelink.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;conclusion&lt;/h2&gt;

&lt;p&gt;Once you add the above code, your page will include a modern interface like this:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;A text box to enter destination URLs&lt;/li&gt;
  &lt;li&gt;Buttons to shorten, copy, and open links&lt;/li&gt;
  &lt;li&gt;Dropdown to select safelink pages&lt;/li&gt;
  &lt;li&gt;Built-in warnings if safelink is not enabled or configured&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;alert success outline&quot;&gt;
  &lt;b&gt;Done!&lt;/b&gt; You’ve successfully set up the Shortlink and Safelink Generator in your Blogger theme.
&lt;/div&gt;</description><link>https://www.plus-ui.blog/2025/10/safelink-and-shortlink-v32.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVnRlVRDOUWbzWLR7Il-OSc8oery73gZ0V7ygxYBYSOSs7gBpRTVRHd9f-3ob-VD5qGEI98DFWE9DmKV3bVTNYEWi5zFQLbvNlZyqXnOc6YSMUmWaUXNKdRtDnl3-O_o7boJ4oWFLq7qQ3zaKgmMq_NP_ak1BuIKkpKYrBU1mazEuD3LM9566_A5oVDb0/s72-c/safelink-and-shortlink-generator.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8128085283179772973.post-8734251412356965807</guid><pubDate>Sun, 27 Oct 2024 16:00:00 +0000</pubDate><atom:updated>2026-08-26T05:38:47.388-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Documentation</category><title>UI Components and Typography</title><description>&lt;!--[ Explicitly sets post snippet . ]--&gt;
&lt;div hidden aria-hidden=&#39;true&#39;&gt;All new Components and Typography writing formats for version 3.&lt;/div&gt;

&lt;!--[ Explicitly sets post thumbnail ]--&gt;
&lt;!--[
  &lt;div class=&#39;separator&#39;&gt;&lt;img src=&#39;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjE3-FH9jTSQr9_6YoaPz-K7G9wwb6X2SaZ6qFxA2VqgstFAlLK7IXtvF7uhGRrv4d3FkwFH0a2Am32Ef6RLlB_CquJxR9geCEQH2b_aBtjtXwikxXpf38b22w4dgJk7tMqmeZjI3xDyII7VvG3F2Bt1-YDxfaJY0X9Lms8A9tcY60Y5se31SfTL5lXDT4/s1280/ui-components-and-typography.png&#39;/&gt;&lt;/div&gt;
]--&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;p class=&#39;alert info outline&#39;&gt;&lt;b&gt;Using v2.6?&lt;/b&gt;
  Looking for v2.6 documentation? Take a look at &lt;a class=&quot;extL&quot; href=&quot;https://plus-ui-preview.blogspot.com&quot; rel=&quot;nofollow noreferrer noopener&quot; target=&quot;_blank&quot;&gt;old documentation&lt;/a&gt;.
&lt;/p&gt;
&lt;!--[ Automatic Table of Contents ]--&gt;
&lt;details class=&#39;sp toc&#39;&gt;
  &lt;summary data-show=&#39;Show all&#39; data-hide=&#39;Hide all&#39;&gt;Table of Contents&lt;/summary&gt;  
  &lt;div class=&#39;aToc&#39;&gt;&lt;/div&gt;
&lt;/details&gt;

&lt;p&gt;Most of these features can only be used in &lt;b&gt;HTML View&lt;/b&gt; mode, nor can you switch to &#39;&lt;b&gt;Writing view&lt;/b&gt;&#39; mode while using some of these features.&lt;/p&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;In post editor view, click &lt;span style=&#39;display:inline-block;vertical-align:top&#39;&gt;&lt;svg viewBox=&#39;0 0 48 48&#39;&gt;&lt;path d=&#39;M6 34.5V42h7.5l22.13-22.13-7.5-7.5L6 34.5zm35.41-20.41c.78-.78.78-2.05 0-2.83l-4.67-4.67c-.78-.78-2.05-.78-2.83 0l-3.66 3.66 7.5 7.5 3.66-3.66z&#39;/&gt;&lt;/svg&gt;&lt;/span&gt; icon at the bottom right of the title.&lt;/li&gt;
  &lt;li&gt;Two options will appear: &lt;b&gt;HTML view&lt;/b&gt; and &lt;b&gt;Writing view&lt;/b&gt;.&lt;/li&gt;
  &lt;li&gt;Select &lt;span style=&#39;display:inline-flex;align-items:baseline&#39;&gt;&lt;svg viewBox=&#39;0 0 48 48&#39; style=&#39;align-self:center&#39;&gt;&lt;path d=&#39;M0 0h48v48H0V0z&#39; fill=&#39;none&#39;/&gt;&lt;path d=&#39;M18.8 33.2L9.7 24l9.2-9.2L16 12 4 24l12 12 2.8-2.8zm10.4 0l9.2-9.2-9.2-9.2L32 12l12 12-12 12-2.8-2.8z&#39;/&gt;&lt;/svg&gt;&lt;b style=&#39;text-indent:4px&#39;&gt;HTML View&lt;/b&gt;&lt;/span&gt;.&lt;/li&gt;
  &lt;li&gt;Copy and paste the component code wherever you want to add it and make appropriate changes.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;Paragraph&lt;/h2&gt;

&lt;!--[ Paragraph ]--&gt;
&lt;p&gt;Use &lt;code&gt;p&lt;/code&gt; tag to add paragraphs to the article.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Paragraph ]--&amp;gt;
&amp;lt;p&amp;gt;&lt;mark&gt;This is a paragraph&lt;/mark&gt;&amp;lt;/p&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Paragraph with Text Indent&lt;/h3&gt;

&lt;!--[ Text Indent paragraph ]--&gt;
&lt;p class=&#39;pIndent&#39;&gt;This feature functions to make the first line of a paragraph indented with a predetermined value. You can also apply it to several other paragraphs.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Text Indent paragraph ]--&amp;gt;
&amp;lt;p class=&#39;pIndent&#39;&amp;gt;&lt;mark&gt;This is a paragraph with text indent.&lt;/mark&gt;&amp;lt;/p&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Paragraph with Drop Cap&lt;/h3&gt;

&lt;p&gt;The drop cap will resize the first letter of the paragraph so that it drops one or more lines down. Many types of print media use drop caps such as books, magazines, newspapers and so on because they can add to the visual appeal.&lt;/p&gt;

&lt;!--[ Drop Cap paragraph ]--&gt;
&lt;p&gt;&lt;span class=&#39;dropCap&#39;&gt;M&lt;/span&gt;is a large capital letter used as a decorative element at the beginning of a paragraph or section. The size of the descending limit is usually two or more lines.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Drop Cap paragraph ]--&amp;gt;
&amp;lt;p&amp;gt;&amp;lt;span class=&#39;dropCap&#39;&amp;gt;&lt;mark&gt;T&lt;/mark&gt;&amp;lt;/span&amp;gt;&lt;mark&gt;his is a paragraph with drop cap.&lt;/mark&gt;&amp;lt;/p&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Post Reference Paragraph&lt;/h3&gt;

&lt;p&gt;To write a list of references or footnotes below the post.&lt;/p&gt;

&lt;!--[ Post Reference paragraph ]--&gt;
&lt;p class=&#39;pRef&#39;&gt;Source:&lt;br&gt; www.example.com&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Post Reference paragraph ]--&amp;gt;
&amp;lt;p class=&#39;pRef&#39;&amp;gt;&lt;mark&gt;Source:&amp;lt;br&amp;gt; www.example.com&lt;/mark&gt;&amp;lt;/p&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Post Image&lt;/h2&gt;

&lt;p&gt;Following is a standard image without any container which means there will be no lightbox for this image.&lt;/p&gt;

&lt;!--[ Standard image ]--&gt;
&lt;img alt=&quot;Skydivers holding hands&quot; class=&quot;full&quot; height=&quot;720&quot; loading=&quot;lazy&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-OprgHyoPWdIW8dCaGu7FYlwcY7cXaWROEBF3PkrwYUxYwYOc6m6Fkz9xkx3HwtYrdxxs8cLzoFREcTaEjGHLIOda4M6Zl4aEYI-xf2H8U_zWlPtqhyphenhyphenMRUttpWUbvRsms011x1nE8u1KBVrP_jDRil5xNNdyOxZpgVcRkgqb8kDCXCtUOikeykjQvM1w/s0-rw/skydivers-holding-hands.jpg&quot; width=&quot;1280&quot;/&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Standard image ]--&amp;gt;
&amp;lt;img class=&#39;full&#39; alt=&#39;&lt;mark&gt;alt_here&lt;/mark&gt;&#39; &lt;mark data-before=&#39;Recommended (optional)&#39;&gt;width=&#39;1280&#39;&lt;/mark&gt; &lt;mark data-before=&#39;Recommended (optional)&#39;&gt;height=&#39;720&#39;&lt;/mark&gt; src=&#39;&lt;mark&gt;image_link&lt;/mark&gt;&#39;/&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p class=&#39;note&#39;&gt;&lt;b&gt;Tips!&lt;/b&gt;&lt;br&gt;
  Have you noticed the classname &lt;code&gt;full&lt;/code&gt;? Adding this classname to &lt;code&gt;img&lt;/code&gt; tag removes horizontal margin and adapts full screen width in Mobile Devices.
&lt;/p&gt;

&lt;p&gt;Good to know:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;We recommend adding &lt;code&gt;alt&lt;/code&gt;, &lt;code&gt;width&lt;/code&gt; and &lt;code&gt;height&lt;/code&gt; attributes to &lt;code&gt;img&lt;/code&gt; tags.&lt;/li&gt;
  &lt;!--&lt;li&gt;All the images in the post are automatically transformed if any of &lt;code&gt;width&lt;/code&gt; or &lt;code&gt;height&lt;/code&gt; attributes is present, served in webp format and cached for 90 days.&lt;/li&gt;
  &lt;li&gt;To explicitly opt-out transforming a particular image, add attribute &lt;code&gt;data-transform=&#39;false&#39;&lt;/code&gt; to the &lt;code&gt;img&lt;/code&gt; tag.&lt;/li&gt;
  &lt;li&gt;To explicitly opt-out webp serving for a particular image, add attribute &lt;code&gt;data-webp=&#39;false&#39;&lt;/code&gt; to the &lt;code&gt;img&lt;/code&gt; tag.&lt;/li&gt;
  &lt;li&gt;To explicitly set custom cache time for a particular image, add attribute &lt;code&gt;data-cache=&#39;30&#39;&lt;/code&gt; to the &lt;code&gt;img&lt;/code&gt; tag where &lt;code&gt;30&lt;/code&gt; is the number of days for cache expiration, accepted range is 1 to 90.&lt;/li&gt;--&gt;
&lt;/ul&gt;

&lt;h3&gt;Image with Caption&lt;/h3&gt;

&lt;p&gt;The caption in this image will not be read in the article description/snippet. You can also choose to keep the captions legible on the article snippets.&lt;/p&gt;

&lt;!--[ Image with Caption ]--&gt;
&lt;table class=&#39;tr-caption-container&#39;&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;
        &lt;img alt=&quot;Jungle trekking adventure&quot; data-lightbox=&quot;false&quot; height=&quot;720&quot; loading=&quot;lazy&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMh5NiY1NKtn1mCNKodbqkn02i8pjU7yUpB7CrwtxPKBr-F2qjMKbLUUYv3H5R1UisUudIymJpNGj5rWNMkfKH29UVVRF_7Fol-IAF2fRiVnpxn1oXYO6hTfcRhF5E7DjM3egR6qGUd7pSi9sFR899UOHTcO-Dwg3PH7nN4vkAeQJbnNwsRTkeL2gdkbg/s0-rw/jungle-trekking-adventure.jpg&quot; width=&quot;1280&quot;/&gt;
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td class=&#39;tr-caption&#39;&gt;The image caption is here! Where were you looking for it?&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Image with Caption ]--&amp;gt;
&amp;lt;table class=&#39;tr-caption-container&#39;&amp;gt;
  &amp;lt;tbody&amp;gt;
    &amp;lt;tr&amp;gt;
      &amp;lt;td&amp;gt;
        &amp;lt;img alt=&#39;&lt;mark&gt;image_alt&lt;/mark&gt;&#39; src=&#39;&lt;mark&gt;image_link&lt;/mark&gt;&#39;/&amp;gt;
      &amp;lt;/td&amp;gt;
    &amp;lt;/tr&amp;gt;
    &amp;lt;tr&amp;gt;
      &amp;lt;td class=&#39;tr-caption&#39;&amp;gt;&lt;mark&gt;caption_here&lt;/mark&gt;&amp;lt;/td&amp;gt;
    &amp;lt;/tr&amp;gt;
  &amp;lt;/tbody&amp;gt;
&amp;lt;/table&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p class=&#39;note wr&#39;&gt;&lt;b&gt;Warning!&lt;/b&gt;&lt;br&gt;
  You should not manually add this component to post or page because it is HTML code snippet used by Blogger for images with caption. Therefore, we recommend you to use the below approach when adding images with caption component manually.
&lt;/p&gt;

&lt;p&gt;You might be wondering why should you use the &lt;code&gt;table&lt;/code&gt; tag just for adding caption to image even though there are &lt;code&gt;figure&lt;/code&gt; and &lt;code&gt;figcaption&lt;/code&gt; HTML tags available?&lt;/p&gt;

&lt;p&gt;Let me sort it out for you! It is because when we add caption to an image through Blogger post editor and not manually by editing HTML, it uses the above code snippet for an image having caption. Therefore, it is necessary to support them.&lt;/p&gt;

&lt;p&gt;You can also use the &lt;code&gt;figure&lt;/code&gt; and &lt;code&gt;figcaption&lt;/code&gt; tags instead of &lt;code&gt;table&lt;/code&gt; tag as shown below.&lt;/p&gt;

&lt;!--[ Image with Caption ]--&gt;
&lt;figure&gt;
  &lt;img alt=&quot;Jungle trekking adventure&quot; data-lightbox=&quot;false&quot; height=&quot;720&quot; loading=&quot;lazy&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMh5NiY1NKtn1mCNKodbqkn02i8pjU7yUpB7CrwtxPKBr-F2qjMKbLUUYv3H5R1UisUudIymJpNGj5rWNMkfKH29UVVRF_7Fol-IAF2fRiVnpxn1oXYO6hTfcRhF5E7DjM3egR6qGUd7pSi9sFR899UOHTcO-Dwg3PH7nN4vkAeQJbnNwsRTkeL2gdkbg/s0-rw/jungle-trekking-adventure.jpg&quot; width=&quot;1280&quot;/&gt;
  &lt;figcaption&gt;Image caption using figcaption tag.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Image with Caption ]--&amp;gt;
&amp;lt;figure&amp;gt;
  &amp;lt;img alt=&#39;&lt;mark&gt;image_alt&lt;/mark&gt;&#39; src=&#39;&lt;mark&gt;image_src&lt;/mark&gt;&#39;/&amp;gt;
  &amp;lt;figcaption&amp;gt;&lt;mark&gt;caption_here&lt;/mark&gt;&amp;lt;/figcaption&amp;gt;
&amp;lt;/figure&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Image with Automatic Lightbox&lt;/h3&gt;

&lt;p&gt;Lighbox helps to scale the image up and make it fully focusable on click. The lightbox also contains the contents of &lt;code&gt;alt&lt;/code&gt; attribute of the image when it appears on image click.&lt;/p&gt;

&lt;table class=&#39;tr-caption-container&#39;&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;
        &lt;img alt=&quot;Urban basketball game&quot; height=&quot;720&quot; loading=&quot;lazy&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYZuHcozQzYRKz14qGhX4pGWzN4nQWsCyEi3ANb0G2tlsB3haTYCk1sMynr2Annh3qsbeCendfYx7dJHPoMK-wDuZAR71_Eym4nWPxOXPf5PTWSrDsOehzrK42A7IQQuUXbOR_6xK0wfyFjcWvn1mwcM1iOe2-HmTJTuaVZOgUaPaM4PefbahOqm6i7EE/s0-rw/urban-basketball-game.jpg&quot; width=&quot;1280&quot;/&gt;
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td class=&#39;tr-caption&#39;&gt;Where are you finding the lightbox? Click on this image!&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;Good to know:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;All the images in the post will automatically have a lightbox function if the image is wrapped under a parent container having one of the classnames &lt;code&gt;lbx&lt;/code&gt;, &lt;code&gt;separator&lt;/code&gt;, &lt;code&gt;psImg&lt;/code&gt;, &lt;code&gt;btImg&lt;/code&gt;, &lt;code&gt;glImg&lt;/code&gt; or satisfies one of the selectors &lt;code&gt;.pS .separator &amp;gt;a&lt;/code&gt;, &lt;code&gt;.pS .tr-caption-container td &amp;gt;a&lt;/code&gt;, &lt;code&gt;.pS .separator &amp;gt;img&lt;/code&gt;, &lt;code&gt;.pS .tr-caption-container td &amp;gt;img&lt;/code&gt;, &lt;code&gt;figure img&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;If an image with lightbox is wrapped under anchor tag, clicking on image will only open link when lightbox is shown.&lt;/li&gt;
  &lt;li&gt;To explicitly opt-out automatic lightbox function for a particular image, add attribute &lt;code&gt;data-lightbox=&#39;false&#39;&lt;/code&gt; to the &lt;code&gt;img&lt;/code&gt; tag.&lt;/li&gt;
  &lt;li&gt;To explicitly opt-out lightbox automatically containing the &lt;code&gt;alt&lt;/code&gt; attribute contents, add attribute &lt;code&gt;data-caption=&#39;false&#39;&lt;/code&gt; to the &lt;code&gt;img&lt;/code&gt; tag.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Images with Grid Layout&lt;/h3&gt;

&lt;p&gt;Grid layout in the context of images typically refers to arranging multiple images in a structured grid format on a webpage or in a document. This layout is popular for galleries, portfolios, or any collection of images where you want to display several images in a neat and organized manner.&lt;/p&gt;

&lt;!--[ Images with Grid Layout ]--&gt;
&lt;div class=&#39;psImg grImg&#39;&gt;
  &lt;img alt=&quot;Misty grape cluster&quot; height=&quot;720&quot; loading=&quot;lazy&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwge2ZpI1-vIZkL_U0LQW7sRIVq2V7SSrJJLi-uGq2joZc7vGs1h2Pd4PIVcGNC4sUJXXB1UVsfaDf1DNgNAue23xY6zHXWzA93APp4ZZ_fsnIA34vfSu22f12lIe3enhbnux21HmEuoF1uUJXf-1-0Z2oGOz14a1iGRtwXGYtLa8cUaMG0VWCAnWCYEw/s0-rw/misty-grape-cluster.jpg&quot; width=&quot;1280&quot;/&gt;
  &lt;img alt=&quot;Frosty pine cones&quot; height=&quot;720&quot; loading=&quot;lazy&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiz-UDJuNXvT2YQbvbIA7NmbmTek51Pli2fq3HcR95p38lE6F6GXzElhRIYz5RYiEGDTUdwbJgY-CBlQJ89A-620lNxM81u8xjeOHnXsykeE1nsm2Tf4dzN2u0yEDUEr4U8I_mMAO2jbWRrSQwucdP30Enl7EaBtdEcmcmh8lzX3nCFwZg3pmHKbLrmdZw/s0-rw/frosty-pine-cones.jpg&quot; width=&quot;1280&quot;/&gt;
  &lt;img alt=&quot;Colorful spider fantasy&quot; height=&quot;720&quot; loading=&quot;lazy&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqO1iOSW8YJko89081Ko7BbwlQZGwfmeiKSPN15uW0O3nyLn5olsZVQizrGgXDhM1U2QkQXjSpRv2ZO0AEqjGxS05hJlPYUw0Tus8kcedOVlnToEEIt04IVldLtq7UGKPXjDJDuJsnKThSMY1FaVorbmcj6rNb602YhcGHO2bmuW3k26-Cs5273kny4QQ/s0-rw/colorful-spider-fantasy.jpg&quot; width=&quot;1280&quot;/&gt;
  &lt;img alt=&quot;Winter alpine village&quot; height=&quot;720&quot; loading=&quot;lazy&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuJTI7D4rJHK2V7q2QXDMXK2W3gGKJq0f5XBbAMKAraQyOui9izGzNq-oq0MIjoxDaqJN3LbqudJXe7gtoZcWka0JO7Te9vn6o9C0FkErBOEwyx4wK3eBZDMxU300gM4GOUC0kruDmfhtXBMdBATTd4cGeQTf4NVgZqwl6Rcxxz6NgrOX9S2qHnLZOW0g/s0-rw/winter-alpine-village.jpg&quot; width=&quot;1280&quot;/&gt;
&lt;/div&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Images with Grid Layout ]--&amp;gt;
&amp;lt;div class=&#39;psImg grImg&#39;&amp;gt;
  &amp;lt;img alt=&#39;&lt;mark&gt;image_alt&lt;/mark&gt;&#39; src=&#39;&lt;mark&gt;image_link&lt;/mark&gt;&#39;/&amp;gt;
  &amp;lt;img alt=&#39;&lt;mark&gt;image_alt&lt;/mark&gt;&#39; src=&#39;&lt;mark&gt;image_link&lt;/mark&gt;&#39;/&amp;gt;
  &amp;lt;img alt=&#39;&lt;mark&gt;image_alt&lt;/mark&gt;&#39; src=&#39;&lt;mark&gt;image_link&lt;/mark&gt;&#39;/&amp;gt;
  &amp;lt;img alt=&#39;&lt;mark&gt;image_alt&lt;/mark&gt;&#39; src=&#39;&lt;mark&gt;image_link&lt;/mark&gt;&#39;/&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Images with Show All Function&lt;/h3&gt;

&lt;p&gt;Used to hide some images and will be shown when the user clicks the &lt;b&gt;Show All&lt;/b&gt; button. Show All function can only be activated once, images cannot be hidden again when you activate it.&lt;/p&gt;

&lt;!--[ Images with Show All Function ]--&gt;
&lt;input class=&#39;inImg hidden&#39; id=&#39;for-hideImage-1&#39; type=&#39;checkbox&#39;&gt;
&lt;div class=&#39;psImg hdImg&#39;&gt;
  &lt;img alt=&quot;Misty grape cluster&quot; height=&quot;720&quot; loading=&quot;lazy&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwge2ZpI1-vIZkL_U0LQW7sRIVq2V7SSrJJLi-uGq2joZc7vGs1h2Pd4PIVcGNC4sUJXXB1UVsfaDf1DNgNAue23xY6zHXWzA93APp4ZZ_fsnIA34vfSu22f12lIe3enhbnux21HmEuoF1uUJXf-1-0Z2oGOz14a1iGRtwXGYtLa8cUaMG0VWCAnWCYEw/s0-rw/misty-grape-cluster.jpg&quot; width=&quot;1280&quot;/&gt;
  &lt;img alt=&quot;Frosty pine cones&quot; height=&quot;720&quot; loading=&quot;lazy&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiz-UDJuNXvT2YQbvbIA7NmbmTek51Pli2fq3HcR95p38lE6F6GXzElhRIYz5RYiEGDTUdwbJgY-CBlQJ89A-620lNxM81u8xjeOHnXsykeE1nsm2Tf4dzN2u0yEDUEr4U8I_mMAO2jbWRrSQwucdP30Enl7EaBtdEcmcmh8lzX3nCFwZg3pmHKbLrmdZw/s0-rw/frosty-pine-cones.jpg&quot; width=&quot;1280&quot;/&gt;
  &lt;img alt=&quot;Colorful spider fantasy&quot; height=&quot;720&quot; loading=&quot;lazy&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqO1iOSW8YJko89081Ko7BbwlQZGwfmeiKSPN15uW0O3nyLn5olsZVQizrGgXDhM1U2QkQXjSpRv2ZO0AEqjGxS05hJlPYUw0Tus8kcedOVlnToEEIt04IVldLtq7UGKPXjDJDuJsnKThSMY1FaVorbmcj6rNb602YhcGHO2bmuW3k26-Cs5273kny4QQ/s0-rw/colorful-spider-fantasy.jpg&quot; width=&quot;1280&quot;/&gt;
  
  &lt;div class=&#39;btImg&#39;&gt;
    &lt;img alt=&quot;Winter alpine village&quot; height=&quot;720&quot; loading=&quot;lazy&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuJTI7D4rJHK2V7q2QXDMXK2W3gGKJq0f5XBbAMKAraQyOui9izGzNq-oq0MIjoxDaqJN3LbqudJXe7gtoZcWka0JO7Te9vn6o9C0FkErBOEwyx4wK3eBZDMxU300gM4GOUC0kruDmfhtXBMdBATTd4cGeQTf4NVgZqwl6Rcxxz6NgrOX9S2qHnLZOW0g/s0-rw/winter-alpine-village.jpg&quot; width=&quot;1280&quot;/&gt;
    
    &lt;!--[ Button image to activate ]--&gt;
    &lt;label for=&#39;for-hideImage-1&#39; aria-label=&#39;Show all image&#39;&gt;Show All&lt;/label&gt;
  &lt;/div&gt;
  
  &lt;!--[ Hide the rest image here ]--&gt;
  &lt;div class=&#39;psImg shImg&#39;&gt;
    &lt;img alt=&quot;Misty grape cluster&quot; height=&quot;720&quot; loading=&quot;lazy&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwge2ZpI1-vIZkL_U0LQW7sRIVq2V7SSrJJLi-uGq2joZc7vGs1h2Pd4PIVcGNC4sUJXXB1UVsfaDf1DNgNAue23xY6zHXWzA93APp4ZZ_fsnIA34vfSu22f12lIe3enhbnux21HmEuoF1uUJXf-1-0Z2oGOz14a1iGRtwXGYtLa8cUaMG0VWCAnWCYEw/s0-rw/misty-grape-cluster.jpg&quot; width=&quot;1280&quot;/&gt;
    &lt;img alt=&quot;Frosty pine cones&quot; height=&quot;720&quot; loading=&quot;lazy&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiz-UDJuNXvT2YQbvbIA7NmbmTek51Pli2fq3HcR95p38lE6F6GXzElhRIYz5RYiEGDTUdwbJgY-CBlQJ89A-620lNxM81u8xjeOHnXsykeE1nsm2Tf4dzN2u0yEDUEr4U8I_mMAO2jbWRrSQwucdP30Enl7EaBtdEcmcmh8lzX3nCFwZg3pmHKbLrmdZw/s0-rw/frosty-pine-cones.jpg&quot; width=&quot;1280&quot;/&gt;
    &lt;img alt=&quot;Colorful spider fantasy&quot; height=&quot;720&quot; loading=&quot;lazy&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqO1iOSW8YJko89081Ko7BbwlQZGwfmeiKSPN15uW0O3nyLn5olsZVQizrGgXDhM1U2QkQXjSpRv2ZO0AEqjGxS05hJlPYUw0Tus8kcedOVlnToEEIt04IVldLtq7UGKPXjDJDuJsnKThSMY1FaVorbmcj6rNb602YhcGHO2bmuW3k26-Cs5273kny4QQ/s0-rw/colorful-spider-fantasy.jpg&quot; width=&quot;1280&quot;/&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Images with Show All Function ]--&amp;gt;
&amp;lt;input hidden class=&#39;inImg&#39; id=&#39;&lt;mark class=&#39;purple&#39; data-before=&#39;Unique id&#39;&gt;hideImg1&lt;/mark&gt;&#39; type=&#39;checkbox&#39;&amp;gt;
&amp;lt;div class=&#39;psImg hdImg&#39;&amp;gt;
  &amp;lt;img alt=&#39;&lt;mark&gt;image_alt&lt;/mark&gt;&#39; src=&#39;&lt;mark&gt;image_link&lt;/mark&gt;&#39;/&amp;gt;
  &amp;lt;img alt=&#39;&lt;mark&gt;image_alt&lt;/mark&gt;&#39; src=&#39;&lt;mark&gt;image_link&lt;/mark&gt;&#39;/&amp;gt;
  &amp;lt;img alt=&#39;&lt;mark&gt;image_alt&lt;/mark&gt;&#39; src=&#39;&lt;mark&gt;image_link&lt;/mark&gt;&#39;/&amp;gt;
  
  &amp;lt;div class=&#39;btImg&#39;&amp;gt;
    &amp;lt;!--[ Image acting as a button ]--&amp;gt;
    &amp;lt;img alt=&#39;&lt;mark&gt;image_alt&lt;/mark&gt;&#39; src=&#39;&lt;mark&gt;image_link&lt;/mark&gt;&#39;/&amp;gt;
    
    &amp;lt;!--[ Button to activate ]--&amp;gt;
    &amp;lt;label for=&#39;&lt;mark class=&#39;purple&#39; data-before=&#39;Same id as above&#39;&gt;hideImg1&lt;/mark&gt;&#39; aria-label=&#39;&lt;mark&gt;Show all images&lt;/mark&gt;&#39;&amp;gt;&lt;mark&gt;Show All&lt;/mark&gt;&amp;lt;/label&amp;gt;
  &amp;lt;/div&amp;gt;

  &amp;lt;!--[ Hide the rest of images here ]--&amp;gt;
  &amp;lt;div class=&#39;psImg shImg&#39;&amp;gt;
    &amp;lt;img alt=&#39;&lt;mark&gt;image_alt&lt;/mark&gt;&#39; src=&#39;&lt;mark&gt;image_link&lt;/mark&gt;&#39;/&amp;gt;
    &amp;lt;img alt=&#39;&lt;mark&gt;image_alt&lt;/mark&gt;&#39; src=&#39;&lt;mark&gt;image_link&lt;/mark&gt;&#39;/&amp;gt;
    &amp;lt;img alt=&#39;&lt;mark&gt;image_alt&lt;/mark&gt;&#39; src=&#39;&lt;mark&gt;image_link&lt;/mark&gt;&#39;/&amp;gt;
    &amp;lt;img alt=&#39;&lt;mark&gt;image_alt&lt;/mark&gt;&#39; src=&#39;&lt;mark&gt;image_link&lt;/mark&gt;&#39;/&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Images with Scroll Layout&lt;/h3&gt;

&lt;p&gt;Images with scroll layout typically refers to a design technique where images are displayed in a horizontally or vertically scrolling manner within a container. This approach is often used when you have a collection of images that may exceed the available space on the screen, and you want users to be able to scroll through them.&lt;/p&gt;

&lt;!--[ Tabs, remove classname &#39;stick&#39; to disable floating title ]--&gt;
&lt;div class=&#39;tabs&#39;&gt;
  &lt;!--[ Active function ]--&gt;
  &lt;input id=&#39;tabT1-1&#39; type=&#39;radio&#39; name=&#39;tabC1&#39; checked&gt;
  &lt;input id=&#39;tabT1-2&#39; type=&#39;radio&#39; name=&#39;tabC1&#39;&gt;

  &lt;!--[ Tabs header/title ]--&gt;
  &lt;div&gt;
    &lt;!--[ Change atribute data-text=&#39;...&#39; to replace tabs title ]--&gt;
    &lt;label for=&#39;tabT1-1&#39; data-text=&#39;Style 1&#39;&gt;&lt;/label&gt;
    &lt;label for=&#39;tabT1-2&#39; data-text=&#39;Style 2&#39;&gt;&lt;/label&gt;
  &lt;/div&gt;
  
  &lt;!--[ Tabs content ]--&gt;
  &lt;div class=&#39;tabC-1&#39;&gt;
    
    &lt;!--[ Images with Scroll Layout (Style 1) ]--&gt;
    &lt;div class=&#39;glImg&#39;&gt;
      &lt;img alt=&quot;Misty grape cluster&quot; height=&quot;720&quot; loading=&quot;lazy&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwge2ZpI1-vIZkL_U0LQW7sRIVq2V7SSrJJLi-uGq2joZc7vGs1h2Pd4PIVcGNC4sUJXXB1UVsfaDf1DNgNAue23xY6zHXWzA93APp4ZZ_fsnIA34vfSu22f12lIe3enhbnux21HmEuoF1uUJXf-1-0Z2oGOz14a1iGRtwXGYtLa8cUaMG0VWCAnWCYEw/s0-rw/misty-grape-cluster.jpg&quot; width=&quot;1280&quot;/&gt;
      &lt;img alt=&quot;Frosty pine cones&quot; height=&quot;720&quot; loading=&quot;lazy&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiz-UDJuNXvT2YQbvbIA7NmbmTek51Pli2fq3HcR95p38lE6F6GXzElhRIYz5RYiEGDTUdwbJgY-CBlQJ89A-620lNxM81u8xjeOHnXsykeE1nsm2Tf4dzN2u0yEDUEr4U8I_mMAO2jbWRrSQwucdP30Enl7EaBtdEcmcmh8lzX3nCFwZg3pmHKbLrmdZw/s0-rw/frosty-pine-cones.jpg&quot; width=&quot;1280&quot;/&gt;
      &lt;img alt=&quot;Colorful spider fantasy&quot; height=&quot;720&quot; loading=&quot;lazy&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqO1iOSW8YJko89081Ko7BbwlQZGwfmeiKSPN15uW0O3nyLn5olsZVQizrGgXDhM1U2QkQXjSpRv2ZO0AEqjGxS05hJlPYUw0Tus8kcedOVlnToEEIt04IVldLtq7UGKPXjDJDuJsnKThSMY1FaVorbmcj6rNb602YhcGHO2bmuW3k26-Cs5273kny4QQ/s0-rw/colorful-spider-fantasy.jpg&quot; width=&quot;1280&quot;/&gt;
      &lt;img alt=&quot;Winter alpine village&quot; height=&quot;720&quot; loading=&quot;lazy&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuJTI7D4rJHK2V7q2QXDMXK2W3gGKJq0f5XBbAMKAraQyOui9izGzNq-oq0MIjoxDaqJN3LbqudJXe7gtoZcWka0JO7Te9vn6o9C0FkErBOEwyx4wK3eBZDMxU300gM4GOUC0kruDmfhtXBMdBATTd4cGeQTf4NVgZqwl6Rcxxz6NgrOX9S2qHnLZOW0g/s0-rw/winter-alpine-village.jpg&quot; width=&quot;1280&quot;/&gt;
    &lt;/div&gt;
    
    &lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Images with Scroll Layout (Style 1) ]--&amp;gt;
&amp;lt;div class=&#39;glImg&#39;&amp;gt;
  &amp;lt;img alt=&#39;&lt;mark&gt;image_alt&lt;/mark&gt;&#39; src=&#39;&lt;mark&gt;image_link&lt;/mark&gt;&#39;/&amp;gt;
  &amp;lt;img alt=&#39;&lt;mark&gt;image_alt&lt;/mark&gt;&#39; src=&#39;&lt;mark&gt;image_link&lt;/mark&gt;&#39;/&amp;gt;
  &amp;lt;img alt=&#39;&lt;mark&gt;image_alt&lt;/mark&gt;&#39; src=&#39;&lt;mark&gt;image_link&lt;/mark&gt;&#39;/&amp;gt;
  &amp;lt;img alt=&#39;&lt;mark&gt;image_alt&lt;/mark&gt;&#39; src=&#39;&lt;mark&gt;image_link&lt;/mark&gt;&#39;/&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
    
    &lt;p class=&#39;note&#39;&gt;&lt;b&gt;Tips!&lt;/b&gt;&lt;br/&gt;
      You can change the height of the scroll image by adding one of the classnames &lt;code&gt;h150&lt;/code&gt;, &lt;code&gt;h200&lt;/code&gt;, &lt;code&gt;h250&lt;/code&gt;, to the element &lt;code&gt;div.galWrp&lt;/code&gt;.
    &lt;/p&gt;
    
  &lt;/div&gt;
  
  &lt;!--[ Tabs content ]--&gt;
  &lt;div class=&#39;tabC-2&#39;&gt;
    
    &lt;p class=&#39;note&#39;&gt;This scroll layout style will only be active in mobile view. Please try opening this page on your mobile device.&lt;/p&gt;

    &lt;!--[ Images with Scroll Layout (Style 2) ]--&gt;
    &lt;div class=&#39;psImg scImg scrlH&#39;&gt;
      &lt;img alt=&quot;Misty grape cluster&quot; height=&quot;720&quot; loading=&quot;lazy&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwge2ZpI1-vIZkL_U0LQW7sRIVq2V7SSrJJLi-uGq2joZc7vGs1h2Pd4PIVcGNC4sUJXXB1UVsfaDf1DNgNAue23xY6zHXWzA93APp4ZZ_fsnIA34vfSu22f12lIe3enhbnux21HmEuoF1uUJXf-1-0Z2oGOz14a1iGRtwXGYtLa8cUaMG0VWCAnWCYEw/s0-rw/misty-grape-cluster.jpg&quot; width=&quot;1280&quot;/&gt;
      &lt;img alt=&quot;Frosty pine cones&quot; height=&quot;720&quot; loading=&quot;lazy&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiz-UDJuNXvT2YQbvbIA7NmbmTek51Pli2fq3HcR95p38lE6F6GXzElhRIYz5RYiEGDTUdwbJgY-CBlQJ89A-620lNxM81u8xjeOHnXsykeE1nsm2Tf4dzN2u0yEDUEr4U8I_mMAO2jbWRrSQwucdP30Enl7EaBtdEcmcmh8lzX3nCFwZg3pmHKbLrmdZw/s0-rw/frosty-pine-cones.jpg&quot; width=&quot;1280&quot;/&gt;
      &lt;img alt=&quot;Colorful spider fantasy&quot; height=&quot;720&quot; loading=&quot;lazy&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqO1iOSW8YJko89081Ko7BbwlQZGwfmeiKSPN15uW0O3nyLn5olsZVQizrGgXDhM1U2QkQXjSpRv2ZO0AEqjGxS05hJlPYUw0Tus8kcedOVlnToEEIt04IVldLtq7UGKPXjDJDuJsnKThSMY1FaVorbmcj6rNb602YhcGHO2bmuW3k26-Cs5273kny4QQ/s0-rw/colorful-spider-fantasy.jpg&quot; width=&quot;1280&quot;/&gt;
    &lt;/div&gt;

    &lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Images with Scroll Layout (Style 2) ]--&amp;gt;
&amp;lt;div class=&#39;psImg scImg scrlH&#39;&amp;gt;
  &amp;lt;img alt=&#39;&lt;mark&gt;image_alt&lt;/mark&gt;&#39; src=&#39;&lt;mark&gt;image_link&lt;/mark&gt;&#39;/&amp;gt;
  &amp;lt;img alt=&#39;&lt;mark&gt;image_alt&lt;/mark&gt;&#39; src=&#39;&lt;mark&gt;image_link&lt;/mark&gt;&#39;/&amp;gt;
  &amp;lt;img alt=&#39;&lt;mark&gt;image_alt&lt;/mark&gt;&#39; src=&#39;&lt;mark&gt;image_link&lt;/mark&gt;&#39;/&amp;gt;
  &amp;lt;img alt=&#39;&lt;mark&gt;image_alt&lt;/mark&gt;&#39; src=&#39;&lt;mark&gt;image_link&lt;/mark&gt;&#39;/&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
  
  &lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;Lazyload Image&lt;/h3&gt;

&lt;p&gt;Useful for delaying loading images so that the blog&#39;s &lt;a class=&quot;extL&quot; href=&quot;https://pagespeed.web.dev&quot; rel=&quot;nofollow noreferrer noopener&quot; target=&quot;_blank&quot;&gt;PageSpeed&lt;/a&gt; score is higher, image will only load when user scrolls to the image area. This feature uses &lt;a class=&quot;extL&quot; href=&quot;https://github.com/aFarkas/lazysizes&quot; rel=&quot;nofollow noreferrer noopener&quot; target=&quot;_blank&quot;&gt;@aFarkas/lazysizes&lt;/a&gt; to lazyload images.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Lazyload Image ]--&amp;gt;
&amp;lt;img class=&#39;lazyload&#39; alt=&#39;&lt;mark&gt;image_title&lt;/mark&gt;&#39; data-src=&#39;&lt;mark&gt;image_link&lt;/mark&gt;&#39; src=&#39;data:image/png;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=&#39;/&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;!--&lt;p&gt;Good to know:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;All the images in the post are automatically lazyloaded.&lt;/li&gt;
  &lt;li&gt;Since images are automatically lazyloaded, we discourage the use of above code snippet.&lt;/li&gt;
  &lt;li&gt;To explicitly opt-out automatic lazyload for a particular image, add attribute &lt;code&gt;data-lazyload=&#39;false&#39;&lt;/code&gt; to the &lt;code&gt;img&lt;/code&gt; tag.&lt;/li&gt;
&lt;/ul&gt;--&gt;

&lt;p class=&#39;note wr&#39;&gt;&lt;b&gt;Warning!&lt;/b&gt;&lt;br/&gt;
  &lt;u&gt;Never manually lazyload the first image of the post.&lt;/u&gt; Doing so, results in unexpected behaviours.&lt;br&gt;
  It is also recommended to &lt;u&gt;not to use it&lt;/u&gt;, instead you can enable &lt;b&gt;Lazy load images&lt;/b&gt; in Blog settings. It will automatically lazyload your post images for you.
&lt;/p&gt;

&lt;h2&gt;External Link&lt;/h2&gt;

&lt;p&gt;Notifies users if the link will lead to another site.&lt;/p&gt;

&lt;a class=&quot;extL&quot; href=&quot;#&quot; rel=&quot;nofollow noreferrer noopener&quot; target=&quot;_blank&quot;&gt;External Link&lt;/a&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;a class=&#39;extL&#39; href=&#39;&lt;mark&gt;link_here&lt;/mark&gt;&#39; rel=&#39;nofollow noreferrer noopener&#39; target=&#39;_blank&#39;&amp;gt;&lt;mark&gt;link_title&lt;/mark&gt;&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Alternative styles:&lt;/p&gt;

&lt;a class=&quot;extL alt&quot; href=&quot;#&quot; rel=&quot;nofollow noreferrer noopener&quot; target=&quot;_blank&quot;&gt;External Link&lt;/a&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;a class=&#39;extL alt&#39; href=&#39;&lt;mark&gt;link_here&lt;/mark&gt;&#39; rel=&#39;nofollow noreferrer noopener&#39; target=&#39;_blank&#39;&amp;gt;&lt;mark&gt;link_title&lt;/mark&gt;&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;a class=&quot;extL sec&quot; href=&quot;#&quot; rel=&quot;nofollow noreferrer noopener&quot; target=&quot;_blank&quot;&gt;External Link&lt;/a&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;a class=&#39;extL sec&#39; href=&#39;&lt;mark&gt;link_here&lt;/mark&gt;&#39; rel=&#39;nofollow noreferrer noopener&#39; target=&#39;_blank&#39;&amp;gt;&lt;mark&gt;link_title&lt;/mark&gt;&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Button&lt;/h2&gt;

&lt;p&gt;Defines buttons that can be clicked by the user.&lt;/p&gt;

&lt;a class=&quot;button&quot; href=&quot;#&quot;&gt;Button Text&lt;/a&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Button ]--&amp;gt;
&amp;lt;a class=&#39;button&#39; href=&#39;&lt;mark&gt;link_here&lt;/mark&gt;&#39;&amp;gt;&lt;mark&gt;link_title&lt;/mark&gt;&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;a class=&quot;button ln&quot; href=&quot;#&quot;&gt;Button Text&lt;/a&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Button outlined ]--&amp;gt;
&amp;lt;a class=&#39;button ln&#39; href=&#39;&lt;mark&gt;link_here&lt;/mark&gt;&#39;&amp;gt;&lt;mark&gt;link_title&lt;/mark&gt;&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;a class=&quot;button&quot; href=&quot;#&quot;&gt;&lt;i class=&#39;icon dl&#39;&gt;&lt;/i&gt;Download&lt;/a&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Button with download icon ]--&amp;gt;
&amp;lt;a class=&#39;button&#39; href=&#39;&lt;mark&gt;link_here&lt;/mark&gt;&#39;&amp;gt;&lt;mark class=&#39;block purple&#39; data-before=&#39;Can be SVG icon&#39;&gt;&amp;lt;i class=&#39;icon dl&#39;&amp;gt;&amp;lt;/i&amp;gt;&lt;/mark&gt;&lt;mark&gt;link_title&lt;/mark&gt;&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;a class=&quot;button&quot; href=&quot;#&quot;&gt;&lt;i class=&#39;icon demo&#39;&gt;&lt;/i&gt;Demo&lt;/a&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Button with demo icon ]--&amp;gt;
&amp;lt;a class=&#39;button&#39; href=&#39;&lt;mark&gt;link_here&lt;/mark&gt;&#39;&amp;gt;&lt;mark class=&#39;block purple&#39; data-before=&#39;Can be SVG icon&#39;&gt;&amp;lt;i class=&#39;icon demo&#39;&amp;gt;&amp;lt;/i&amp;gt;&lt;/mark&gt;&lt;mark&gt;link_title&lt;/mark&gt;&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Download Link&lt;/h2&gt;

&lt;p&gt;To provide information about downloaded files to users.&lt;/p&gt;

&lt;!--[ Download Box ]--&gt;
&lt;div class=&#39;dlBox&#39;&gt;
  &lt;!--[ Change data-text=&#39;...&#39; atribute to add new file type ]--&gt;
  &lt;span class=&#39;fT&#39; data-text=&#39;zip&#39;&gt;&lt;/span&gt;
  &lt;div class=&#39;fN&#39;&gt;
    &lt;!--[ File name ]--&gt;
    &lt;span&gt;file_name.zip&lt;/span&gt;
    &lt;span class=&#39;fS&#39;&gt;200kb&lt;/span&gt;
  &lt;/div&gt;

  &lt;!--[ Download link (change href=&#39;...&#39; atribute to add link download) ]--&gt;
  &lt;a aria-label=&quot;Download&quot; class=&quot;button&quot; href=&quot;#&quot; rel=&quot;nofollow noreferrer noopener&quot; target=&quot;_blank&quot;&gt;&lt;i class=&#39;icon dl&#39;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Download Box ]--&amp;gt;
&amp;lt;div class=&#39;dlBox&#39;&amp;gt;
  &amp;lt;!--[ Change data-text=&#39;...&#39; atribute to add new file type ]--&amp;gt;
  &amp;lt;span class=&#39;fT&#39; data-text=&#39;&lt;mark&gt;zip&lt;/mark&gt;&#39;&amp;gt;&amp;lt;/span&amp;gt;
  &amp;lt;div class=&#39;fN&#39;&amp;gt;
    &amp;lt;!--[ File name ]--&amp;gt;
    &amp;lt;span&amp;gt;&lt;mark&gt;file_name.zip&lt;/mark&gt;&amp;lt;/span&amp;gt;
    &amp;lt;span class=&#39;fS&#39;&amp;gt;&lt;mark&gt;200KiB&lt;/mark&gt;&amp;lt;/span&amp;gt;
  &amp;lt;/div&amp;gt;

  &amp;lt;!--[ Download link (change href=&#39;...&#39; atribute to add link download) ]--&amp;gt;
  &amp;lt;a class=&#39;button&#39; aria-label=&#39;&lt;mark&gt;Download&lt;/mark&gt;&#39; href=&#39;&lt;mark&gt;link_here&lt;/mark&gt;&#39; rel=&#39;nofollow noreferrer noopener&#39; target=&#39;_blank&#39;&amp;gt;&lt;mark class=&#39;block purple&#39; data-before=&#39;Can be SVG icon&#39;&gt;&amp;lt;i class=&#39;icon dl&#39;&amp;gt;&amp;lt;/i&amp;gt;&lt;/mark&gt;&amp;lt;/a&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Blockquote&lt;/h2&gt;

&lt;!--[ Standard Blockquote ]--&gt;
&lt;blockquote&gt;
  &lt;p&gt;Two things are infinite: the universe and human stupidity; and I&#39;m not sure about the universe.&lt;/p&gt;
  &lt;span&gt;Albert Einstein&lt;/span&gt;
&lt;/blockquote&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Standard Blockquote ]--&amp;gt;
&amp;lt;blockquote&amp;gt;
  &amp;lt;p&amp;gt;&lt;mark&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin vestibulum dignissim diam, et efficitur felis commodo et. Mauris vel diam pellentesque lorem lacinia luctus.&lt;/mark&gt;&amp;lt;/p&amp;gt;
  &amp;lt;span&amp;gt;&lt;mark&gt;Anonymous&lt;/mark&gt;&amp;lt;/span&amp;gt;
&amp;lt;/blockquote&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;!--[ Blockquote (Style 1) ]--&gt;
&lt;blockquote class=&#39;s1&#39;&gt;
  &lt;p&gt;Be who you are and say what you feel, because those who mind don&#39;t matter, and those who matter don&#39;t mind.&lt;/p&gt;
  &lt;span&gt;Bernard M. Baruch&lt;/span&gt;
&lt;/blockquote&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Blockquote (Style 1) ]--&amp;gt;
&amp;lt;blockquote class=&#39;s1&#39;&amp;gt;
  &amp;lt;p&amp;gt;&lt;mark&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin vestibulum dignissim diam, et efficitur felis commodo et. Mauris vel diam pellentesque lorem lacinia luctus.&lt;/mark&gt;&amp;lt;/p&amp;gt;
  &amp;lt;span&amp;gt;&lt;mark&gt;Anonymous&lt;/mark&gt;&amp;lt;/span&amp;gt;
&amp;lt;/blockquote&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;!--[ Blockquote (Style 2) ]--&gt;
&lt;blockquote class=&#39;s2&#39;&gt;
  &lt;p&gt;I&#39;ve learned that people will forget what you said, people will forget what you did, but people will never forget how you made them feel.&lt;/p&gt;
  &lt;span&gt;Maya Angelou&lt;/span&gt;
&lt;/blockquote&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Blockquote (Style 2) ]--&amp;gt;
&amp;lt;blockquote class=&#39;s2&#39;&amp;gt;
  &amp;lt;p&amp;gt;&lt;mark&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin vestibulum dignissim diam, et efficitur felis commodo et. Mauris vel diam pellentesque lorem lacinia luctus.&lt;/mark&gt;&amp;lt;/p&amp;gt;
  &amp;lt;span&amp;gt;&lt;mark&gt;Anonymous&lt;/mark&gt;&amp;lt;/span&amp;gt;
&amp;lt;/blockquote&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Note Block&lt;/h2&gt;

&lt;p&gt;This feature serves to add important info, warning sentences or highlight sentences, there are two styles as shown below.&lt;/p&gt;

&lt;!--[ Note info ]--&gt;
&lt;p class=&#39;note&#39;&gt;&lt;b&gt;Info!&lt;/b&gt;&lt;br/&gt;
  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin vestibulum dignissim diam, et efficitur felis commodo et. Mauris vel diam pellentesque lorem lacinia luctus.
&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Note info ]--&amp;gt;
&amp;lt;p class=&#39;note&#39;&amp;gt;&amp;lt;b&amp;gt;&lt;mark&gt;Info!&lt;/mark&gt;&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;
  &lt;mark&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit.&lt;/mark&gt;
&amp;lt;/p&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;!--[ Note warning ]--&gt;
&lt;p class=&#39;note wr&#39;&gt;&lt;b&gt;Warning!&lt;/b&gt;&lt;br/&gt;
  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin vestibulum dignissim diam, et efficitur felis commodo et. Mauris vel diam pellentesque lorem lacinia luctus.
&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Note warning ]--&amp;gt;
&amp;lt;p class=&#39;note wr&#39;&amp;gt;&amp;lt;b&amp;gt;&lt;mark&gt;Warning!&lt;/mark&gt;&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;
  &lt;mark&gt;Lorem ipsum dolor, sit amet consectetur adipisicing elit.&lt;/mark&gt;
&amp;lt;/p&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Alert&lt;/h2&gt;

&lt;p&gt;Similar to Note Block, the only difference is Alert has different style and has more variants:&lt;/p&gt;

&lt;!--[ Alert default ]--&gt;
&lt;div class=&#39;alert&#39;&gt;&lt;b&gt;Default&lt;/b&gt;
  A simple default alert - Lorem ipsum dolor sit amet.
&lt;/div&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Alert default ]--&amp;gt;
&amp;lt;div class=&#39;alert&#39;&amp;gt;&amp;lt;b&amp;gt;&lt;mark&gt;Default&lt;/mark&gt;&amp;lt;/b&amp;gt;
  &lt;mark&gt;A simple default alert - Lorem ipsum dolor sit amet.&lt;/mark&gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;!--[ Alert outlined ]--&gt;
&lt;div class=&#39;alert outline&#39;&gt;&lt;b&gt;Outline&lt;/b&gt;
  A simple outline alert - Lorem ipsum dolor sit amet.
&lt;/div&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Alert outlined ]--&amp;gt;
&amp;lt;div class=&#39;alert outline&#39;&amp;gt;&amp;lt;b&amp;gt;&lt;mark&gt;Outline&lt;/mark&gt;&amp;lt;/b&amp;gt;
  &lt;mark&gt;A simple outline alert - Lorem ipsum dolor sit amet.&lt;/mark&gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;!--[ Alert variant info ]--&gt;
&lt;div class=&#39;alert info&#39;&gt;&lt;b&gt;Info!&lt;/b&gt;
  A simple info alert - Lorem ipsum dolor sit amet.
&lt;/div&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Alert variant info ]--&amp;gt;
&amp;lt;div class=&#39;alert info&#39;&amp;gt;&amp;lt;b&amp;gt;&lt;mark&gt;Info!&lt;/mark&gt;&amp;lt;/b&amp;gt;
  &lt;mark&gt;A simple info alert - Lorem ipsum dolor sit amet.&lt;/mark&gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;!--[ Alert variant warning ]--&gt;
&lt;div class=&#39;alert warning&#39;&gt;&lt;b&gt;Warning!&lt;/b&gt;
  A simple warning alert - Lorem ipsum dolor sit amet.
&lt;/div&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Alert variant warning ]--&amp;gt;
&amp;lt;div class=&#39;alert warning&#39;&amp;gt;&amp;lt;b&amp;gt;&lt;mark&gt;Warning!&lt;/mark&gt;&amp;lt;/b&amp;gt;
  &lt;mark&gt;A simple warning alert - Lorem ipsum dolor sit amet.&lt;/mark&gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;!--[ Alert variant success ]--&gt;
&lt;div class=&#39;alert success&#39;&gt;&lt;b&gt;Success!&lt;/b&gt;
  A simple success alert - Lorem ipsum dolor sit amet.
&lt;/div&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Alert variant success ]--&amp;gt;
&amp;lt;div class=&#39;alert success&#39;&amp;gt;&amp;lt;b&amp;gt;&lt;mark&gt;Success!&lt;/mark&gt;&amp;lt;/b&amp;gt;
  &lt;mark&gt;A simple success alert - Lorem ipsum dolor sit amet.&lt;/mark&gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;!--[ Alert variant error ]--&gt;
&lt;div class=&#39;alert error&#39;&gt;&lt;b&gt;Error!&lt;/b&gt;
  A simple error alert - Lorem ipsum dolor sit amet.
&lt;/div&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Alert variant error ]--&amp;gt;
&amp;lt;div class=&#39;alert error&#39;&amp;gt;&amp;lt;b&amp;gt;&lt;mark&gt;Error!&lt;/mark&gt;&amp;lt;/b&amp;gt;
  &lt;mark&gt;A simple error alert - Lorem ipsum dolor sit amet.&lt;/mark&gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;!--[ Alert variant info outlined ]--&gt;
&lt;div class=&#39;alert info outline&#39;&gt;&lt;b&gt;Info!&lt;/b&gt;
  A simple info alert - Lorem ipsum dolor sit amet.
&lt;/div&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Alert variant info outlined ]--&amp;gt;
&amp;lt;div class=&#39;alert info outline&#39;&amp;gt;&amp;lt;b&amp;gt;&lt;mark&gt;Info!&lt;/mark&gt;&amp;lt;/b&amp;gt;
  &lt;mark&gt;A simple info alert - Lorem ipsum dolor sit amet.&lt;/mark&gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;!--[ Alert variant warning outlined ]--&gt;
&lt;div class=&#39;alert warning outline&#39;&gt;&lt;b&gt;Warning!&lt;/b&gt;
  A simple warning alert - Lorem ipsum dolor sit amet.
&lt;/div&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Alert variant warning outlined ]--&amp;gt;
&amp;lt;div class=&#39;alert warning outline&#39;&amp;gt;&amp;lt;b&amp;gt;&lt;mark&gt;Warning!&lt;/mark&gt;&amp;lt;/b&amp;gt;
  &lt;mark&gt;A simple warning alert - Lorem ipsum dolor sit amet.&lt;/mark&gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;!--[ Alert variant success outlined ]--&gt;
&lt;div class=&#39;alert success outline&#39;&gt;&lt;b&gt;Success!&lt;/b&gt;
  A simple success alert - Lorem ipsum dolor sit amet.
&lt;/div&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Alert variant success outlined ]--&amp;gt;
&amp;lt;div class=&#39;alert success outline&#39;&amp;gt;&amp;lt;b&amp;gt;&lt;mark&gt;Success!&lt;/mark&gt;&amp;lt;/b&amp;gt;
  &lt;mark&gt;A simple success alert - Lorem ipsum dolor sit amet.&lt;/mark&gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;!--[ Alert variant error outlined ]--&gt;
&lt;div class=&#39;alert error outline&#39;&gt;&lt;b&gt;Error!&lt;/b&gt;
  A simple error alert - Lorem ipsum dolor sit amet.
&lt;/div&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Alert variant error outlined ]--&amp;gt;
&amp;lt;div class=&#39;alert error outline&#39;&amp;gt;&amp;lt;b&amp;gt;&lt;mark&gt;Error!&lt;/mark&gt;&amp;lt;/b&amp;gt;
  &lt;mark&gt;A simple error alert - Lorem ipsum dolor sit amet.&lt;/mark&gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Table&lt;/h2&gt;

&lt;p&gt;Using tables is a little more complicated in HTML, we recommend that you learn more about HTML tables before using them. The following is an example of a table with data:&lt;/p&gt;

&lt;!--[ Table ]--&gt;
&lt;div class=&#39;table sticky bordered stripped hovered&#39;&gt;
  &lt;table&gt;
    &lt;thead&gt;
      &lt;tr&gt;
        &lt;th&gt;Name&lt;/th&gt;
        &lt;th&gt;Position&lt;/th&gt;
        &lt;th&gt;Office&lt;/th&gt;
        &lt;th&gt;Age&lt;/th&gt;
        &lt;th&gt;Start date&lt;/th&gt;
        &lt;th&gt;Salary&lt;/th&gt;
      &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
      &lt;tr&gt;
        &lt;td&gt;Tiger Nixon&lt;/td&gt;
        &lt;td&gt;System Architect&lt;/td&gt;
        &lt;td&gt;Edinburgh&lt;/td&gt;
        &lt;td&gt;61&lt;/td&gt;
        &lt;td&gt;2011/04/25&lt;/td&gt;
        &lt;td&gt;$320,800&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td&gt;Garrett Winters&lt;/td&gt;
        &lt;td&gt;Accountant&lt;/td&gt;
        &lt;td&gt;Tokyo&lt;/td&gt;
        &lt;td&gt;63&lt;/td&gt;
        &lt;td&gt;2011/07/25&lt;/td&gt;
        &lt;td&gt;$170,750&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td&gt;Ashton Cox&lt;/td&gt;
        &lt;td&gt;Junior Technical Author&lt;/td&gt;
        &lt;td&gt;San Francisco&lt;/td&gt;
        &lt;td&gt;66&lt;/td&gt;
        &lt;td&gt;2009/01/12&lt;/td&gt;
        &lt;td&gt;$86,000&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Table ]--&amp;gt;
&amp;lt;div class=&#39;table sticky bordered stripped hovered&#39;&amp;gt;
  &amp;lt;table&amp;gt;
    &amp;lt;thead&amp;gt;
      &amp;lt;tr&amp;gt;
        &amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;
        &amp;lt;th&amp;gt;Position&amp;lt;/th&amp;gt;
        &amp;lt;th&amp;gt;Office&amp;lt;/th&amp;gt;
        &amp;lt;th&amp;gt;Age&amp;lt;/th&amp;gt;
        &amp;lt;th&amp;gt;Start date&amp;lt;/th&amp;gt;
        &amp;lt;th&amp;gt;Salary&amp;lt;/th&amp;gt;
      &amp;lt;/tr&amp;gt;
    &amp;lt;/thead&amp;gt;
    &amp;lt;tbody&amp;gt;
      &amp;lt;tr&amp;gt;
        &amp;lt;td&amp;gt;Tiger Nixon&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;System Architect&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;Edinburgh&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;61&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;2011/04/25&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;$320,800&amp;lt;/td&amp;gt;
      &amp;lt;/tr&amp;gt;
      &amp;lt;tr&amp;gt;
        &amp;lt;td&amp;gt;Garrett Winters&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;Accountant&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;Tokyo&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;63&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;2011/07/25&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;$170,750&amp;lt;/td&amp;gt;
      &amp;lt;/tr&amp;gt;
      &amp;lt;tr&amp;gt;
        &amp;lt;td&amp;gt;Ashton Cox&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;Junior Technical Author&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;San Francisco&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;66&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;2009/01/12&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;$86,000&amp;lt;/td&amp;gt;
      &amp;lt;/tr&amp;gt;
    &amp;lt;/tbody&amp;gt;
  &amp;lt;/table&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;For table styles, you can add a classname to the &lt;code&gt;.table&lt;/code&gt; element, including:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code&gt;cborder&lt;/code&gt; : border for the table container.&lt;/li&gt;
  &lt;li&gt;&lt;code&gt;bordered&lt;/code&gt; / &lt;code&gt;noborder&lt;/code&gt; (choose one): table content border.&lt;/li&gt;
  &lt;li&gt;&lt;code&gt;clr&lt;/code&gt; / &lt;code&gt;primary&lt;/code&gt; / &lt;code&gt;warning&lt;/code&gt; / &lt;code&gt;success&lt;/code&gt; / &lt;code&gt;error&lt;/code&gt; : background heading table.&lt;/li&gt;
  &lt;li&gt;&lt;code&gt;stripped&lt;/code&gt; : table row stripped style.&lt;/li&gt;
  &lt;li&gt;&lt;code&gt;hovered&lt;/code&gt; : hover table row.&lt;/li&gt;
  &lt;li&gt;&lt;code&gt;mh100&lt;/code&gt; / &lt;code&gt;mhvh&lt;/code&gt; / &lt;code&gt;mh200&lt;/code&gt; / &lt;code&gt;mh300&lt;/code&gt; : max-height of the table in px (exception: &lt;code&gt;mh100&lt;/code&gt; sets height to &lt;code&gt;100%&lt;/code&gt;).&lt;/li&gt;
  &lt;li&gt;&lt;code&gt;sp5&lt;/code&gt; / &lt;code&gt;sp10&lt;/code&gt; / &lt;code&gt;sp20&lt;/code&gt; : table content padding&lt;/li&gt;
&lt;/ul&gt;

&lt;p class=&#39;note wr&#39;&gt;&lt;code&gt;stripped&lt;/code&gt; and &lt;code&gt;hovered&lt;/code&gt; classnames were added in v3.1.0&lt;/p&gt;

&lt;h2&gt;Steps&lt;/h2&gt;

&lt;p&gt;Used to define steps for a guide.&lt;/p&gt;

&lt;!--[ Steps ]--&gt;
&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;step_1&lt;/li&gt;
  &lt;li&gt;step_2&lt;/li&gt;
  &lt;li&gt;step_3&lt;/li&gt;
&lt;/ol&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Steps ]--&amp;gt;
&amp;lt;ol class=&#39;steps&#39;&amp;gt;
  &amp;lt;li&amp;gt;step_1&amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;step_2&amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;step_3&amp;lt;/li&amp;gt;
&amp;lt;/ol&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Code Block&lt;/h2&gt;

&lt;p&gt;Used to define lines of computer code (HTML, CSS, Javascript, etc.) in posts.&lt;/p&gt;

&lt;pre data-comment=&#39;.html&#39; data-source=&#39;src/index.html&#39;&gt;&lt;code&gt;&amp;lt;pre &lt;mark class=&#39;block&#39; data-before=&#39;Optional&#39;&gt;data-comment=&#39;.html&#39;&lt;/mark&gt; &lt;mark class=&#39;block&#39; data-before=&#39;Optional&#39;&gt;data-source=&#39;src/index.html&#39;&lt;/mark&gt;&amp;gt;&amp;lt;code&amp;gt;&lt;mark&gt;escaped_code_here&lt;/mark&gt;&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;code&gt;code&lt;/code&gt; tag can be used to define inline code like this: &lt;code&gt;escaped_code_here&lt;/code&gt;.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;code&amp;gt;&lt;mark&gt;escaped_code_here&lt;/mark&gt;&amp;lt;/code&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;code&gt;kbd&lt;/code&gt; tag can be used to define keyboard input like this: &lt;kbd&gt;&amp;#8984; + A&lt;/kbd&gt;.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;kbd&amp;gt;&lt;mark&gt;&amp;#8984; + A&lt;/mark&gt;&amp;lt;/kbd&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Inside &lt;code&gt;&amp;lt;code&amp;gt;&lt;/code&gt; tag, a part can be marked by wrapping it with &lt;code&gt;&amp;lt;mark&amp;gt;&lt;/code&gt; tag.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;// mark examples
console.log(&quot;&lt;mark&gt;Hello World!&lt;/mark&gt;&quot;);
console.log(&quot;&lt;mark class=&#39;block&#39;&gt;Hello World!&lt;/mark&gt;&quot;);
console.log(&quot;&lt;mark class=&#39;gray&#39;&gt;Hello World!&lt;/mark&gt;&quot;);
console.log(&quot;&lt;mark class=&#39;red&#39;&gt;Hello World!&lt;/mark&gt;&quot;);
console.log(&quot;&lt;mark class=&#39;orange&#39;&gt;Hello World!&lt;/mark&gt;&quot;);
console.log(&quot;&lt;mark class=&#39;blue&#39;&gt;Hello World!&lt;/mark&gt;&quot;);
console.log(&quot;&lt;mark class=&#39;green block&#39;&gt;Hello World!&lt;/mark&gt;&quot;);
console.log(&quot;&lt;mark class=&#39;gold&#39;&gt;Hello World!&lt;/mark&gt;&quot;);
console.log(&quot;&lt;mark class=&#39;purple&#39;&gt;Hello World!&lt;/mark&gt;&quot;);
console.log(&quot;&lt;mark data-before=&#39;Message before&#39;&gt;Hello World!&lt;/mark&gt;&quot;);
console.log(&quot;&lt;mark class=&#39;block red&#39; data-after=&#39;Message after&#39;&gt;Hello World!&lt;/mark&gt;&quot;);
console.log(&quot;&lt;mark class=&#39;green&#39; data-before=&#39;$&#39;&gt;Hello World!&lt;/mark&gt;&quot;);
console.log(&quot;&lt;mark data-after=&#39;$&#39;&gt;Hello World!&lt;/mark&gt;&quot;);

// mark codes
console.log(&quot;&amp;lt;mark&amp;gt;Hello World!&amp;lt;/mark&amp;gt;&quot;);
console.log(&quot;&amp;lt;mark class=&#39;block&#39;&amp;gt;Hello World!&amp;lt;/mark&amp;gt;&quot;);
console.log(&quot;&amp;lt;mark class=&#39;gray&#39;&amp;gt;Hello World!&amp;lt;/mark&amp;gt;&quot;);
console.log(&quot;&amp;lt;mark class=&#39;red&#39;&amp;gt;Hello World!&amp;lt;/mark&amp;gt;&quot;);
console.log(&quot;&amp;lt;mark class=&#39;orange&#39;&amp;gt;Hello World!&amp;lt;/mark&amp;gt;&quot;);
console.log(&quot;&amp;lt;mark class=&#39;blue&#39;&amp;gt;Hello World!&amp;lt;/mark&amp;gt;&quot;);
console.log(&quot;&amp;lt;mark class=&#39;green block&#39;&amp;gt;Hello World!&amp;lt;/mark&amp;gt;&quot;);
console.log(&quot;&amp;lt;mark class=&#39;gold&#39;&amp;gt;Hello World!&amp;lt;/mark&amp;gt;&quot;);
console.log(&quot;&amp;lt;mark class=&#39;purple&#39;&amp;gt;Hello World!&amp;lt;/mark&amp;gt;&quot;);
console.log(&quot;&amp;lt;mark data-before=&#39;Message before&#39;&amp;gt;Hello World!&amp;lt;/mark&amp;gt;&quot;);
console.log(&quot;&amp;lt;mark class=&#39;block red&#39; data-after=&#39;Message after&#39;&amp;gt;Hello World!&amp;lt;/mark&amp;gt;&quot;);
console.log(&quot;&amp;lt;mark class=&#39;green&#39; data-before=&#39;$&#39;&amp;gt;Hello World!&amp;lt;/mark&amp;gt;&quot;);
console.log(&quot;&amp;lt;mark data-after=&#39;$&#39;&amp;gt;Hello World!&amp;lt;/mark&amp;gt;&quot;);&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Good to know:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;You need to use escaped code inside &lt;code&gt;&amp;lt;code&amp;gt;&lt;/code&gt; elements, which means you have to replace all &lt;code&gt;&amp;amp;&lt;/code&gt; to &lt;code&gt;&amp;amp;amp;&lt;/code&gt;, &lt;code&gt;&amp;lt;&lt;/code&gt; to &lt;code&gt;&amp;amp;lt;&lt;/code&gt; and &lt;code&gt;&amp;gt;&lt;/code&gt; to &lt;code&gt;&amp;amp;gt;&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;All the code blocks are automatically highlighted using &lt;a class=&quot;extL&quot; href=&quot;https://github.com/highlightjs/highlight.js&quot; rel=&quot;nofollow noreferrer noopener&quot; target=&quot;_blank&quot;&gt;@highlightjs/highlight.js&lt;/a&gt;, one of the popular libraries for code highlighting and a custom plugin. Copy button and lines number are also automatically appended.&lt;/li&gt;
  &lt;li&gt;The library is loaded if and only if there is at-least one code block in the post to make sure we don&#39;t make extra requests.&lt;/li&gt;
  &lt;li&gt;Inline codes are also highlighted.&lt;/li&gt;
  &lt;li&gt;The library automatically detects the best language matched for your code and highlights it, but sometimes it may not detect the correct language.&lt;/li&gt;
  &lt;li&gt;If the library is detecting the language incorrectly or you want to explicitly specify the code language, you can add a classname in the manner, the language name prefixed with &lt;code&gt;language-&lt;/code&gt;, to the &lt;code&gt;&amp;lt;code&amp;gt;&lt;/code&gt; element. For an example, if your code is written in javascript, you can add a classname &lt;code&gt;language-js&lt;/code&gt; or &lt;code&gt;language-javascript&lt;/code&gt; to the &lt;code&gt;&amp;lt;code&amp;gt;&lt;/code&gt; element.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Multi-tabs Code Block&lt;/h3&gt;

&lt;p&gt;Used to group multiple code blocks together.&lt;/p&gt;

&lt;!--[ Multi-tabs Code Block Highlighter ]--&gt;
&lt;div class=&#39;pre tabs&#39;&gt;
  &lt;!--[ Active function ]--&gt;
  &lt;input id=&#39;preT1-1&#39; type=&#39;radio&#39; name=&#39;preTab1&#39; checked/&gt;
  &lt;input id=&#39;preT1-2&#39; type=&#39;radio&#39; name=&#39;preTab1&#39;/&gt;
  &lt;input id=&#39;preT1-3&#39; type=&#39;radio&#39; name=&#39;preTab1&#39;/&gt;
  &lt;input id=&#39;preT1-4&#39; type=&#39;radio&#39; name=&#39;preTab1&#39;/&gt;
  
  &lt;!--[ Header/title ]--&gt;
  &lt;div&gt;
    &lt;!--[ Change atribute data-text=&#39;...&#39; to replace title ]--&gt;
    &lt;label for=&#39;preT1-1&#39; data-text=&#39;HTML&#39;&gt;&lt;/label&gt;
    &lt;label for=&#39;preT1-2&#39; data-text=&#39;CSS&#39;&gt;&lt;/label&gt;
    &lt;label for=&#39;preT1-3&#39; data-text=&#39;JS&#39;&gt;&lt;/label&gt;
    &lt;label for=&#39;preT1-4&#39; data-text=&#39;JSON&#39;&gt;&lt;/label&gt;
  &lt;/div&gt;

  &lt;!--[ Content ]--&gt;
  &lt;pre class=&#39;preC1-1&#39; data-source=&#39;src/index.html&#39;&gt;&lt;code&gt;[HTML] escaped_code_here&lt;/code&gt;&lt;/pre&gt;
  &lt;pre class=&#39;preC1-2&#39; data-source=&#39;src/style.css&#39;&gt;&lt;code&gt;[CSS] escaped_code_here&lt;/code&gt;&lt;/pre&gt;
  &lt;pre class=&#39;preC1-3&#39; data-source=&#39;src/main.js&#39;&gt;&lt;code&gt;[JS] escaped_code_here&lt;/code&gt;&lt;/pre&gt;
  &lt;pre class=&#39;preC1-4&#39; data-source=&#39;src/rules.json&#39;&gt;&lt;code&gt;[JSON] escaped_code_here&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Multi-tabs Code Block Highlighter ]--&amp;gt;
&amp;lt;div class=&#39;pre tabs&#39;&amp;gt;
  &amp;lt;!--[ Active function ]--&amp;gt;
  &amp;lt;input id=&#39;preT1-1&#39; type=&#39;radio&#39; name=&#39;preTab1&#39; checked/&amp;gt;
  &amp;lt;input id=&#39;preT1-2&#39; type=&#39;radio&#39; name=&#39;preTab1&#39;/&amp;gt;
  &amp;lt;input id=&#39;preT1-3&#39; type=&#39;radio&#39; name=&#39;preTab1&#39;/&amp;gt;
  &amp;lt;input id=&#39;preT1-4&#39; type=&#39;radio&#39; name=&#39;preTab1&#39;/&amp;gt;
  
  &amp;lt;!--[ Header/title ]--&amp;gt;
  &amp;lt;div&amp;gt;
    &amp;lt;!--[ Change atribute data-text=&#39;...&#39; to replace title ]--&amp;gt;
    &amp;lt;label for=&#39;preT1-1&#39; data-text=&#39;&lt;mark&gt;HTML&lt;/mark&gt;&#39;&amp;gt;&amp;lt;/label&amp;gt;
    &amp;lt;label for=&#39;preT1-2&#39; data-text=&#39;&lt;mark&gt;CSS&lt;/mark&gt;&#39;&amp;gt;&amp;lt;/label&amp;gt;
    &amp;lt;label for=&#39;preT1-3&#39; data-text=&#39;&lt;mark&gt;JS&lt;/mark&gt;&#39;&amp;gt;&amp;lt;/label&amp;gt;
    &amp;lt;label for=&#39;preT1-4&#39; data-text=&#39;&lt;mark&gt;JSON&lt;/mark&gt;&#39;&amp;gt;&amp;lt;/label&amp;gt;
  &amp;lt;/div&amp;gt;

  &amp;lt;!--[ Content ]--&amp;gt;
  &amp;lt;pre class=&#39;preC1-1&#39; &lt;mark class=&#39;block&#39; data-before=&#39;Optional&#39;&gt;data-source=&#39;src/index.html&#39;&lt;/mark&gt;&amp;gt;&amp;lt;code&amp;gt;&lt;mark&gt;[HTML] escaped_code_here&lt;/mark&gt;&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;
  &amp;lt;pre class=&#39;preC1-2&#39; &lt;mark class=&#39;block&#39; data-before=&#39;Optional&#39;&gt;data-source=&#39;src/style.css&#39;&lt;/mark&gt;&amp;gt;&amp;lt;code&amp;gt;&lt;mark&gt;[CSS] escaped_code_here&lt;/mark&gt;&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;
  &amp;lt;pre class=&#39;preC1-3&#39; &lt;mark class=&#39;block&#39; data-before=&#39;Optional&#39;&gt;data-source=&#39;src/main.js&#39;&lt;/mark&gt;&amp;gt;&amp;lt;code&amp;gt;&lt;mark&gt;[JS] escaped_code_here&lt;/mark&gt;&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;
  &amp;lt;pre class=&#39;preC1-4&#39; &lt;mark class=&#39;block&#39; data-before=&#39;Optional&#39;&gt;data-source=&#39;src/rules.json&#39;&lt;/mark&gt;&amp;gt;&amp;lt;code&amp;gt;&lt;mark&gt;[JSON] escaped_code_here&lt;/mark&gt;&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Spoiler&lt;/h2&gt;

&lt;p&gt;Used to create interactive widgets that the user can open and close on demand. By default this widget is closed, will display the content in it when the user presses the command button. Any content can be included in this widget.&lt;/p&gt;

&lt;!--[ Spoiler ]--&gt;
&lt;details class=&#39;sp&#39;&gt;
  &lt;summary data-show=&#39;Show all&#39; data-hide=&#39;Hide all&#39;&gt;Spoiler:&lt;/summary&gt;
  &lt;div&gt;
    &lt;p&gt;text_here&lt;/p&gt;
  &lt;/div&gt;
&lt;/details&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Spoiler ]--&amp;gt;
&amp;lt;details class=&#39;sp&#39;&amp;gt;
  &amp;lt;summary data-show=&#39;Show all&#39; data-hide=&#39;Hide all&#39;&amp;gt;Spoiler:&amp;lt;/summary&amp;gt;
  &amp;lt;div&amp;gt;
    &amp;lt;p&amp;gt;text_here&amp;lt;/p&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/details&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Accordion&lt;/h2&gt;

&lt;p&gt;Defines additional content that users can open and close on demand in groups, usually used for a list of questions or FAQs (Frequently Asked Questions).&lt;/p&gt;

&lt;!--[ Accordion ]--&gt;
&lt;details class=&#39;ac&#39;&gt;
  &lt;summary&gt;Title_here&lt;/summary&gt;
  &lt;div&gt;
    &lt;p&gt;text_here&lt;/p&gt;
  &lt;/div&gt;
&lt;/details&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Accordion ]--&amp;gt;
&amp;lt;details class=&#39;ac&#39;&amp;gt;
  &amp;lt;summary&amp;gt;Title_here&amp;lt;/summary&amp;gt;
  &amp;lt;div&amp;gt;
    &amp;lt;p&amp;gt;text_here&amp;lt;/p&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/details&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;!--[ Accordion (Alternate) ]--&gt;
&lt;details class=&#39;ac alt&#39;&gt;
  &lt;summary&gt;Title_here&lt;/summary&gt;
  &lt;div&gt;
    &lt;p&gt;text_here&lt;/p&gt;
  &lt;/div&gt;
&lt;/details&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Accordion (Alternate) ]--&amp;gt;
&amp;lt;details class=&#39;ac alt&#39;&amp;gt;
  &amp;lt;summary&amp;gt;Title_here&amp;lt;/summary&amp;gt;
  &amp;lt;div&amp;gt;
    &amp;lt;p&amp;gt;text_here&amp;lt;/p&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/details&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;!--[ Accordion (Grouped) ]--&gt;
&lt;div class=&#39;showH&#39;&gt;
  &lt;details class=&#39;ac&#39;&gt;
    &lt;summary&gt;Title_here&lt;/summary&gt;
    &lt;div&gt;
      &lt;p&gt;text_here&lt;/p&gt;
    &lt;/div&gt;
  &lt;/details&gt;
  &lt;details class=&#39;ac&#39;&gt;
    &lt;summary&gt;Title_here&lt;/summary&gt;
    &lt;div&gt;
      &lt;p&gt;text_here&lt;/p&gt;
    &lt;/div&gt;
  &lt;/details&gt;
  &lt;details class=&#39;ac alt&#39;&gt;
    &lt;summary&gt;Title_here&lt;/summary&gt;
    &lt;div&gt;
      &lt;p&gt;text_here&lt;/p&gt;
    &lt;/div&gt;
  &lt;/details&gt;
  &lt;details class=&#39;ac alt&#39;&gt;
    &lt;summary&gt;Title_here&lt;/summary&gt;
    &lt;div&gt;
      &lt;p&gt;text_here&lt;/p&gt;
    &lt;/div&gt;
  &lt;/details&gt;
&lt;/div&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Accordion (Grouped) ]--&amp;gt;
&amp;lt;div class=&#39;showH&#39;&amp;gt;
  &amp;lt;details class=&#39;ac&#39;&amp;gt;
    &amp;lt;summary&amp;gt;Title_here&amp;lt;/summary&amp;gt;
    &amp;lt;div&amp;gt;
      &amp;lt;p&amp;gt;text_here&amp;lt;/p&amp;gt;
    &amp;lt;/div&amp;gt;
  &amp;lt;/details&amp;gt;
  &amp;lt;details class=&#39;ac&#39;&amp;gt;
    &amp;lt;summary&amp;gt;Title_here&amp;lt;/summary&amp;gt;
    &amp;lt;div&amp;gt;
      &amp;lt;p&amp;gt;text_here&amp;lt;/p&amp;gt;
    &amp;lt;/div&amp;gt;
  &amp;lt;/details&amp;gt;
  &amp;lt;details class=&#39;ac alt&#39;&amp;gt;
    &amp;lt;summary&amp;gt;Title_here&amp;lt;/summary&amp;gt;
    &amp;lt;div&amp;gt;
      &amp;lt;p&amp;gt;text_here&amp;lt;/p&amp;gt;
    &amp;lt;/div&amp;gt;
  &amp;lt;/details&amp;gt;
  &amp;lt;details class=&#39;ac alt&#39;&amp;gt;
    &amp;lt;summary&amp;gt;Title_here&amp;lt;/summary&amp;gt;
    &amp;lt;div&amp;gt;
      &amp;lt;p&amp;gt;text_here&amp;lt;/p&amp;gt;
    &amp;lt;/div&amp;gt;
  &amp;lt;/details&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;FAQs in microdata&lt;/h3&gt;

&lt;p&gt;A Frequently Asked Question (FAQ) page contains a list of questions and answers pertaining to a particular topic. Properly marked up FAQ pages may be eligible to have a rich result on Search and an &lt;a class=&quot;extL&quot; href=&quot;https://developers.google.com/assistant/content/overview&quot; rel=&quot;nofollow noreferrer&quot; target=&quot;_blank&quot;&gt;Action on the Google Assistant&lt;/a&gt;, which can help your site reach the right users.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Accordion (FAQPage) ]--&amp;gt;
&amp;lt;div class=&#39;showH&#39; itemscope itemtype=&#39;https://schema.org/FAQPage&#39;&amp;gt;
  &amp;lt;details class=&#39;ac&#39; itemscope itemprop=&#39;mainEntity&#39; itemtype=&#39;https://schema.org/Question&#39;&amp;gt;
    &amp;lt;summary itemprop=&#39;name&#39;&amp;gt;Title_here&amp;lt;/summary&amp;gt;
    &amp;lt;div itemscope itemprop=&#39;acceptedAnswer&#39; itemtype=&#39;https://schema.org/Answer&#39;&amp;gt;
      &amp;lt;p itemprop=&#39;text&#39;&amp;gt;text_here&amp;lt;/p&amp;gt;
    &amp;lt;/div&amp;gt;
  &amp;lt;/details&amp;gt;
  &amp;lt;details class=&#39;ac&#39; itemscope itemprop=&#39;mainEntity&#39; itemtype=&#39;https://schema.org/Question&#39;&amp;gt;
    &amp;lt;summary itemprop=&#39;name&#39;&amp;gt;Title_here&amp;lt;/summary&amp;gt;
    &amp;lt;div itemscope itemprop=&#39;acceptedAnswer&#39; itemtype=&#39;https://schema.org/Answer&#39;&amp;gt;
      &amp;lt;p itemprop=&#39;text&#39;&amp;gt;text_here&amp;lt;/p&amp;gt;
    &amp;lt;/div&amp;gt;
  &amp;lt;/details&amp;gt;
  &amp;lt;details class=&#39;ac alt&#39; itemscope itemprop=&#39;mainEntity&#39; itemtype=&#39;https://schema.org/Question&#39;&amp;gt;
    &amp;lt;summary itemprop=&#39;name&#39;&amp;gt;Title_here&amp;lt;/summary&amp;gt;
    &amp;lt;div itemscope itemprop=&#39;acceptedAnswer&#39; itemtype=&#39;https://schema.org/Answer&#39;&amp;gt;
      &amp;lt;p itemprop=&#39;text&#39;&amp;gt;text_here&amp;lt;/p&amp;gt;
    &amp;lt;/div&amp;gt;
  &amp;lt;/details&amp;gt;
  &amp;lt;details class=&#39;ac alt&#39; itemscope itemprop=&#39;mainEntity&#39; itemtype=&#39;https://schema.org/Question&#39;&amp;gt;
    &amp;lt;summary itemprop=&#39;name&#39;&amp;gt;Title_here&amp;lt;/summary&amp;gt;
    &amp;lt;div itemscope itemprop=&#39;acceptedAnswer&#39; itemtype=&#39;https://schema.org/Answer&#39;&amp;gt;
      &amp;lt;p itemprop=&#39;text&#39;&amp;gt;text_here&amp;lt;/p&amp;gt;
    &amp;lt;/div&amp;gt;
  &amp;lt;/details&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p class=&#39;note wr&#39;&gt;&lt;b&gt;Warning!&lt;/b&gt;&lt;br&gt;
  You cannot use this component at more than one places in a single post or page, consider grouping all of FAQs in a single component.
&lt;/p&gt;

&lt;h2&gt;Table of Contents&lt;/h2&gt;

&lt;p&gt;The TOC (acronym of Table of Contents) helps users quickly navigate through the content of a webpage by providing direct links to different sections. This is especially useful for longer articles or pages with multiple distinct sections.&lt;/p&gt;

&lt;p&gt;There are two ways to define a TOC.&lt;/p&gt;

&lt;h3&gt;Manual Table of Contents&lt;/h3&gt;

&lt;p&gt;Using Manual TOC is very complicated, you have to add a different &lt;code&gt;id&lt;/code&gt; attribute in each heading tag and write it in content list.&lt;/p&gt;

&lt;h3&gt;Automatic Table of Contents&lt;/h3&gt;

&lt;p&gt;It is not very easy to use the Manual TOC, therefore we provide an Automatic TOC which looks for all the headings in the post and populate the content list in an organized manner.&lt;/p&gt;

&lt;!--[ Automatic Table of Contents ]--&gt;
&lt;details class=&#39;sp toc&#39;&gt;
  &lt;summary data-show=&#39;Show all&#39; data-hide=&#39;Hide all&#39;&gt;Table of Contents&lt;/summary&gt;  
  &lt;div class=&#39;aToc&#39;&gt;&lt;/div&gt;
&lt;/details&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Automatic Table of Contents ]--&amp;gt;
&amp;lt;details class=&#39;sp toc&#39; open&amp;gt;
  &amp;lt;summary data-show=&#39;Show all&#39; data-hide=&#39;Hide all&#39;&amp;gt;Table of Contents&amp;lt;/summary&amp;gt;  
  &amp;lt;div class=&#39;aToc&#39;&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;/details&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Related Posts&lt;/h2&gt;

&lt;p&gt;Related posts are links or content suggestions on a webpage that connect to similar topics or articles, helping users discover more relevant information.&lt;/p&gt;

&lt;p&gt;There are two ways to define this component.&lt;/p&gt;

&lt;h3&gt;Manual Related Posts&lt;/h3&gt;

&lt;p&gt;Manual related posts are selected and added by the author based on relevance, giving full control over the suggestions.&lt;/p&gt;

&lt;div class=&#39;pRelate&#39;&gt;
  &lt;!--[ Related title ]--&gt;
  &lt;b&gt;You may want to read this post :&lt;/b&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;post_title&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;post_title&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;post_title&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;div class=&#39;pRelate&#39;&amp;gt;
  &amp;lt;!--[ Related title ]--&amp;gt;
  &amp;lt;b&amp;gt;You may want to read this post :&amp;lt;/b&amp;gt;
  &amp;lt;ul&amp;gt;
    &amp;lt;li&amp;gt;&amp;lt;a href=&#39;post_link&#39;&amp;gt;post_title&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
    &amp;lt;li&amp;gt;&amp;lt;a href=&#39;post_link&#39;&amp;gt;post_title&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
    &amp;lt;li&amp;gt;&amp;lt;a href=&#39;post_link&#39;&amp;gt;post_title&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
  &amp;lt;/ul&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Automatic Related Posts&lt;/h3&gt;

&lt;p&gt;Automatic related posts are generated by algorithms using categories, saving time but with less precision.&lt;/p&gt;

&lt;!--[ Automatic Related Posts ]--&gt;
&lt;details class=&#39;sp arp&#39; open&gt;
  &lt;summary data-show=&#39;Show all&#39; data-hide=&#39;Hide all&#39;&gt;Related Posts&lt;/summary&gt;  
  &lt;div class=&#39;aRel&#39;&gt;&lt;/div&gt;
&lt;/details&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Automatic Related Posts ]--&amp;gt;
&amp;lt;details class=&#39;sp arp&#39; open&amp;gt;
  &amp;lt;summary data-show=&#39;Show all&#39; data-hide=&#39;Hide all&#39;&amp;gt;Related Posts&amp;lt;/summary&amp;gt;  
  &amp;lt;div class=&#39;aRel&#39;&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;/details&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Good to know:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;This feature shows a list of posts having a particular label.&lt;/li&gt;
  &lt;li&gt;To specify a label, add attribute &lt;code&gt;data-label=&#39;My Label&#39;&lt;/code&gt; to &lt;code&gt;.aRel&lt;/code&gt; element.&lt;/li&gt;
  &lt;li&gt;If attribute &lt;code&gt;data-label&lt;/code&gt; is not specified or there is no post with label specified in &lt;code&gt;data-label&lt;/code&gt;, then it will fallback to a random label from the current post if it is used in a post otherwise fallback to random label from the blog if used in page.&lt;/li&gt;
  &lt;li&gt;It will filter out the post which is being viewed.&lt;/li&gt;
  &lt;li&gt;To set the maximum number of posts, add attribute &lt;code&gt;data-max-posts=&#39;6&#39;&lt;/code&gt;, where 6 is the number of maximum posts.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Lazy YouTube&lt;/h2&gt;

&lt;p&gt;Loads iframe once the play button is clicked otherwise shows the thumbnail image as placeholder which is lazyloaded using &lt;a class=&quot;extL&quot; href=&quot;https://github.com/aFarkas/lazysizes&quot; rel=&quot;nofollow noreferrer noopener&quot; target=&quot;_blank&quot;&gt;@aFarkas/lazysizes&lt;/a&gt;.&lt;/p&gt;

&lt;!--[ Lazy Youtube ]--&gt;
&lt;div class=&#39;lazyYt&#39; data-embed=&#39;PGv2khQzE-Q&#39;&gt;&lt;/div&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Lazy YouTube ]--&amp;gt;
&amp;lt;div class=&#39;lazyYt&#39; data-embed=&#39;&lt;mark data-before=&#39;YouTube video ID&#39;&gt;video_id&lt;/mark&gt;&#39;&amp;gt;&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Good to know:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    You can set the iframe ratio as shown below:
    &lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Lazy YouTube ]--&amp;gt;
&amp;lt;div class=&#39;lazyYt&#39; &lt;mark class=&#39;block purple&#39;&gt;style=&#39;--ratio: 4 / 3&#39;&lt;/mark&gt; data-embed=&#39;&lt;mark data-before=&#39;YouTube video ID&#39;&gt;video_id&lt;/mark&gt;&#39;&amp;gt;&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Defer YouTube&lt;/h3&gt;

&lt;p&gt;Defers iframe loading using &lt;a class=&quot;extL&quot; href=&quot;https://github.com/aFarkas/lazysizes&quot; rel=&quot;nofollow noreferrer noopener&quot; target=&quot;_blank&quot;&gt;@aFarkas/lazysizes&lt;/a&gt;.&lt;/p&gt;

&lt;!--[ Defer YouTube ]--&gt;

&lt;div class=&#39;videoYt&#39;&gt;
  &lt;iframe class=&#39;lazyload&#39; title=&#39;YouTube video player&#39; data-src=&#39;https://www.youtube.com/embed/6w6-5TUyktA&#39; referrerpolicy=&#39;strict-origin-when-cross-origin&#39; frameborder=&#39;0&#39; allow=&#39;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#39; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Defer YouTube ]--&amp;gt;
&amp;lt;div class=&#39;videoYt&#39;&amp;gt;
  &amp;lt;iframe class=&#39;lazyload&#39; data-src=&#39;https://www.youtube.com/embed/&lt;mark data-before=&#39;YouTube video ID&#39;&gt;video_id&lt;/mark&gt;&#39; title=&#39;YouTube video player&#39; frameborder=&#39;0&#39; allow=&#39;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#39; referrerpolicy=&#39;strict-origin-when-cross-origin&#39; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Good to know:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    You can set the iframe ratio as shown below:
    &lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Defer YouTube ]--&amp;gt;
&amp;lt;div class=&#39;videoYt&#39; &lt;mark class=&#39;block purple&#39;&gt;style=&#39;--ratio: 4 / 3&#39;&lt;/mark&gt;&amp;gt;
  &amp;lt;iframe class=&#39;lazyload&#39; data-src=&#39;https://www.youtube.com/embed/&lt;mark data-before=&#39;YouTube video ID&#39;&gt;video_id&lt;/mark&gt;&#39; title=&#39;YouTube video player&#39; frameborder=&#39;0&#39; allow=&#39;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#39; referrerpolicy=&#39;strict-origin-when-cross-origin&#39; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Essentials&lt;/h2&gt;

&lt;p&gt;This section does not provide you any components, but contains general HTML code snippet which can be used for different purposes.&lt;/p&gt;

&lt;h3&gt;Explicit Post Snippet&lt;/h3&gt;

&lt;p&gt;Post snippet shows a few lines of text content of post. It automatically selects texts from beginning of the post. If you would like to set a custom post snippet, you can add the following code snippet at the beginning of the post:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Explicitly sets post snippet ]--&amp;gt;
&amp;lt;div hidden aria-hidden=&#39;true&#39;&amp;gt;&lt;mark&gt;post_snippet&lt;/mark&gt;&amp;lt;/div&amp;gt;

&amp;lt;!--more--&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Explicit Post Thumbnail&lt;/h3&gt;

&lt;p&gt;Blogger automatically selects the first image of the post as its thumbnail. If you would like to set custom post thumbnail which should not appear in the post, you can add the following code snippet at the beginning of the post:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Explicitly sets post thumbnail ]--&amp;gt;
&amp;lt;!--[
  &amp;lt;div class=&#39;separator&#39;&amp;gt;&amp;lt;img src=&#39;&lt;mark&gt;image_src&lt;/mark&gt;&#39;/&amp;gt;&amp;lt;/div&amp;gt;
]--&amp;gt;

&amp;lt;!--more--&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;You can set custom post snippet and post thumbnail by combining the above two code snippets as shown below:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Explicitly sets post snippet ]--&amp;gt;
&amp;lt;div hidden aria-hidden=&#39;true&#39;&amp;gt;&lt;mark&gt;post_snippet&lt;/mark&gt;&amp;lt;/div&amp;gt;

&amp;lt;!--[ Explicitly sets post thumbnail ]--&amp;gt;
&amp;lt;!--[
  &amp;lt;div class=&#39;separator&#39;&amp;gt;&amp;lt;img src=&#39;&lt;mark&gt;image_src&lt;/mark&gt;&#39;/&amp;gt;&amp;lt;/div&amp;gt;
]--&amp;gt;

&amp;lt;!--more--&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Header Subtitle&lt;/h3&gt;

&lt;p&gt;Adds subtitle next to header title in a particular post or page.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;style&amp;gt;
  /* Custom Header subtitle */
  .headH::after{content:&#39;&lt;mark&gt;Subtitle&lt;/mark&gt;&#39;}
&amp;lt;/style&amp;gt;&lt;/code&gt;&lt;/pre&gt;
</description><link>https://www.plus-ui.blog/2024/10/ui-components-and-typography.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjE3-FH9jTSQr9_6YoaPz-K7G9wwb6X2SaZ6qFxA2VqgstFAlLK7IXtvF7uhGRrv4d3FkwFH0a2Am32Ef6RLlB_CquJxR9geCEQH2b_aBtjtXwikxXpf38b22w4dgJk7tMqmeZjI3xDyII7VvG3F2Bt1-YDxfaJY0X9Lms8A9tcY60Y5se31SfTL5lXDT4/s72-c/ui-components-and-typography.png" height="72" width="72"/><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8128085283179772973.post-1698747884107004816</guid><pubDate>Sun, 27 Oct 2024 15:51:00 +0000</pubDate><atom:updated>2025-06-23T08:34:03.888-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Documentation</category><title>Getting Started and Installation</title><description>&lt;!--[ Explicitly sets post snippet ]--&gt;
&lt;div hidden aria-hidden=&#39;true&#39;&gt;Just purchased the template? Let&#39;s get started.&lt;/div&gt;

&lt;!--[ Explicitly sets post thumbnail ]--&gt;
&lt;!--[
  &lt;div class=&#39;separator&#39;&gt;&lt;img src=&#39;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgD4WanyqiJgEpKPOmK2gwpHGfZCqyWgYnVx92NysFqF7tpGmi373fH3YdDoUilDmHGAUxn4h3SlxC4En_qZ3SRKl3mXAH1qiFMCfOjw4mDLePCgVB3fObuRo36hxDipohraLGJMgNEI-aOOpgHxut2-kcjNbSFykOO7dhYVRmorjln7UqND079sw7q3dM/s1280/getting-started-and-installation.png&#39;/&gt;&lt;/div&gt;
]--&gt;

&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;

&lt;p class=&#39;alert info outline&#39;&gt;In order to download the theme or get support from team, you need to make a purchase through &lt;a class=&#39;extL&#39; href=&#39;https://fineshop.gumroad.com/l/plus-ui&#39; target=&#39;_blank&#39;&gt;Gumroad&lt;/a&gt;. If you have already purchased the theme by other methods or you want to ask something before making a purchase, please contact our core developer Armaan through &lt;a class=&#39;extL&#39; href=&#39;https://telegram.me/hello_armaan&#39; target=&#39;_blank&#39; rel=&#39;nofollow noreferrer noopener&#39;&gt;Telegram&lt;/a&gt; or you can email through &lt;a class=&#39;extL&#39; href=&#39;mailto:contact@fineshopdesign.com?subject=Query%20about%20Plus%20UI%20Blogger%20Template&#39; target=&#39;_blank&#39; rel=&#39;nofollow noreferrer noopener&#39;&gt;contact@fineshopdesign.com&lt;/a&gt;.&lt;/p&gt;

&lt;p class=&#39;alert info outline&#39;&gt;&lt;b&gt;Help us improve this post!&lt;/b&gt;
  English is not my first language, so if you find any mistakes or think something can be explained better, feel free to &lt;a class=&#39;extL&#39; href=&#39;/p/contact.html&#39; target=&#39;_blank&#39;&gt;contact us&lt;/a&gt;. Your suggestions are always welcome!
&lt;/p&gt;

&lt;!--[ Automatic Table of Contents ]--&gt;
&lt;details class=&#39;sp toc&#39;&gt;
  &lt;summary &gt;Table of Contents&lt;/summary&gt;  
  &lt;div class=&#39;aToc&#39;&gt;&lt;/div&gt;
&lt;/details&gt;

&lt;h2&gt;Download Files&lt;/h2&gt;

&lt;p&gt;Make sure you have downloaded all the required files from Gumroad after purchasing. If you have not yet downloaded them, follow these steps:&lt;/p&gt;

&lt;p&gt;Via Email receipt:&lt;/p&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;Pull up your email receipt. Click the &lt;b&gt;View content&lt;/b&gt; button to go to the product&#39;s download page.&lt;/li&gt;
  &lt;li&gt;If you have not received an email receipt, please check your spam folder. If you still can&#39;t locate it, please contact us.&lt;/li&gt;
  &lt;li&gt;Before being redirected to the download page, you might be asked for your email address. Simply enter the email you used at checkout, and you should be able to access the download page.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Via Gumroad account:&lt;/p&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;Alternatively, you can &lt;a class=&#39;extL&#39; href=&#39;https://app.gumroad.com/signup&#39; target=&#39;_blank&#39; rel=&#39;nofollow noreferrer noopener&#39;&gt;create a Gumroad account&lt;/a&gt; using the email address you previously bought your product(s) with.&lt;/li&gt;
  &lt;li&gt;With a Gumroad account, you will be able to access your purchases at any time from your &lt;a class=&#39;extL&#39; href=&#39;https://app.gumroad.com/library&#39; target=&#39;_blank&#39; rel=&#39;nofollow noreferrer noopener&#39;&gt;Library&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Download the .ZIP file of latest version and extract it.&lt;/p&gt;

&lt;p class=&#39;note&#39;&gt;If you have purchased the template officially but not through Gumroad, please contact us.&lt;/p&gt;

&lt;h2&gt;Good to know&lt;/h2&gt;

&lt;p&gt;Before jumping into Theme Installation guide, it&#39;s good to know about basic settings of Blogger such as how to customize or edit HTML. You may need to open these settings multiple times while customizing a blog with custom theme such as Plus UI.&lt;/p&gt;

&lt;h3&gt;Theme Designer&lt;/h3&gt;

&lt;p&gt;From Theme Designer page, we can edit basic things such as color/background and length. Default themes additionally allow us to add custom CSS or change font faces. Our theme doesn&#39;t allow adding custom CSS and changing font faces through this page due to some limitations.&lt;/p&gt;

&lt;p&gt;Steps for navigating to Theme Designer:&lt;/p&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;Go to &lt;a class=&#39;extL&#39; href=&#39;https://www.blogger.com&#39; target=&#39;_blank&#39; rel=&#39;nofollow noreferrer noopener&#39;&gt;Blogger Dashboard&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;
    Navigate to &lt;b&gt;Theme&lt;/b&gt; and click on &lt;b&gt;Customize&lt;/b&gt; button.
    &lt;p class=&#39;note&#39;&gt;&lt;b&gt;Tips!&lt;/b&gt;&lt;br/&gt;
      Alternatively, you can navigate to &lt;b&gt;Layout&lt;/b&gt; and click on &lt;b&gt;Theme Designer&lt;/b&gt; link.
    &lt;/p&gt;
    You are now on Theme Designer page.
  &lt;/li&gt;
  &lt;li&gt;The page should have 3 menus namely Background, Advanced and Gadgets in the left and a preview of the blog home page in the right.&lt;/li&gt;
  &lt;li&gt;By clicking on &lt;b&gt;Advanced&lt;/b&gt; tab, you can select the component you wish to edit from the dropdown menu.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Edit HTML&lt;/h3&gt;

&lt;p&gt;This feature gives full control of theme modification, allowing us to modify the Theme XML code. This XML code can be considered as the source code because it contains settings and contents as valid Blogger theme markup which is rendered to HTML when a webpage is visited. This XML code generally contains Blogger theme tags, HTML tags, comments and text contents including CSS and JS.&lt;/p&gt;

&lt;p&gt;You can also install a theme by overwriting the existing XML code with the new theme&#39;s XML code. Keep in mind, this method resets the previous theme&#39;s settings and widgets with new theme&#39;s default settings and widgets respectively.&lt;/p&gt;

&lt;p&gt;Steps for navigating to Theme XML Editor:&lt;/p&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;Go to &lt;a class=&#39;extL&#39; href=&#39;https://www.blogger.com&#39; target=&#39;_blank&#39; rel=&#39;nofollow noreferrer noopener&#39;&gt;Blogger Dashboard&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Click &lt;span style=&#39;display:inline-flex;vertical-align:middle;--svgW:18px;--svgH:18px;&#39;&gt;&lt;svg viewBox=&#39;0 0 512 512&#39;&gt;&lt;path d=&#39;M98 190.06l139.78 163.12a24 24 0 0036.44 0L414 190.06c13.34-15.57 2.28-39.62-18.22-39.62h-279.6c-20.5 0-31.56 24.05-18.18 39.62z&#39;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt; icon next to the &lt;b&gt;Customize&lt;/b&gt; button.&lt;/li&gt;
  &lt;li&gt;Click &lt;b&gt;Edit HTML&lt;/b&gt;, you will be redirected to the editing page.&lt;/li&gt;
&lt;/ol&gt;

&lt;!--[ Accordion ]--&gt;
&lt;details class=&#39;ac&#39;&gt;
  &lt;summary&gt;How to directly jump to a widget with specific ID?&lt;/summary&gt;
  &lt;div&gt;
    &lt;p&gt;To improve the editing process, Blogger provides a feature to jump directly to a specific widget, you can press &lt;span style=&#39;display:inline-flex;vertical-align:middle;--svgW:18px;--svgH:18px;&#39;&gt;&lt;svg viewBox=&#39;0 0 18 18&#39;&gt;&lt;path d=&#39;M10 10v6h6v-6h-6zM2 8h6V2H2v6zm0 8h6v-6H2v6zm8 0h6v-6h-6v6zm7.25-11L13 .75 8.75 5 13 9.25 17.25 5z&#39;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt; icon then the widget ID will be displayed, select the widget you want to edit.&lt;/p&gt;
  &lt;/div&gt;
&lt;/details&gt;

&lt;h2&gt;Mobile Settings&lt;/h2&gt;

&lt;p&gt;Basically this feature is used to determine the appearance of the blog when accessed via mobile, the mobile version is marked with &lt;code&gt;?m=1&lt;/code&gt; at the end of the url and cannot be removed. Most custom themes already support responsive even some premium themes already support Adaptive Layout, therefore mobile settings are no longer needed, we recommend choosing a desktop theme on mobile display.&lt;/p&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;In &lt;a class=&#39;extL&#39; href=&#39;https://www.blogger.com&#39; target=&#39;_blank&#39; rel=&#39;nofollow noreferrer noopener&#39;&gt;Blogger dashboard&lt;/a&gt;, click on &lt;b&gt;Theme&lt;/b&gt;.&lt;/li&gt;
  &lt;li&gt;Click &lt;span style=&#39;display:inline-flex;vertical-align:middle;--svgW:18px;--svgH:18px;&#39;&gt;&lt;svg viewBox=&#39;0 0 512 512&#39;&gt;&lt;path d=&#39;M98 190.06l139.78 163.12a24 24 0 0036.44 0L414 190.06c13.34-15.57 2.28-39.62-18.22-39.62h-279.6c-20.5 0-31.56 24.05-18.18 39.62z&#39;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt; icon next to the &lt;b&gt;Customize&lt;/b&gt; button.&lt;/li&gt;
  &lt;li&gt;Click &lt;b&gt;Mobile Settings&lt;/b&gt;, in the option &#39;&lt;u&gt;Want to display Desktop or Mobile theme on mobile devices?&lt;/u&gt;&#39; select &lt;b&gt;Desktop&lt;/b&gt;.&lt;/li&gt;
  &lt;li&gt;Click &lt;b&gt;Save&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;Theme Installation&lt;/h2&gt;

&lt;p&gt;There are two ways of installing the theme, we recommend you to use &lt;a href=&#39;#override-xml&#39;&gt;second method&lt;/a&gt; if you are installing a specific version of theme for the first time.&lt;/p&gt;

&lt;p class=&#39;note wr&#39;&gt;&lt;b&gt;Requires time!&lt;/b&gt;&lt;br&gt;
  We recommend you to install theme if you have enough time, you should not leave your blog just by installing the theme. Few customizations need to done immediately after installing the theme. Feel free to reach us in case you get stuck somewhere.
&lt;/p&gt;

&lt;h3 data-before=&#39;Method 1: &#39;&gt;Upload XML&lt;/h3&gt;

&lt;p&gt;The easiest way to install a Blogger theme is by uploading the .XML file directly:&lt;/p&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;In &lt;b&gt;Theme&lt;/b&gt; menu, click &lt;span style=&#39;display:inline-flex;vertical-align:middle;--svgW:18px;--svgH:18px;&#39;&gt;&lt;svg viewBox=&#39;0 0 512 512&#39;&gt;&lt;path d=&#39;M98 190.06l139.78 163.12a24 24 0 0036.44 0L414 190.06c13.34-15.57 2.28-39.62-18.22-39.62h-279.6c-20.5 0-31.56 24.05-18.18 39.62z&#39;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt; icon next to the &lt;b&gt;Customize&lt;/b&gt; button.&lt;/li&gt;
  &lt;li&gt;Click &lt;b&gt;Restore&lt;/b&gt;.&lt;/li&gt;
  &lt;li&gt;Select the .XML file that you want to upload, click &lt;b&gt;Upload&lt;/b&gt; then check for changes to your blog by clicking &lt;b&gt;View Blog&lt;/b&gt; or refreshing your blog page directly.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This method will retain the widgets in the previous theme, the final appearance may be different from the theme demo, use the &lt;b&gt;Override XML&lt;/b&gt; method to install the theme cleanly.&lt;/p&gt;

&lt;h3 data-before=&#39;Method 2: &#39;&gt;Override XML&lt;/h3&gt;

&lt;p&gt;The most recommended way to install a custom theme is to directly overwrite the XML code of the previous theme, but as mentioned earlier, this method will reset all the settings and widgets in the previous theme and replace them with built-in settings and widgets from the new theme.&lt;/p&gt;

&lt;p class=&#39;note wr&#39;&gt;&lt;b&gt;Warning!&lt;/b&gt;&lt;br/&gt;
  It is highly recommended to back up the previous theme first before using this method.
&lt;/p&gt;

&lt;h4&gt;Removing previous theme&lt;/h4&gt;

&lt;p&gt;To make sure Blogger doesn&#39;t merge previous theme and new theme, we first need to apply a blank theme. We do so to make sure nothing is merged with the new theme.&lt;/p&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;
    Copy the following blank theme code:
    &lt;pre&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&amp;gt;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html b:css=&#39;false&#39; b:defaultwidgetversion=&#39;2&#39; b:layoutsVersion=&#39;3&#39; b:responsive=&#39;true&#39; b:templateUrl=&#39;clean-install.xml&#39; b:templateVersion=&#39;0.0.1&#39; xmlns=&#39;http://www.w3.org/1999/xhtml&#39; xmlns:b=&#39;http://www.google.com/2005/gml/b&#39; xmlns:data=&#39;http://www.google.com/2005/gml/data&#39; xmlns:expr=&#39;http://www.google.com/2005/gml/expr&#39;&amp;gt;&amp;lt;b:attr name=&#39;xmlns&#39; value=&#39;&#39;/&amp;gt;&amp;lt;b:attr name=&#39;xmlns:b&#39; value=&#39;&#39;/&amp;gt;&amp;lt;b:attr name=&#39;xmlns:expr&#39; value=&#39;&#39;/&amp;gt;&amp;lt;b:attr name=&#39;xmlns:data&#39; value=&#39;&#39;/&amp;gt;&amp;lt;head&amp;gt;&amp;lt;b:if cond=&#39;false&#39;&amp;gt;&amp;lt;b:skin&amp;gt;&amp;lt;![CDATA[]]&amp;gt;&amp;lt;/b:skin&amp;gt;&amp;lt;/b:if&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;&amp;lt;b:section id=&#39;_&#39; maxwidgets=&#39;1&#39; showaddelement=&#39;false&#39;/&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/li&gt;
  &lt;li&gt;Go to &lt;a href=&#39;#edit-html&#39;&gt;Blogger HTML Editor.&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Replace all code in the previous theme, &lt;b&gt;right click&lt;/b&gt; &amp;#8250; &lt;b&gt;Select All&lt;/b&gt; (&lt;kbd&gt;⌘ + A&lt;/kbd&gt;).&lt;/li&gt;
  &lt;li&gt;Press &lt;kbd&gt;⌘ + V&lt;/kbd&gt; to paste all the code that was copied before.&lt;/li&gt;
  &lt;li&gt;Save the changes by clicking &lt;span style=&#39;display:inline-flex;vertical-align:middle;--svgW:18px;--svgH:18px;&#39;&gt;&lt;svg viewBox=&#39;0 0 48 48&#39;&gt;&lt;path d=&#39;M34 6H10c-2.21 0-4 1.79-4 4v28c0 2.21 1.79 4 4 4h28c2.21 0 4-1.79 4-4V14l-8-8zM24 38c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6zm6-20H10v-8h20v8z&#39;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt; icon on the top right of the HTML Editor.&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;Applying new theme&lt;/h4&gt;

&lt;p&gt;Since we have already removed the previous theme using blank theme, you can now use &lt;b&gt;Restore&lt;/b&gt; option to upload the new theme, it will be helpful if you are using mobile device. Or you can use the following method:&lt;/p&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;Open the .XML file from extacted folder in any &lt;b&gt;Text Editor&lt;/b&gt; application.&lt;/li&gt;
  &lt;li&gt;Copy all the theme code that appears, press &lt;kbd&gt;⌘ + A&lt;/kbd&gt; › &lt;kbd&gt;⌘ + C&lt;/kbd&gt; for quick commands.&lt;/li&gt;
  &lt;li&gt;Go to &lt;a href=&#39;#edit-html&#39;&gt;Blogger HTML Editor.&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Replace all code in the previous theme, &lt;b&gt;right click&lt;/b&gt; &amp;#8250; &lt;b&gt;Select All&lt;/b&gt; (&lt;kbd&gt;⌘ + A&lt;/kbd&gt;).&lt;/li&gt;
  &lt;li&gt;Press &lt;kbd&gt;⌘ + V&lt;/kbd&gt; to paste all the .XML code that was copied before.&lt;/li&gt;
  &lt;li&gt;Save the theme by clicking &lt;span style=&#39;display:inline-flex;vertical-align:middle;--svgW:18px;--svgH:18px;&#39;&gt;&lt;svg viewBox=&#39;0 0 48 48&#39;&gt;&lt;path d=&#39;M34 6H10c-2.21 0-4 1.79-4 4v28c0 2.21 1.79 4 4 4h28c2.21 0 4-1.79 4-4V14l-8-8zM24 38c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6zm6-20H10v-8h20v8z&#39;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt; icon on the top right of the HTML Editor.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;Next steps&lt;/h2&gt;

&lt;p&gt;Once you have successfully installed the template, it needs to be customized to adapt your blog. For example, you need to specify your blog favicon manually, add information for meta tags, customize default texts, customize widgets, and more.&lt;/p&gt;

&lt;h3&gt;Recommendations&lt;/h3&gt;

&lt;p&gt;We recommend you to do initial customization as soon as you install the template as well as read following guidelines for best practices.&lt;/p&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;
    &lt;div&gt;&lt;b&gt;Basic Setup&lt;/b&gt;: Things to be done immediately after installing the theme, it includes:&lt;/div&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;b&gt;Adding a favicon&lt;/b&gt;: Starting from v3, you need to add your blog favicon manually unlike older versions.&lt;/li&gt;
      &lt;li&gt;&lt;b&gt;Setting meta tags&lt;/b&gt;: The template automatically adds general meta tags including opengraph and twitter card for you. In few meta tags, we use default texts and image urls, therefore you need to replace them with yours.&lt;/li&gt;
    &lt;/ul&gt;
    &lt;div&gt;&lt;b&gt;Guidelines&lt;/b&gt;: Gather information to make sure you follow best practices when using the theme to prevent unexpected errors and behaviours.&lt;/div&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;b&gt;Preferred image ratio and size&lt;/b&gt;: Use recommended ratio and sizes for images for different places ensures images do no crop and fit at its placement.&lt;/li&gt;
      &lt;li&gt;&lt;b&gt;Optimization&lt;/b&gt;: Optimize your blog and posts to prevent unexpected behaviours.&lt;/li&gt;
    &lt;/ul&gt;
    &lt;br&gt;
    &lt;div&gt;You can read &lt;a class=&#39;extL alt&#39; href=&#39;./basic.html&#39;&gt;Basic Setup and Guidelines&lt;/a&gt; for a detailed information and documentation.&lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;div&gt;&lt;b&gt;Google Adsense&lt;/b&gt;: The theme automatically loads Google Adsense script if your blog is connected with a Google Adsense account from &lt;b&gt;Earning&lt;/b&gt; section of your blog.&lt;/div&gt;
    &lt;br&gt;
    &lt;div&gt;You can read &lt;a class=&#39;extL alt&#39; href=&#39;./adsense.html&#39;&gt;Google Adsense&lt;/a&gt; for a detailed information and documentation.&lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;div&gt;&lt;b&gt;Google Analytics&lt;/b&gt;: The theme automatically loads Google Analytics script if Google Analytics Measurement ID has been already added through Blog Settings.&lt;/div&gt;
    &lt;br&gt;
    &lt;div&gt;You can read &lt;a class=&#39;extL alt&#39; href=&#39;./analytics.html&#39;&gt;Google Analytics&lt;/a&gt; for a detailed information and documentation.&lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;div&gt;&lt;b&gt;Setup Pages&lt;/b&gt;: Setup basic pages including:&lt;/div&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;b&gt;Contact&lt;/b&gt;: You should create a &lt;a href=&#39;/p/contact.html#documentation&#39;&gt;contact page&lt;/a&gt; for your blog so that users can easily connect with you.&lt;/li&gt;
      &lt;li&gt;&lt;b&gt;Sitemap&lt;/b&gt; (optional): The &lt;a href=&#39;/p/sitemap.html#documentation&#39;&gt;sitemap page&lt;/a&gt; shows a list of posts and pages of your blog in an organized manner. You can create one although it is optional. Note that we are talking about sitemap page and not XML sitemap. XML sitemaps are automatically created and updated by Blogger at &lt;code&gt;/sitemap.xml&lt;/code&gt; and &lt;code&gt;/sitemap-pages.xml&lt;/code&gt; of your blog root.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Before your start using a theme feature, we recommend you to read documentation about it before. If no documentation is available for a particular feature, please reach out to us.&lt;/p&gt;

&lt;!--[ Automatic Related Posts ]--&gt;
&lt;details class=&#39;sp arp&#39; open&gt;
  &lt;summary&gt;Related Posts&lt;/summary&gt;  
  &lt;div class=&#39;aRel&#39;&gt;&lt;/div&gt;
&lt;/details&gt;
</description><link>https://www.plus-ui.blog/2024/10/getting-started-and-installation.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgD4WanyqiJgEpKPOmK2gwpHGfZCqyWgYnVx92NysFqF7tpGmi373fH3YdDoUilDmHGAUxn4h3SlxC4En_qZ3SRKl3mXAH1qiFMCfOjw4mDLePCgVB3fObuRo36hxDipohraLGJMgNEI-aOOpgHxut2-kcjNbSFykOO7dhYVRmorjln7UqND079sw7q3dM/s72-c/getting-started-and-installation.png" height="72" width="72"/><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8128085283179772973.post-2207399711511601135</guid><pubDate>Sun, 27 Oct 2024 15:50:00 +0000</pubDate><atom:updated>2025-06-23T08:33:50.156-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Documentation</category><title>Basic Setup and Guidelines</title><description>&lt;!--[ Explicitly sets post snippet ]--&gt;
&lt;div hidden aria-hidden=&#39;true&#39;&gt;Installation done? It&#39;s time to do some basic and important changes.&lt;/div&gt;

&lt;!--[ Explicitly sets post thumbnail ]--&gt;
&lt;!--[
  &lt;div class=&#39;separator&#39;&gt;&lt;img src=&#39;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRvrAUkxWaIRyU94_7eZan1t7QbU3YdWS_hAUy2r4MgX0v10CRUXnjDAT9gPNgTQYxunHsgrRzOxFqooi-wXh6TlROvPbHoqkHzXP3aeqOjSSBakrvOc8xo-VqT5YZ0B3k5qBu33UU9Ju_VJBpF2ffH6YYBTmyY0iZW-OR0hyphenhyphen5Caew6QqdJXpf4ANFhCE/s1280/basic-setup-and-guidelines.png&#39;/&gt;&lt;/div&gt;
]--&gt;

&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;

&lt;p class=&#39;alert info outline&#39;&gt;&lt;b&gt;Help us improve this post!&lt;/b&gt;
  English is not my first language, so if you find any mistakes or think something can be explained better, feel free to &lt;a class=&#39;extL&#39; href=&#39;/p/contact.html&#39; target=&#39;_blank&#39;&gt;contact us&lt;/a&gt;. Your suggestions are always welcome!
&lt;/p&gt;

&lt;p&gt;Have you just installed the theme? Great! Now it is time to do basic setup and read guidelines.&lt;/p&gt;

&lt;h2&gt;Generate image url&lt;/h2&gt;

&lt;p&gt;Throughout this reading, we shall need to generate urls of various images in order to put them at their places. The best method to generate an image url when using this theme is as follows:&lt;/p&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;Go to Blogger Layout.&lt;/li&gt;
  &lt;li&gt;Click on pencil icon beside the &lt;b&gt;Image Uploader&lt;/b&gt; widget.&lt;/li&gt;
  &lt;li&gt;Select &lt;b&gt;Upload image from computer&lt;/b&gt;.&lt;/li&gt;
  &lt;li&gt;Upload your image by clicking on &lt;b&gt;Choose file&lt;/b&gt;. Wait until image is fully uploaded.&lt;/li&gt;
  &lt;li&gt;Click on &lt;b&gt;Save&lt;/b&gt; button.&lt;/li&gt;
  &lt;li&gt;Click on pencil icon again.&lt;/li&gt;
  &lt;li&gt;You can now copy the url available in &lt;b&gt;Image URL&lt;/b&gt; field as it is the url of image you have just uploaded.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;Meta tags&lt;/h2&gt;

&lt;p&gt;Meta tags provide important information to browsers and search engines, enhancing SEO and optimizing page display.&lt;/p&gt;

&lt;h3&gt;Favicon&lt;/h3&gt;

&lt;p&gt;We know that favicon can be uploaded through Blog settings, but icon uploaded through it is not available in multiple sizes. Therefore, the theme by default doesn&#39;t use this icon. You need to explicitly provide url of a &lt;b&gt;png&lt;/b&gt; favicon image in order to generate url of same image in multiple sizes for use in meta tags. A dummy image is used as favicon by default.&lt;/p&gt;

&lt;p&gt;You would like to change the default favicon. Find the following code snippet in &lt;b&gt;Edit HTML&lt;/b&gt; and replace the marked url with your custom favicon url. The image must be of &lt;b&gt;1:1&lt;/b&gt; ratio with a minimum width of &lt;b&gt;512px&lt;/b&gt;, i.e &lt;b&gt;512px*512px&lt;/b&gt;, &lt;b&gt;640px*640px&lt;/b&gt;, etc.&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#39;language-xml&#39;&gt;&amp;lt;Variable name=&quot;meta.icon&quot; description=&quot;Favicon URL&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark data-before=&#39;Image URL here&#39;&gt;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisldTSPR5qQSsrqZDyfYV81HFSq4Pko5u8xpbzKJ7V05CZAaCkfxG550uqbp2xlCxukxcVL4i2so2XxNri-wqqUO0yuVLLznfFes1rdmg7Ywq8pWE8FXwWQfcyrNiAPlyI3_ngX12x7-KGzAVPfjiTWPMP3HdwelG4pn729xMfH05-hdWVbQyaIsgMkQg/s0/favicon.png&lt;/mark&gt;&quot;/&amp;gt;
[!] Favicon URL
[!] @type {String}
[!] Recommended image ratio: 1:1
[!] If Blank: It will use Favicon URL from Blogger Blog Settings
[!] Warning: Dont&#39;t add invalid URL&lt;/code&gt;&lt;/pre&gt;

&lt;p class=&#39;note&#39;&gt;&lt;b&gt;Use favicon from settings?&lt;/b&gt;&lt;br&gt;
  If you would like to use favicon which was uploaded through Blog settings, clear the image url in &lt;code&gt;value&lt;/code&gt; attribute and make it empty.
&lt;/p&gt;

&lt;h3&gt;Meta Keywords&lt;/h3&gt;

&lt;p&gt;To add your custom keywords in &lt;code&gt;keywords&lt;/code&gt; meta tag, find the following code snippet and replace marked part with your custom keywords separated by comma.&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#39;language-xml&#39;&gt;&amp;lt;Variable name=&quot;meta.keywords&quot; description=&quot;Keywords Meta Tag content&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark data-before=&#39;Custom keywords here&#39;&gt;KEYWORD_1, KEYWORD_2, KEYWORD_3&lt;/mark&gt;&quot;/&amp;gt;
[!] Keywords Meta Tag content (comma-separated)
[!] @type {String}
[!] If Blank: Doesn&#39;t add keywords other than page name
[!] Message: Separate multiple keyword with comma&lt;/code&gt;&lt;/pre&gt;

&lt;p class=&#39;note&#39;&gt;You can clear the marked part if you don&#39;t want to add custom keywords.&lt;/p&gt;

&lt;h3&gt;Meta description&lt;/h3&gt;

&lt;p&gt;Meta description can be set through Blog settings by toggling the &lt;b&gt;Enable search description&lt;/b&gt; and adding your description in &lt;b&gt;Search description&lt;/b&gt; field.&lt;/p&gt;

&lt;p&gt;For post and pages, you can add your description through &lt;b&gt;Search description&lt;/b&gt; field in the sidebar.&lt;/p&gt;

&lt;h3&gt;Meta default image&lt;/h3&gt;

&lt;p&gt;Image meta tag uses the thumbnail of posts or pages if it is available. Therefore, we need to use a default image if there is no thumbnail or for homepage and other pages.&lt;/p&gt;

&lt;p&gt;In order to use a default image for such cases, find the following code snippet in Edit HTML and replace the marked part with your custom image url. The image must be of &lt;b&gt;16:9&lt;/b&gt; ratio with a minimum width of &lt;b&gt;1280px&lt;/b&gt;, i.e. &lt;b&gt;1280px*720px&lt;/b&gt;, &lt;b&gt;1920px*1080px&lt;/b&gt;, etc.&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#39;language-xml&#39;&gt;&amp;lt;Variable name=&quot;meta.image&quot; description=&quot;Image Meta Tag URL&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark data-before=&#39;Image URL here&#39;&gt;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXcTftM-dWwVR9KOkc8PzPng9FbMz-KC083W_hWFV2t2LA10-l0BtsfTj3J3WL2TrClC8aohb-H2Qn_W2DylQ7R11V71k2SGozHBnjSNAKLEUbKzLW4ALsYwMEjcEGSCIyfGLQwERqsQRFlnTv0wm8M0CkGroeYzpKJ_ZPC6_diPbuINzcP075OzTcF7I/s0/meta-image.png&lt;/mark&gt;&quot;/&amp;gt;
[!] Image Meta Tag content
[!] @type {String}
[!] Recommended image ratio: 16:9
[!] If Blank: Doesn&#39;t add meta tag if any not available
[!] Message: If the view is single item, it will use thumbnail url of item if available
[!] Warning: Don&#39;t add invalid URL&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Opengraph default image&lt;/h3&gt;

&lt;p&gt;Opengraph image meta tag uses the thumbnail of posts or pages if it is available. Therefore, we need to use a default image if there is no thumbnail or for homepage and other pages.&lt;/p&gt;

&lt;p&gt;In order to use a default image for such cases, find the following code snippet in Edit HTML and replace the marked part with your custom image url. The image must be of &lt;b&gt;16:9&lt;/b&gt; ratio with a minimum width of &lt;b&gt;1280px&lt;/b&gt;, i.e. &lt;b&gt;1280px*720px&lt;/b&gt;, &lt;b&gt;1920px*1080px&lt;/b&gt;, etc.&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#39;language-xml&#39;&gt;&amp;lt;Variable name=&quot;opengraph.image&quot; description=&quot;Open Graph Image URL&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark data-before=&#39;Image URL here&#39;&gt;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXxFjLFkLM3eZsKgzpO8R-f3pQPsb-ica2dzqZ-TpJw-fhOsZMG3fUs6UzvcualJbzE9xoUPtqIAI68pQcy9E2IXSFt8SxYEpcaIln78PEZzj1S-iiDp4aJtwNdkImyH5oEtzuzKUxetnUMMjaJWhi6BTLBkNxQX8tUzsL3Q2hqQq_hBF7_w6z5yUYxws/s0/open-graph-image.png&lt;/mark&gt;&quot;/&amp;gt;
[!] Open Graph Image URL
[!] @type {String}
[!] Recommended image ratio: 16:9
[!] If Blank: Doesn&#39;t add meta tag if any not available
[!] Message: If the view is single item, it will use thumbnail url of item if available
[!] Warning: Don&#39;t add invalid URL&lt;/code&gt;&lt;/pre&gt;

&lt;p class=&#39;note&#39;&gt;&lt;b&gt;Tips!&lt;/b&gt;&lt;br&gt;
  You can also use the same image url used in Meta default image.
&lt;/p&gt;

&lt;h3&gt;Twitter Card default image&lt;/h3&gt;

&lt;p&gt;Twitter card image meta tag uses the thumbnail of posts or pages if it is available. Therefore, we need to use a default image if there is no thumbnail or for homepage and other pages.&lt;/p&gt;

&lt;p&gt;In order to use a default image for such cases, find the following code snippet in Edit HTML and replace the marked part with your custom image url. The image must be of &lt;b&gt;16:9&lt;/b&gt; ratio with a minimum width of &lt;b&gt;1280px&lt;/b&gt;, i.e. &lt;b&gt;1280px*720px&lt;/b&gt;, &lt;b&gt;1920px*1080px&lt;/b&gt;, etc.&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#39;language-xml&#39;&gt;&amp;lt;Variable name=&quot;twitter.image&quot; description=&quot;Twitter Card Image URL&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark data-before=&#39;Image URL here&#39;&gt;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg31MuIa565c6YDVhaRleYhJeby_kBMwkr0CTcf27hP0n3b71IPnvFtkVhSIveXiBSMZ56AzX_-s5PqayrsuY7LYwJiX1P2u0acO1kiCjIuPzQ0e3uSsqATTI_2zlbHaJ48e_oZvwwZgBhTjpHJnnKiXeWF2Pwco8UHeZoP-M7bLskRArbe9Td_Ve_B1iI/s0/twitter-card-image.png&lt;/mark&gt;&quot;/&amp;gt;
[!] Twitter Card Image URL
[!] @type {String}
[!] Recommended image ratio: 16:9
[!] If Blank: Doesn&#39;t add meta tag if any not available
[!] Message: If the view is single item, it will use thumbnail url of item if available
[!] Warning: Don&#39;t add invalid URL&lt;/code&gt;&lt;/pre&gt;

&lt;p class=&#39;note&#39;&gt;&lt;b&gt;Tips!&lt;/b&gt;&lt;br&gt;
  You can also use the same image url used in Meta default image or Opengraph default image.
&lt;/p&gt;

&lt;h2&gt;Rich Results&lt;/h2&gt;

&lt;p&gt;To avoid errors in Google Rich Results Test, we have added url of dummy images. However you can replace them with your custom image urls.&lt;/p&gt;

&lt;h3&gt;Schema organization logo&lt;/h3&gt;

&lt;p&gt;Find the following code snippet in Edit HTML and replace the marked url with your custom logo url. The logo must be of &lt;b&gt;1:1&lt;/b&gt; ratio with a minimum width of &lt;b&gt;512px&lt;/b&gt;, i.e &lt;b&gt;512px*512px&lt;/b&gt;, &lt;b&gt;640px*640px&lt;/b&gt;, etc.&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#39;language-xml&#39;&gt;&amp;lt;Variable name=&quot;metadata.organizationLogo&quot; description=&quot;Metadata Organization Logo&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark data-before=&#39;Image URL here&#39;&gt;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLYXKas2Slg6XQSDnVv2sZp3WrBMgpRTTNdEEmBCO54XHW3kmftJKJMU-CrNBEwOn0CU1J-KwAeGuS-ETuCpXhZob0AYrl789Lrwu_T_CDJYJ2k1hOQ-ur_Ek-iEAIm5-0C-nMjY8DtWtfyZfRaOXJC8mdBvdunVCbObp9ra6rMrcSg7jGCf298UE13as/s0/organization-logo.png&lt;/mark&gt;&quot;/&amp;gt;
[!] Metadata Organization Logo
[!] @type {String}
[!] Recommended image ratio: 1:1
[!] Warning: Don&#39;t add invalid URL&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Default schema thumbnails&lt;/h3&gt;

&lt;p&gt;Article schema uses the thumbnail of posts or pages if it is available. Therefore, we need to use a default image if there is no thumbnail.&lt;/p&gt;

&lt;p&gt;In order to use a default thumbnail image for such cases, find the following code snippet in Edit HTML and replace the marked part with your custom thumbnail image url. The image must be of &lt;b&gt;16:9&lt;/b&gt; ratio with a minimum width of &lt;b&gt;1280px&lt;/b&gt;, i.e. &lt;b&gt;1280px*720px&lt;/b&gt;, &lt;b&gt;1920px*1080px&lt;/b&gt;, etc.&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#39;language-xml&#39;&gt;&amp;lt;Variable name=&quot;metadata.defaultThumbnail&quot; description=&quot;Metadata Default Thumbnail&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark data-before=&#39;Image URL here&#39;&gt;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvC6vD6OtRfm9LfBlmnU43YBdoPU22C5TbYwdvBh-tcs70b-uyK7D_iri6WRtUUrtvSrhJrp5vo3IQTo-ta0t_J1VrozfN3ZdCapfbhEKcqMgphQeM3clXm8goom0uOKITSosfDKij6h9AUyYyZ7-nliDKV5EOiE9YyzFA_yW1vtud1lIt_mgTxGpBHUA/s0/metadata-default-thumbnail.png&lt;/mark&gt;&quot;/&amp;gt;
[!] Metadata Default Thumbnail
[!] @type {String}
[!] Recommended image ratio: 16:9
[!] Warning: Don&#39;t add invalid URL&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Article schema&lt;/h3&gt;

&lt;p&gt;The theme uses &lt;b&gt;Article&lt;/b&gt; schema type for blog pages and &lt;b&gt;BlogPosting&lt;/b&gt; schema type for blog posts. You can also add a label &lt;b&gt;News&lt;/b&gt; to a post in order to use &lt;b&gt;NewsArticle&lt;/b&gt; schema type for that post.&lt;/p&gt;

&lt;h2&gt;Image ratios&lt;/h2&gt;

&lt;p&gt;This section gives you information about what ratio and size of images you should use.&lt;/p&gt;

&lt;h3&gt;Post thumbnail&lt;/h3&gt;

&lt;p&gt;To make sure your images do not get cropped on social platforms&#39; previews, thumbnails, etc. We decided to use images of fixed ratio everywhere where post thumbnails are used.&lt;/p&gt;

&lt;p&gt;We recommend using images of &lt;b&gt;16:9&lt;/b&gt; with a minimum width of &lt;b&gt;1280px&lt;/b&gt;, i.e. &lt;b&gt;1280px*720px&lt;/b&gt;, &lt;b&gt;1920px*1080px&lt;/b&gt;, etc. as your post or page thumbnails. For post images other than the thumbnail, feel free to use images of any ratio or size.&lt;/p&gt;

&lt;h3&gt;Carousel image&lt;/h3&gt;

&lt;p&gt;To make sure carousel images do not get cropped, use images of &lt;b&gt;5:2&lt;/b&gt; ratio with a minimum with of &lt;b&gt;1080px&lt;/b&gt;, i.e. &lt;b&gt;1080px*432px&lt;/b&gt;, &lt;b&gt;1920px*768px&lt;/b&gt;, etc.&lt;/p&gt;

&lt;h3&gt;Footer logo&lt;/h3&gt;

&lt;p&gt;For footer logo, use an image of &lt;b&gt;1:1&lt;/b&gt; ratio with a minimum width of &lt;b&gt;512px&lt;/b&gt;, i.e. &lt;b&gt;512px*512px&lt;/b&gt;, &lt;b&gt;640px*640px&lt;/b&gt;, etc.&lt;/p&gt;

&lt;h2&gt;Best practices&lt;/h2&gt;

&lt;p&gt;This section will guide you best practices to prevent issues and errors.&lt;/p&gt;

&lt;h3&gt;HTTPS protocol&lt;/h3&gt;

&lt;p&gt;You must always serve your pages over &lt;code&gt;https&lt;/code&gt; protocol and not &lt;code&gt;http&lt;/code&gt;. Therefore, make sure you have enabled &lt;b&gt;HTTPS redirects&lt;/b&gt; in your Blog Settings.&lt;/p&gt;

&lt;h2&gt;Optimization&lt;/h2&gt;

&lt;p&gt;This section will guide you for optimization of your blog when using this theme.&lt;/p&gt;

&lt;h3&gt;Use Paragraphs&lt;/h3&gt;

&lt;p&gt;We highly recommend you to use &lt;b&gt;Paragraph&lt;/b&gt; over &lt;b&gt;Normal&lt;/b&gt; when writing a paragraph of your post since it&#39;s the only right way. Normal uses &lt;code&gt;div&lt;/code&gt; tags for post text contents while Paragraph uses &lt;code&gt;p&lt;/code&gt; tags. For paragraphs, &lt;code&gt;p&lt;/code&gt; tags are recommended.&lt;/p&gt;

&lt;h3&gt;Jump breaks&lt;/h3&gt;

&lt;p&gt;In the year 2009, Blogger introduced the &lt;a href=&#39;https://blogger.googleblog.com/2009/09/you-might-as-well-jump.html&#39; rel=&#39;noreferrer nofollow&#39; target=&#39;_blank&#39;&gt;Jump Breaks&lt;/a&gt;. With Jump Breaks you can show just a snippet of your post on your blog&#39;s index page. Blogger will insert a &lt;u&gt;Read more&lt;/u&gt; link to the full post page where your readers can keep reading.&lt;/p&gt;

&lt;p&gt;It is &lt;b&gt;highly recommended&lt;/b&gt; to add Jump Breaks after first or second paragraph of every posts. There are two ways of adding Jump Breaks to your post. The first way is by clicking on &lt;b&gt;Insert Jump Break&lt;/b&gt; icon in Compose view and the second way is to add &lt;code&gt;&amp;lt;!--more--&amp;gt;&lt;/code&gt; in HTML view.&lt;/p&gt;

&lt;p class=&#39;note wr&#39;&gt;&lt;b&gt;Warning!&lt;/b&gt;&lt;br&gt;
  If you don&#39;t add jump breaks in your posts, things may break if any of your posts has too much contents. The pagination will not work as expected, the number of posts you want to show on index page will not be respected, none of your posts will be displayed on index page and many other unexpected behaviours. This doesn&#39;t apply only to our theme!
&lt;/p&gt;

&lt;h3&gt;WebP image serving&lt;/h3&gt;

&lt;p&gt;Blogger recently added an option &lt;b&gt;WebP image serving&lt;/b&gt; in Blog Settings, it can be toggled on to automatically serve post images in &lt;b&gt;WebP&lt;/b&gt; formats. Blogger does it by automatically adding the &lt;code&gt;rw&lt;/code&gt; parameter to post images. It improves the performance of the webpages.&lt;/p&gt;

&lt;p&gt;It is recommended to toggle on &lt;b&gt;WebP image serving&lt;/b&gt; from Blog Settings.&lt;/p&gt;

&lt;h3&gt;Defer off-screen images&lt;/h3&gt;

&lt;p&gt;Blogger recently added an option &lt;b&gt;Lazy load images&lt;/b&gt; in Blog Settings, it can be toggled on to automatically lazy load post images. The post images will only be loaded when reader scrolls to those particular images. Blogger does it by automatically adding &lt;code&gt;loading=&#39;lazy&#39;&lt;/code&gt; to all the post images. It improves the performance of the webpages.&lt;/p&gt;

&lt;p&gt;It is recommended to toggle on &lt;b&gt;Lazy load images&lt;/b&gt; from Blog Settings.&lt;/p&gt;

&lt;h3&gt;Custom robots.txt&lt;/h3&gt;

&lt;p&gt;If custom &lt;code&gt;robots.txt&lt;/code&gt; option in Blog Settings is disabled, Blogger serves default &lt;code&gt;robots.txt&lt;/code&gt;. But default &lt;code&gt;robots.txt&lt;/code&gt; disallows bots to crawl all pages of and under &lt;code&gt;/search&lt;/code&gt; segment which includes blog page (i.e. &lt;code&gt;/search&lt;/code&gt;) and label pages as well (i.e. &lt;code&gt;/search/label/Product&lt;/code&gt;), which is probably what you don&#39;t want.&lt;/p&gt;

&lt;p&gt;To fix this, we can use &lt;code&gt;robots.txt&lt;/code&gt; with custom rules allowing bots to crawl these pages as well. You can use the following custom &lt;code&gt;robots.txt&lt;/code&gt; if you don&#39;t have idea about how does this work, otherwise feel free to write your own or modify it.&lt;/p&gt;

&lt;!--[ MultiTabs Syntax Highlighter ]--&gt;
&lt;div class=&#39;pre tabs&#39;&gt;
  &lt;!--[ Active function ]--&gt;
  &lt;input id=&#39;preT1-1&#39; type=&#39;radio&#39; name=&#39;preTab1&#39; checked/&gt;
  &lt;input id=&#39;preT1-2&#39; type=&#39;radio&#39; name=&#39;preTab1&#39;/&gt;
  
  &lt;!--[ Header/title ]--&gt;
  &lt;div&gt;
    &lt;!--[ Change atribute data-text=&#39;...&#39; to replace title ]--&gt;
    &lt;label for=&#39;preT1-1&#39; data-text=&#39;Custom&#39;&gt;&lt;/label&gt;
    &lt;label for=&#39;preT1-2&#39; data-text=&#39;Default&#39;&gt;&lt;/label&gt;
  &lt;/div&gt;

  &lt;!--[ Content ]--&gt;
  &lt;pre class=&#39;preC1-1&#39; data-lines=&#39;5,6,7&#39;&gt;&lt;code&gt;# all user agents
User-agent: *

# exclude pagination and query pages
Disallow: /search*updated-max=*
Disallow: /search*max-results=*
Disallow: /search*q=*

# include everything else
Allow: /

# sitemaps
Sitemap: https://&lt;mark class=&#39;block&#39; data-before=&#39;Replace with hostname&#39;&gt;www.example.com&lt;/mark&gt;/sitemap.xml
Sitemap: https://&lt;mark class=&#39;block&#39; data-before=&#39;Replace with hostname&#39;&gt;www.example.com&lt;/mark&gt;/sitemap-pages.xml&lt;/code&gt;&lt;/pre&gt;
  &lt;pre class=&#39;preC1-2&#39; data-lines=&#39;5&#39;&gt;&lt;code&gt;User-agent: Mediapartners-Google
Disallow: 

User-agent: *
Disallow: /search
Allow: /

Sitemap: https://www.example.com/sitemap.xml&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;h3&gt;Widgets and Plugins&lt;/h3&gt;

&lt;p&gt;The theme contains many widgets that doesn&#39;t mean you have to use all of them. You should enable or disable them depending on your needs.&lt;/p&gt;

&lt;p&gt;For example, if you think Bookmark Posts widget is unnecessary, go ahead and disable it through Layout. Another example, you may not need Google Translate since major modern browsers have in-built page translator.&lt;/p&gt;

&lt;h2&gt;Custom codes&lt;/h2&gt;

&lt;p&gt;This section will guide you to add custom codes in the theme. We recommend you add custom codes as described below for better managements.&lt;/p&gt;

&lt;p class=&#39;note wr&#39;&gt;&lt;b&gt;Warning&lt;/b&gt;&lt;br&gt;
  Since you are adding your custom codes, we will not be responsible for any issues caused by it.
&lt;/p&gt;

&lt;p&gt;If you want to place HTML codes &lt;b&gt;just above to&lt;/b&gt; &lt;code&gt;&amp;lt;/head&amp;gt;&lt;/code&gt;, i.e. external CSS or JavaScript:&lt;/p&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;Go to Blogger HTML Editor.&lt;/li&gt;
  &lt;li&gt;
    Find the following two lines of code and add your custom HTML in-between it.
    &lt;!--[ MultiTabs Syntax Highlighter ]--&gt;
    &lt;div class=&#39;pre tabs&#39;&gt;
      &lt;!--[ Active function ]--&gt;
      &lt;input id=&#39;preT2-1&#39; type=&#39;radio&#39; name=&#39;preTab2&#39; checked/&gt;
      &lt;input id=&#39;preT2-2&#39; type=&#39;radio&#39; name=&#39;preTab2&#39;/&gt;

      &lt;!--[ Header/title ]--&gt;
      &lt;div&gt;
        &lt;!--[ Change atribute data-text=&#39;...&#39; to replace title ]--&gt;
        &lt;label for=&#39;preT2-1&#39; data-text=&#39;Before&#39;&gt;&lt;/label&gt;
        &lt;label for=&#39;preT2-2&#39; data-text=&#39;After&#39;&gt;&lt;/label&gt;
      &lt;/div&gt;

      &lt;!--[ Content ]--&gt;
      &lt;pre class=&#39;preC2-1&#39; data-lines=&#39;3&#39;&gt;&lt;code&gt;&amp;lt;b:comment&amp;gt;&amp;lt;!--[ &amp;lt;/head&amp;gt; | &amp;lt;!&amp;gt; [below] Custom codes (Global) ]--&amp;gt;&amp;lt;/b:comment&amp;gt;



&amp;lt;b:comment&amp;gt;&amp;lt;!--[ &amp;lt;/head&amp;gt; | &amp;lt;!&amp;gt; [above] Custom codes (Global) ]--&amp;gt;&amp;lt;/b:comment&amp;gt;&lt;/code&gt;&lt;/pre&gt;
      &lt;pre class=&#39;preC2-2&#39; data-lines=&#39;3,4,5&#39;&gt;&lt;code&gt;&amp;lt;b:comment&amp;gt;&amp;lt;!--[ &amp;lt;/head&amp;gt; | &amp;lt;!&amp;gt; [below] Custom codes (Global) ]--&amp;gt;&amp;lt;/b:comment&amp;gt;

&amp;lt;link rel=&#39;preconnect&#39; href=&#39;https://fonts.googleapis.com&#39;/&amp;gt;
&amp;lt;link rel=&#39;preconnect&#39; href=&#39;https://fonts.gstatic.com&#39; crossorigin=&#39;&#39;&amp;gt;
&amp;lt;link href=&#39;https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:ital,wght@0,200..800;1,200..800&amp;amp;amp;display=swap&#39; rel=&#39;stylesheet&#39;/&amp;gt;

&amp;lt;b:comment&amp;gt;&amp;lt;!--[ &amp;lt;/head&amp;gt; | &amp;lt;!&amp;gt; [above] Custom codes (Global) ]--&amp;gt;&amp;lt;/b:comment&amp;gt;&lt;/code&gt;&lt;/pre&gt;
    &lt;/div&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you want to place HTML codes &lt;b&gt;just above to&lt;/b&gt; &lt;code&gt;&amp;lt;/body&amp;gt;&lt;/code&gt;, i.e. external JavaScript:&lt;/p&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;Go to Blogger HTML Editor.&lt;/li&gt;
  &lt;li&gt;
    Find the following two lines of code and add your custom HTML in-between it.
    &lt;!--[ MultiTabs Syntax Highlighter ]--&gt;
    &lt;div class=&#39;pre tabs&#39;&gt;
      &lt;!--[ Active function ]--&gt;
      &lt;input id=&#39;preT3-1&#39; type=&#39;radio&#39; name=&#39;preTab3&#39; checked/&gt;
      &lt;input id=&#39;preT3-2&#39; type=&#39;radio&#39; name=&#39;preTab3&#39;/&gt;

      &lt;!--[ Header/title ]--&gt;
      &lt;div&gt;
        &lt;!--[ Change atribute data-text=&#39;...&#39; to replace title ]--&gt;
        &lt;label for=&#39;preT3-1&#39; data-text=&#39;Before&#39;&gt;&lt;/label&gt;
        &lt;label for=&#39;preT3-2&#39; data-text=&#39;After&#39;&gt;&lt;/label&gt;
      &lt;/div&gt;

      &lt;!--[ Content ]--&gt;
      &lt;pre class=&#39;preC3-1&#39; data-lines=&#39;3&#39;&gt;&lt;code&gt;&amp;lt;b:comment&amp;gt;&amp;lt;!--[ &amp;lt;/body&amp;gt; | &amp;lt;!&amp;gt; [below] Custom codes (Global) ]--&amp;gt;&amp;lt;/b:comment&amp;gt;



&amp;lt;b:comment&amp;gt;&amp;lt;!--[ &amp;lt;/body&amp;gt; | &amp;lt;!&amp;gt; [above] Custom codes (Global) ]--&amp;gt;&amp;lt;/b:comment&amp;gt;&lt;/code&gt;&lt;/pre&gt;
      &lt;pre class=&#39;preC3-2&#39; data-lines=&#39;3&#39;&gt;&lt;code&gt;&amp;lt;b:comment&amp;gt;&amp;lt;!--[ &amp;lt;/body&amp;gt; | &amp;lt;!&amp;gt; [below] Custom codes (Global) ]--&amp;gt;&amp;lt;/b:comment&amp;gt;

&amp;lt;script src=&#39;/register-sw.js&#39;&amp;gt;&amp;lt;/script&amp;gt;

&amp;lt;b:comment&amp;gt;&amp;lt;!--[ &amp;lt;/body&amp;gt; | &amp;lt;!&amp;gt; [above] Custom codes (Global) ]--&amp;gt;&amp;lt;/b:comment&amp;gt;&lt;/code&gt;&lt;/pre&gt;
    &lt;/div&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Custom meta tags&lt;/h3&gt;

&lt;p&gt;Custom meta tags can be added through Blogger HTML Editor.&lt;/p&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;Go to Blogger HTML Editor.&lt;/li&gt;
  &lt;li&gt;
    Find the following two lines of code and add your custom meta tags in-between it.
    &lt;!--[ MultiTabs Syntax Highlighter ]--&gt;
    &lt;div class=&#39;pre tabs&#39;&gt;
      &lt;!--[ Active function ]--&gt;
      &lt;input id=&#39;preT4-1&#39; type=&#39;radio&#39; name=&#39;preTab4&#39; checked/&gt;
      &lt;input id=&#39;preT4-2&#39; type=&#39;radio&#39; name=&#39;preTab4&#39;/&gt;

      &lt;!--[ Header/title ]--&gt;
      &lt;div&gt;
        &lt;!--[ Change atribute data-text=&#39;...&#39; to replace title ]--&gt;
        &lt;label for=&#39;preT4-1&#39; data-text=&#39;Before&#39;&gt;&lt;/label&gt;
        &lt;label for=&#39;preT4-2&#39; data-text=&#39;After&#39;&gt;&lt;/label&gt;
      &lt;/div&gt;

      &lt;!--[ Content ]--&gt;
      &lt;pre class=&#39;preC4-1&#39; data-lines=&#39;3&#39;&gt;&lt;code&gt;&amp;lt;b:comment&amp;gt;&amp;lt;!--[ &amp;lt;!&amp;gt; [below] Custom Meta tags (Global) ]--&amp;gt;&amp;lt;/b:comment&amp;gt;



&amp;lt;b:comment&amp;gt;&amp;lt;!--[ &amp;lt;!&amp;gt; [above] Custom Meta tags (Global) ]--&amp;gt;&amp;lt;/b:comment&amp;gt;&lt;/code&gt;&lt;/pre&gt;
      &lt;pre class=&#39;preC4-2&#39; data-lines=&#39;3&#39;&gt;&lt;code&gt;&amp;lt;b:comment&amp;gt;&amp;lt;!--[ &amp;lt;!&amp;gt; [below] Custom Meta tags (Global) ]--&amp;gt;&amp;lt;/b:comment&amp;gt;

&amp;lt;meta name=&#39;google-site-verification&#39; content=&#39;.......&#39; /&amp;gt;

&amp;lt;b:comment&amp;gt;&amp;lt;!--[ &amp;lt;!&amp;gt; [above] Custom Meta tags (Global) ]--&amp;gt;&amp;lt;/b:comment&amp;gt;&lt;/code&gt;&lt;/pre&gt;
    &lt;/div&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Custom CSS&lt;/h3&gt;

&lt;p&gt;We do not recommend to add custom CSS through Theme Designer as &lt;b&gt;the theme does not support adding CSS through Theme Designer&lt;/b&gt;. You need to add your custom CSS through Blogger HTML Editor.&lt;/p&gt;

&lt;p class=&#39;note wr&#39;&gt;You are supposed to add your CSS without wrapping it in the &lt;code&gt;&amp;lt;style&amp;gt;&lt;/code&gt; tag.&lt;/p&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;Go to Blogger HTML Editor.&lt;/li&gt;
  &lt;li&gt;
    Find the following line of code and add your custom CSS below it.
    &lt;!--[ MultiTabs Syntax Highlighter ]--&gt;
    &lt;div class=&#39;pre tabs&#39;&gt;
      &lt;!--[ Active function ]--&gt;
      &lt;input id=&#39;preT5-1&#39; type=&#39;radio&#39; name=&#39;preTab5&#39; checked/&gt;
      &lt;input id=&#39;preT5-2&#39; type=&#39;radio&#39; name=&#39;preTab5&#39;/&gt;

      &lt;!--[ Header/title ]--&gt;
      &lt;div&gt;
        &lt;!--[ Change atribute data-text=&#39;...&#39; to replace title ]--&gt;
        &lt;label for=&#39;preT5-1&#39; data-text=&#39;Before&#39;&gt;&lt;/label&gt;
        &lt;label for=&#39;preT5-2&#39; data-text=&#39;After&#39;&gt;&lt;/label&gt;
      &lt;/div&gt;

      &lt;!--[ Content ]--&gt;
      &lt;pre class=&#39;preC5-1&#39;&gt;&lt;code&gt;/*--[ Custom CSS Global (NO AMP) ]--*/&lt;/code&gt;&lt;/pre&gt;
      &lt;pre class=&#39;preC5-2&#39;&gt;&lt;code&gt;/*--[ Custom CSS Global (NO AMP) ]--*/

/* my custom widget css */
.my-custom-widget{}&lt;/code&gt;&lt;/pre&gt;
    &lt;/div&gt;
    &lt;p class=&#39;note&#39;&gt;&lt;b&gt;Tips!&lt;/b&gt;&lt;br&gt;
      Along with CSS, add a helpful comment which describes the use of custom added CSS.
    &lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Custom JavaScript&lt;/h3&gt;

&lt;p&gt;Custom JavaScript can be added through Blogger HTML Editor. There are two places where you can add your custom JavaScript. First one executes in head which means &lt;code&gt;document.body&lt;/code&gt; will not be defined. Second one executes after all document&#39;s static elements are loaded, this is where we recommend you to add your JavaScript code.&lt;/p&gt;

&lt;p class=&#39;note wr&#39;&gt;You are supposed to add your JavaScript without wrapping it in the &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; tag.&lt;/p&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;Go to Blogger HTML Editor.&lt;/li&gt;
  &lt;li&gt;
    Find the following line of code and add your custom JavaScript below it.
    &lt;!--[ MultiTabs Syntax Highlighter ]--&gt;
    &lt;div class=&#39;pre tabs&#39;&gt;
      &lt;!--[ Active function ]--&gt;
      &lt;input id=&#39;preT6-1&#39; type=&#39;radio&#39; name=&#39;preTab6&#39; checked/&gt;
      &lt;input id=&#39;preT6-2&#39; type=&#39;radio&#39; name=&#39;preTab6&#39;/&gt;

      &lt;!--[ Header/title ]--&gt;
      &lt;div&gt;
        &lt;!--[ Change atribute data-text=&#39;...&#39; to replace title ]--&gt;
        &lt;label for=&#39;preT6-1&#39; data-text=&#39;Before&#39;&gt;&lt;/label&gt;
        &lt;label for=&#39;preT6-2&#39; data-text=&#39;After&#39;&gt;&lt;/label&gt;
      &lt;/div&gt;

      &lt;!--[ Content ]--&gt;
      &lt;pre class=&#39;preC6-1&#39;&gt;&lt;code&gt;/*--[ Custom JS Global (placed above &amp;lt;/body&amp;gt;) ]--*/&lt;/code&gt;&lt;/pre&gt;
      &lt;pre class=&#39;preC6-2&#39;&gt;&lt;code&gt;/*--[ Custom JS Global (placed above &amp;lt;/body&amp;gt;) ]--*/

console.log(document.body) // HTMLBodyElement&lt;/code&gt;&lt;/pre&gt;
    &lt;/div&gt;
    If you want your JavaScript to be executed in head (before &lt;code&gt;document.body&lt;/code&gt; is defined), you can instead add your JavaScript below the following line of code:
    &lt;!--[ MultiTabs Syntax Highlighter ]--&gt;
    &lt;div class=&#39;pre tabs&#39;&gt;
      &lt;!--[ Active function ]--&gt;
      &lt;input id=&#39;preT7-1&#39; type=&#39;radio&#39; name=&#39;preTab7&#39; checked/&gt;
      &lt;input id=&#39;preT7-2&#39; type=&#39;radio&#39; name=&#39;preTab7&#39;/&gt;

      &lt;!--[ Header/title ]--&gt;
      &lt;div&gt;
        &lt;!--[ Change atribute data-text=&#39;...&#39; to replace title ]--&gt;
        &lt;label for=&#39;preT7-1&#39; data-text=&#39;Before&#39;&gt;&lt;/label&gt;
        &lt;label for=&#39;preT7-2&#39; data-text=&#39;After&#39;&gt;&lt;/label&gt;
      &lt;/div&gt;

      &lt;!--[ Content ]--&gt;
      &lt;pre class=&#39;preC7-1&#39;&gt;&lt;code&gt;/*--[ Custom JS Global (placed above &amp;lt;/head&amp;gt;) ]--*/&lt;/code&gt;&lt;/pre&gt;
      &lt;pre class=&#39;preC7-2&#39;&gt;&lt;code&gt;/*--[ Custom JS Global (placed above &amp;lt;/head&amp;gt;) ]--*/

console.log(document.body) // undefined&lt;/code&gt;&lt;/pre&gt;
    &lt;/div&gt;
  &lt;/li&gt;
&lt;/ol&gt;
</description><link>https://www.plus-ui.blog/2024/10/basic-setup-and-guidelines.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRvrAUkxWaIRyU94_7eZan1t7QbU3YdWS_hAUy2r4MgX0v10CRUXnjDAT9gPNgTQYxunHsgrRzOxFqooi-wXh6TlROvPbHoqkHzXP3aeqOjSSBakrvOc8xo-VqT5YZ0B3k5qBu33UU9Ju_VJBpF2ffH6YYBTmyY0iZW-OR0hyphenhyphen5Caew6QqdJXpf4ANFhCE/s72-c/basic-setup-and-guidelines.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8128085283179772973.post-2574478832144387409</guid><pubDate>Sun, 27 Oct 2024 15:49:00 +0000</pubDate><atom:updated>2025-06-23T08:33:28.560-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Documentation</category><title>Appearance and Customization</title><description>&lt;!--[ Explicitly sets post snippet ]--&gt;
&lt;div hidden aria-hidden=&#39;true&#39;&gt;A guide on changing appearance and doing basic customizations.&lt;/div&gt;

&lt;!--[ Explicitly sets post thumbnail ]--&gt;
&lt;!--[
  &lt;div class=&#39;separator&#39;&gt;&lt;img src=&#39;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibyzp7BfdUC6e_A92JTSm2J8-_CB-o-8WNYx2PHktzegtomK9WYVUZvCzhlDgu_75FCcuU-FG7xzS5KFJTIGKA1Gu0UZ_BrrILnO1cKl0BAajoky_GqZZ5PndT2rTItg1UhxMPXUHrjxzoNsRTSxnWkcBxcO4QLQ3CiFKIxfit7MtvdtzAuUy9w-YPBdw/s1280/appearance-and-customization.png&#39;/&gt;&lt;/div&gt;
]--&gt;

&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;

&lt;p class=&#39;alert info outline&#39;&gt;&lt;b&gt;Help us improve this post!&lt;/b&gt;
  English is not my first language, so if you find any mistakes or think something can be explained better, feel free to &lt;a class=&#39;extL&#39; href=&#39;/p/contact.html&#39; target=&#39;_blank&#39;&gt;contact us&lt;/a&gt;. Your suggestions are always welcome!
&lt;/p&gt;

&lt;h2&gt;Default mode&lt;/h2&gt;

&lt;p&gt;&lt;b&gt;Light&lt;/b&gt; mode is used as default mode. To change it to &lt;b&gt;Dark&lt;/b&gt; or &lt;b&gt;System&lt;/b&gt;, you can follow these steps:&lt;/p&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;Go to Theme Designer.&lt;/li&gt;
  &lt;li&gt;Click on &lt;b&gt;Advanced&lt;/b&gt; tab.&lt;/li&gt;
  &lt;li&gt;From the dropdown list, select &lt;b&gt;Style: Appearance&lt;/b&gt;.&lt;/li&gt;
  &lt;li&gt;Change the length of &lt;b&gt;Default Mode&lt;/b&gt; to 1px, 2px or 3px in order to use Light, Dark or System as default mode.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;Custom fonts&lt;/h2&gt;

&lt;p&gt;Fonts are loaded dynamically by theme based on few conditions in order to improve PageSpeed score.&lt;/p&gt;

&lt;p&gt;You can either use a web-safe font (built into most browsers) or import a custom font from sources like Google Fonts or other CDNs.&lt;/p&gt;

&lt;h3&gt;Using link tag&lt;/h3&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;
    Go to Google Fonts, select a font, and copy the attribute &lt;code&gt;href&lt;/code&gt; of provided &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt; tag having attribute &lt;code&gt;rel=&quot;stylesheet&quot;&lt;/code&gt; as shown below.
    &lt;pre&gt;&lt;code&gt;&amp;lt;link rel=&quot;preconnect&quot; href=&quot;https://fonts.googleapis.com&quot;&amp;gt;
&amp;lt;link rel=&quot;preconnect&quot; href=&quot;https://fonts.gstatic.com&quot; crossorigin&amp;gt;
&amp;lt;link href=&quot;&lt;mark data-before=&#39;Copy this&#39;&gt;https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:ital,wght@0,200..800;1,200..800&amp;amp;display=swap&lt;/mark&gt;&quot; rel=&quot;stylesheet&quot;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
  &lt;/li&gt;
  &lt;li&gt;
    Escape the copied url by replacing &lt;code&gt;&amp;amp;&lt;/code&gt; to &lt;code&gt;&amp;amp;amp;&lt;/code&gt;, &lt;code&gt;&amp;lt;&lt;/code&gt; to &lt;code&gt;&amp;amp;lt;&lt;/code&gt;, &lt;code&gt;&amp;gt;&lt;/code&gt; to &lt;code&gt;&amp;amp;gt;&lt;/code&gt;, &lt;code&gt;&#39;&lt;/code&gt; to &lt;code&gt;&amp;amp;#39;&lt;/code&gt; and &lt;code&gt;&quot;&lt;/code&gt; to &lt;code&gt;&amp;amp;quot;&lt;/code&gt; if there exists any.&lt;br&gt;
    For example the above url contains &lt;code&gt;&amp;amp;&lt;/code&gt;. Therefore, we need to escape by replacing it to &lt;code&gt;&amp;amp;amp;&lt;/code&gt; as shown.
    &lt;!--[ MultiTabs Syntax Highlighter ]--&gt;
    &lt;div class=&#39;pre tabs&#39;&gt;
      &lt;!--[ Active function ]--&gt;
      &lt;input id=&#39;preT1-1&#39; type=&#39;radio&#39; name=&#39;preTab1&#39; checked=&#39;&#39;/&gt;
      &lt;input id=&#39;preT1-2&#39; type=&#39;radio&#39; name=&#39;preTab1&#39;/&gt;

      &lt;!--[ Header/title ]--&gt;
      &lt;div&gt;
        &lt;!--[ Change atribute data-text=&#39;...&#39; to replace title ]--&gt;
        &lt;label for=&#39;preT1-1&#39; data-text=&#39;Before&#39;&gt;&lt;/label&gt;
        &lt;label for=&#39;preT1-2&#39; data-text=&#39;After&#39;&gt;&lt;/label&gt;
      &lt;/div&gt;

      &lt;!--[ Content ]--&gt;
      &lt;pre class=&#39;preC1-1&#39;&gt;&lt;code&gt;https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:ital,wght@0,200..800;1,200..800&lt;mark class=&#39;block red&#39;&gt;&amp;amp;&lt;/mark&gt;display=swap&lt;/code&gt;&lt;/pre&gt;
      &lt;pre class=&#39;preC1-2&#39;&gt;&lt;code&gt;https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:ital,wght@0,200..800;1,200..800&lt;mark class=&#39;block green&#39;&gt;&amp;amp;amp;&lt;/mark&gt;display=swap&lt;/code&gt;&lt;/pre&gt;
    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;
    Through Blogger HTML Editor, find the following code snippet and put the escaped url in &lt;b&gt;one of the marked parts&lt;/b&gt;, whichever first is empty.
    &lt;!--[ MultiTabs Syntax Highlighter ]--&gt;
    &lt;div class=&#39;pre tabs&#39;&gt;
      &lt;!--[ Active function ]--&gt;
      &lt;input id=&#39;preT2-1&#39; type=&#39;radio&#39; name=&#39;preTab2&#39; checked=&#39;&#39;/&gt;
      &lt;input id=&#39;preT2-2&#39; type=&#39;radio&#39; name=&#39;preTab2&#39;/&gt;

      &lt;!--[ Header/title ]--&gt;
      &lt;div&gt;
        &lt;!--[ Change atribute data-text=&#39;...&#39; to replace title ]--&gt;
        &lt;label for=&#39;preT2-1&#39; data-text=&#39;Before&#39;&gt;&lt;/label&gt;
        &lt;label for=&#39;preT2-2&#39; data-text=&#39;After&#39;&gt;&lt;/label&gt;
      &lt;/div&gt;

      &lt;!--[ Content ]--&gt;
      &lt;pre class=&#39;preC2-1&#39;&gt;&lt;code&gt;&amp;lt;Variable name=&quot;font.link1&quot; description=&quot;Font Link 1&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark data-before=&#39;$&#39;&gt;&lt;/mark&gt;&quot;/&amp;gt;
[!] Font Link 1
[!] @type {String}
[!] Warning: Don&#39;t add invalid font css url

&amp;lt;Variable name=&quot;font.link2&quot; description=&quot;Font Link 2&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark data-before=&#39;$&#39;&gt;&lt;/mark&gt;&quot;/&amp;gt;
[!] Font Link 2
[!] @type {String}
[!] Warning: Don&#39;t add invalid font css url

&amp;lt;Variable name=&quot;font.link3&quot; description=&quot;Font Link 3&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark data-before=&#39;$&#39;&gt;&lt;/mark&gt;&quot;/&amp;gt;
[!] Font Link 3
[!] @type {String}
[!] Warning: Don&#39;t add invalid font css url

&amp;lt;Variable name=&quot;font.link4&quot; description=&quot;Font Link 4&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark data-before=&#39;$&#39;&gt;&lt;/mark&gt;&quot;/&amp;gt;
[!] Font Link 4
[!] @type {String}
[!] Warning: Don&#39;t add invalid font css url

&amp;lt;Variable name=&quot;font.link5&quot; description=&quot;Font Link 5&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark data-before=&#39;$&#39;&gt;&lt;/mark&gt;&quot;/&amp;gt;
[!] Font Link 5
[!] @type {String}
[!] Warning: Don&#39;t add invalid font css url&lt;/code&gt;&lt;/pre&gt;
      &lt;pre class=&#39;preC2-2&#39;&gt;&lt;code&gt;&amp;lt;Variable name=&quot;font.link1&quot; description=&quot;Font Link 1&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark data-before=&#39;Empty, so added here&#39;&gt;https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:ital,wght@0,200..800;1,200..800&amp;amp;amp;display=swap&lt;/mark&gt;&quot;/&amp;gt;
[!] Font Link 1
[!] @type {String}
[!] Warning: Don&#39;t add invalid font css url

&amp;lt;Variable name=&quot;font.link2&quot; description=&quot;Font Link 2&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&quot;/&amp;gt;
[!] Font Link 2
[!] @type {String}
[!] Warning: Don&#39;t add invalid font css url

&amp;lt;Variable name=&quot;font.link3&quot; description=&quot;Font Link 3&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&quot;/&amp;gt;
[!] Font Link 3
[!] @type {String}
[!] Warning: Don&#39;t add invalid font css url

&amp;lt;Variable name=&quot;font.link4&quot; description=&quot;Font Link 4&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&quot;/&amp;gt;
[!] Font Link 4
[!] @type {String}
[!] Warning: Don&#39;t add invalid font css url

&amp;lt;Variable name=&quot;font.link5&quot; description=&quot;Font Link 5&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&quot;/&amp;gt;
[!] Font Link 5
[!] @type {String}
[!] Warning: Don&#39;t add invalid font css url&lt;/code&gt;&lt;/pre&gt;
    &lt;/div&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;hr&gt;

&lt;p&gt;If you don&#39;t want to dynamically load your fonts, &lt;b&gt;skip above steps&lt;/b&gt; and put all &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt; tags provided by Google Fonts in-between of following two lines of code through Blogger HTML Editor. Note that you still need to escape the value of &lt;code&gt;href&lt;/code&gt; attribute.&lt;/p&gt;

&lt;!--[ MultiTabs Syntax Highlighter ]--&gt;
&lt;div class=&#39;pre tabs&#39;&gt;
  &lt;!--[ Active function ]--&gt;
  &lt;input id=&#39;preT3-1&#39; type=&#39;radio&#39; name=&#39;preTab3&#39; checked=&#39;&#39;/&gt;
  &lt;input id=&#39;preT3-2&#39; type=&#39;radio&#39; name=&#39;preTab3&#39;/&gt;

  &lt;!--[ Header/title ]--&gt;
  &lt;div&gt;
    &lt;!--[ Change atribute data-text=&#39;...&#39; to replace title ]--&gt;
    &lt;label for=&#39;preT3-1&#39; data-text=&#39;Before&#39;&gt;&lt;/label&gt;
    &lt;label for=&#39;preT3-2&#39; data-text=&#39;After&#39;&gt;&lt;/label&gt;
  &lt;/div&gt;

  &lt;!--[ Content ]--&gt;
  &lt;pre class=&#39;preC3-1&#39; data-lines=&#39;3&#39;&gt;&lt;code&gt;&amp;lt;b:comment&amp;gt;&amp;lt;!--[ &amp;lt;/head&amp;gt; | &amp;lt;!&amp;gt; [below] Custom codes (Global) ]--&amp;gt;&amp;lt;/b:comment&amp;gt;



&amp;lt;b:comment&amp;gt;&amp;lt;!--[ &amp;lt;/head&amp;gt; | &amp;lt;!&amp;gt; [above] Custom codes (Global) ]--&amp;gt;&amp;lt;/b:comment&amp;gt;&lt;/code&gt;&lt;/pre&gt;
  &lt;pre class=&#39;preC3-2&#39; data-lines=&#39;3,4,5&#39;&gt;&lt;code&gt;&amp;lt;b:comment&amp;gt;&amp;lt;!--[ &amp;lt;/head&amp;gt; | &amp;lt;!&amp;gt; [below] Custom codes (Global) ]--&amp;gt;&amp;lt;/b:comment&amp;gt;

&amp;lt;link rel=&#39;preconnect&#39; href=&#39;https://fonts.googleapis.com&#39;/&amp;gt;
&amp;lt;link rel=&#39;preconnect&#39; href=&#39;https://fonts.gstatic.com&#39; crossorigin=&#39;&#39;&amp;gt;
&amp;lt;link href=&#39;https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:ital,wght@0,200..800;1,200..800&amp;amp;amp;display=swap&#39; rel=&#39;stylesheet&#39;/&amp;gt;

&amp;lt;b:comment&amp;gt;&amp;lt;!--[ &amp;lt;/head&amp;gt; | &amp;lt;!&amp;gt; [above] Custom codes (Global) ]--&amp;gt;&amp;lt;/b:comment&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;h3&gt;Using CSS&lt;/h3&gt;

&lt;p&gt;If you can&#39;t link fonts using external sources and you have CSS which imports font families, you can replace the marked part with your single line escaped font css, i.e. your css must be in a single line and escaped (replace &lt;code&gt;&amp;amp;&lt;/code&gt; to &lt;code&gt;&amp;amp;amp;&lt;/code&gt;, &lt;code&gt;&amp;lt;&lt;/code&gt; to &lt;code&gt;&amp;amp;lt;&lt;/code&gt;, &lt;code&gt;&amp;gt;&lt;/code&gt; to &lt;code&gt;&amp;amp;gt;&lt;/code&gt;, &lt;code&gt;&#39;&lt;/code&gt; to &lt;code&gt;&amp;amp;#39;&lt;/code&gt; and &lt;code&gt;&quot;&lt;/code&gt; to &lt;code&gt;&amp;amp;quot;&lt;/code&gt;).&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;Variable name=&quot;font.css&quot; description=&quot;Font CSS&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark data-before=&#39;Escaped font css&#39;&gt;@font-face{font-family:&amp;amp;#39;Google Sans Text&amp;amp;#39;;font-style:normal;font-weight:400;font-display:swap;src:local(&amp;amp;#39;Google Sans Text&amp;amp;#39;),local(&amp;amp;#39;Google-Sans-Text&amp;amp;#39;),url(https://fonts.gstatic.com/s/googlesanstext/v16/5aUu9-KzpRiLCAt4Unrc-xIKmCU5qEp2iw.woff2) format(&amp;amp;#39;woff2&amp;amp;#39;)} @font-face{font-family:&amp;amp;#39;Google Sans Text&amp;amp;#39;;font-style:normal;font-weight:700;font-display:swap;src:local(&amp;amp;#39;Google Sans Text&amp;amp;#39;),local(&amp;amp;#39;Google-Sans-Text&amp;amp;#39;),url(https://fonts.gstatic.com/s/googlesanstext/v16/5aUp9-KzpRiLCAt4Unrc-xIKmCU5oPFTnmhjtg.woff2) format(&amp;amp;#39;woff2&amp;amp;#39;)} @font-face{font-family:&amp;amp;#39;Google Sans Mono&amp;amp;#39;;font-style:normal;font-weight:400;font-display:swap;src:local(&amp;amp;#39;Google Sans Mono&amp;amp;#39;),local(&amp;amp;#39;Google-Sans-Mono&amp;amp;#39;),url(https://fonts.gstatic.com/s/googlesansmono/v4/P5sUzYWFYtnZ_Cg-t0Uq_rfivrdYH4RE8-pZ5gQ1abT53wVQGrk.woff2) format(&amp;amp;#39;woff2&amp;amp;#39;)}&lt;/mark&gt;&quot;/&amp;gt;
[!] Font CSS
[!] @type {String}
[!] Warning: The font CSS must be in single line and string must be escaped&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Font name&lt;/h3&gt;

&lt;p&gt;If you changed the default font sources, you may need to provide your font family name in order to be used by the document. To do so, you can follow these steps:&lt;/p&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;Go to Blogger HTML Editor.&lt;/li&gt;
  &lt;li&gt;
    Find the following code snippet and replace the existing font names with your custom font names.
    &lt;!--[ MultiTabs Syntax Highlighter ]--&gt;
    &lt;div class=&#39;pre tabs&#39;&gt;
      &lt;!--[ Active function ]--&gt;
      &lt;input id=&#39;preT4-1&#39; type=&#39;radio&#39; name=&#39;preTab4&#39; checked=&#39;&#39;/&gt;
      &lt;input id=&#39;preT4-2&#39; type=&#39;radio&#39; name=&#39;preTab4&#39;/&gt;

      &lt;!--[ Header/title ]--&gt;
      &lt;div&gt;
        &lt;!--[ Change atribute data-text=&#39;...&#39; to replace title ]--&gt;
        &lt;label for=&#39;preT4-1&#39; data-text=&#39;Before&#39;&gt;&lt;/label&gt;
        &lt;label for=&#39;preT4-2&#39; data-text=&#39;After&#39;&gt;&lt;/label&gt;
      &lt;/div&gt;

      &lt;!--[ Content ]--&gt;
      &lt;pre class=&#39;preC4-1&#39;&gt;&lt;code&gt;&amp;lt;Variable name=&quot;font.head&quot; description=&quot;Heading font name&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark data-before=&#39;Heading font name&#39;&gt;Google Sans Text&lt;/mark&gt;&quot;/&amp;gt;
[!] Heading font name
[!] @type {String}

&amp;lt;Variable name=&quot;font.body&quot; description=&quot;Body font name&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark data-before=&#39;Body font name&#39;&gt;Google Sans Text&lt;/mark&gt;&quot;/&amp;gt;
[!] Body font name
[!] @type {String}

&amp;lt;Variable name=&quot;font.bodyAlt&quot; description=&quot;Body alternative font name&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark data-before=&#39;Body alternative font name&#39;&gt;Google Sans Text&lt;/mark&gt;&quot;/&amp;gt;
[!] Body alternative font name
[!] @type {String}

&amp;lt;Variable name=&quot;font.code&quot; description=&quot;Code Font Name&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark data-before=&#39;Code font name&#39;&gt;Google Sans Mono&lt;/mark&gt;&quot;/&amp;gt;
[!] Code font name
[!] @type {String}&lt;/code&gt;&lt;/pre&gt;
      &lt;pre class=&#39;preC4-2&#39;&gt;&lt;code&gt;&amp;lt;Variable name=&quot;font.head&quot; description=&quot;Heading font name&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark data-before=&#39;Heading font name&#39;&gt;Plus Jakarta Sans&lt;/mark&gt;&quot;/&amp;gt;
[!] Heading font name
[!] @type {String}

&amp;lt;Variable name=&quot;font.body&quot; description=&quot;Body font name&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark data-before=&#39;Body font name&#39;&gt;Plus Jakarta Sans&lt;/mark&gt;&quot;/&amp;gt;
[!] Body font name
[!] @type {String}

&amp;lt;Variable name=&quot;font.bodyAlt&quot; description=&quot;Body alternative font name&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark data-before=&#39;Body alternative font name&#39;&gt;Plus Jakarta Sans&lt;/mark&gt;&quot;/&amp;gt;
[!] Body alternative font name
[!] @type {String}

&amp;lt;Variable name=&quot;font.code&quot; description=&quot;Code Font Name&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark data-before=&#39;Code font name&#39;&gt;Google Sans Mono&lt;/mark&gt;&quot;/&amp;gt;
[!] Code font name
[!] @type {String}&lt;/code&gt;&lt;/pre&gt;
    &lt;/div&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;Custom texts&lt;/h2&gt;

&lt;p&gt;Blogger provides few texts which automatically get translated based on what language is choosen in Blog Settings. Few of these texts are &lt;b&gt;Show more&lt;/b&gt;, &lt;b&gt;Post a comment&lt;/b&gt;, &lt;b&gt;Join the conversation&lt;/b&gt;, etc. But when using custom texts lets say &lt;b&gt;Close&lt;/b&gt;, &lt;b&gt;Appearance&lt;/b&gt;, &lt;b&gt;About the Author&lt;/b&gt;, etc., it can&#39;t be automatically translated and will stay in English unless changed. You may want to modify these texts to your own.&lt;/p&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;Go to Blogger HTML Editor.&lt;/li&gt;
  &lt;li&gt;
    Find the following code snippet and replace the &lt;code&gt;value&lt;/code&gt; attribute with your custom text in respect to what description says.
    &lt;!--[ MultiTabs Syntax Highlighter ]--&gt;
    &lt;div class=&#39;pre tabs&#39;&gt;
      &lt;!--[ Active function ]--&gt;
      &lt;input id=&#39;preT5-1&#39; type=&#39;radio&#39; name=&#39;preTab5&#39; checked=&#39;&#39;/&gt;
      &lt;input id=&#39;preT5-2&#39; type=&#39;radio&#39; name=&#39;preTab5&#39;/&gt;

      &lt;!--[ Header/title ]--&gt;
      &lt;div&gt;
        &lt;!--[ Change atribute data-text=&#39;...&#39; to replace title ]--&gt;
        &lt;label for=&#39;preT5-1&#39; data-text=&#39;Before&#39;&gt;&lt;/label&gt;
        &lt;label for=&#39;preT5-2&#39; data-text=&#39;After&#39;&gt;&lt;/label&gt;
      &lt;/div&gt;

      &lt;!--[ Content ]--&gt;
      &lt;pre class=&#39;preC5-1&#39;&gt;&lt;code&gt;[!] Messages
[!] @type {String}
[!] Warning: Message value must be in single line and must not contain double quotes
&amp;lt;Variable name=&quot;m.new&quot; description=&quot;Message for: New!&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark&gt;New!&lt;/mark&gt;&quot;/&amp;gt;
&amp;lt;Variable name=&quot;m.free&quot; description=&quot;Message for: Free!&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark&gt;Free!&lt;/mark&gt;&quot;/&amp;gt;
&amp;lt;Variable name=&quot;m.open&quot; description=&quot;Message for: Open&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark&gt;Open&lt;/mark&gt;&quot;/&amp;gt;
&amp;lt;Variable name=&quot;m.close&quot; description=&quot;Message for: Close&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark&gt;Close&lt;/mark&gt;&quot;/&amp;gt;
&amp;lt;Variable name=&quot;m.hideAll&quot; description=&quot;Message for: Hide all&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark&gt;Hide all&lt;/mark&gt;&quot;/&amp;gt;
&amp;lt;Variable name=&quot;m.showAll&quot; description=&quot;Message for: Show all&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark&gt;Show all&lt;/mark&gt;&quot;/&amp;gt;
&amp;lt;Variable name=&quot;m.previous&quot; description=&quot;Message for: Previous&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark&gt;Previous&lt;/mark&gt;&quot;/&amp;gt;
&amp;lt;Variable name=&quot;m.next&quot; description=&quot;Message for: Next&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark&gt;Next&lt;/mark&gt;&quot;/&amp;gt;&lt;/code&gt;&lt;/pre&gt;
      &lt;pre class=&#39;preC5-2&#39;&gt;&lt;code&gt;[!] Messages
[!] @type {String}
[!] Warning: Message value must be in single line and must not contain double quotes
&amp;lt;Variable name=&quot;m.new&quot; description=&quot;Message for: New!&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;नया!&quot;/&amp;gt;
&amp;lt;Variable name=&quot;m.free&quot; description=&quot;Message for: Free!&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;मुक्त!&quot;/&amp;gt;
&amp;lt;Variable name=&quot;m.open&quot; description=&quot;Message for: Open&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;खोलें&quot;/&amp;gt;
&amp;lt;Variable name=&quot;m.close&quot; description=&quot;Message for: Close&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;बंद करें&quot;/&amp;gt;
&amp;lt;Variable name=&quot;m.hideAll&quot; description=&quot;Message for: Hide all&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;सब छिपाएं&quot;/&amp;gt;
&amp;lt;Variable name=&quot;m.showAll&quot; description=&quot;Message for: Show all&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;सब दिखाएं&quot;/&amp;gt;
&amp;lt;Variable name=&quot;m.previous&quot; description=&quot;Message for: Previous&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;पिछला&quot;/&amp;gt;
&amp;lt;Variable name=&quot;m.next&quot; description=&quot;Message for: Next&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;अगला&quot;/&amp;gt;&lt;/code&gt;&lt;/pre&gt;
    &lt;/div&gt;
    &lt;p class=&#39;note wr&#39;&gt;Only modify the &lt;code&gt;value&lt;/code&gt; attribute, keep rest as it is.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;
</description><link>https://www.plus-ui.blog/2024/10/appearance-and-customization.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibyzp7BfdUC6e_A92JTSm2J8-_CB-o-8WNYx2PHktzegtomK9WYVUZvCzhlDgu_75FCcuU-FG7xzS5KFJTIGKA1Gu0UZ_BrrILnO1cKl0BAajoky_GqZZ5PndT2rTItg1UhxMPXUHrjxzoNsRTSxnWkcBxcO4QLQ3CiFKIxfit7MtvdtzAuUy9w-YPBdw/s72-c/appearance-and-customization.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8128085283179772973.post-4206940164549614205</guid><pubDate>Sun, 27 Oct 2024 15:48:00 +0000</pubDate><atom:updated>2025-06-23T08:33:11.141-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Documentation</category><title>Navigation Menu Customization</title><description>&lt;!--[ Explicitly sets post snippet ]--&gt;
&lt;div hidden aria-hidden=&#39;true&#39;&gt;Customize the navigation menu by removing existing items and adding new items.&lt;/div&gt;

&lt;!--[ Explicitly sets post thumbnail ]--&gt;
&lt;!--[
  &lt;div class=&#39;separator&#39;&gt;&lt;img src=&#39;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMcB6QMs1P2QfZZ-UMw473IMjG3qidc1np6RWT90qHT2DInO8P0m55EFv24GxFv5VrHzztp0zqK14JlJUOIIX6FaK6666h61tWjbUXbgQb2TW48-F_NpbbmOuuClQPeVktX2vNDmelqZc9h5YyN9fuc4bGmQIhT2hD3lEX3uJMQe0csif4CK3y-G9k7B8/s1280/navigation-menu-customization.png&#39;/&gt;&lt;/div&gt;
]--&gt;

&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;

&lt;p class=&#39;alert info outline&#39;&gt;&lt;b&gt;Help us improve this post!&lt;/b&gt;
  English is not my first language, so if you find any mistakes or think something can be explained better, feel free to &lt;a class=&#39;extL&#39; href=&#39;/p/contact.html&#39; target=&#39;_blank&#39;&gt;contact us&lt;/a&gt;. Your suggestions are always welcome!
&lt;/p&gt;

&lt;p&gt;The navigation menu is available in two versions, namely the default menu with additional dropdowns and an alternative menu without dropdowns, the default menu can only be edited via Edit HTML.&lt;/p&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;Go to &lt;a class=&#39;extL&#39; href=&#39;./installation.html#edit-html&#39;&gt;Blogger HTML Editor&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;
    Search for &lt;code&gt;&amp;lt;b:includable id=&#39;items-mainMenu&#39;&amp;gt;&lt;/code&gt;, which looks something like the following:
    &lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Navigation Menu Items ]--&amp;gt;
&amp;lt;b:includable id=&#39;items-mainMenu&#39;&amp;gt;
  ...
&amp;lt;/b:includable&amp;gt;&lt;/code&gt;&lt;/pre&gt;
  &lt;/li&gt;
  &lt;li&gt;You can edit your navigation menu items between &lt;code&gt;&amp;lt;b:includable id=&#39;items-mainMenu&#39;&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;/b:includable&amp;gt;&lt;/code&gt;. There are few items added by default, feel free to remove it and add your owns.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;Standard menu&lt;/h2&gt;

&lt;p&gt;To add a standard menu, you can add the following code snippet by replacing marked parts with appropriate values:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Standard menu ]--&amp;gt;
&amp;lt;li&amp;gt;
  &amp;lt;!--[ Change attribute href=&#39;#&#39; to add url ]--&amp;gt;
  &amp;lt;a aria-label=&#39;&lt;mark data-before=&#39;Menu title&#39;&gt;Standard Menu&lt;/mark&gt;&#39; href=&#39;&lt;mark data-before=&#39;Destination link&#39;&gt;#&lt;/mark&gt;&#39; itemprop=&#39;url&#39;&amp;gt;
    &amp;lt;!--[ Icon ]--&amp;gt;
    &lt;mark data-before=&#39;Svg icon code&#39;&gt;&amp;lt;b:include name=&#39;svg.folder-2&#39;/&amp;gt;&lt;/mark&gt;
    &amp;lt;!--[ Title ]--&amp;gt;
    &amp;lt;span itemprop=&#39;name&#39;&amp;gt;&lt;mark data-before=&#39;Menu title&#39;&gt;Standard Menu&lt;/mark&gt;&amp;lt;/span&amp;gt;
  &amp;lt;/a&amp;gt;
&amp;lt;/li&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Dropdown menu&lt;/h2&gt;

&lt;p&gt;There are few dropdown menu styles you can use as follows:&lt;/p&gt;

&lt;h3&gt;Without icon in sub-menus&lt;/h3&gt;

&lt;p&gt;You can use this style if you do not want to add svg icons for sub-menus. You can add the following code snippet by replacing marked parts with appropriate values. Please note that &lt;u&gt;svg icon for the toggle button is required&lt;/u&gt; to be added.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Dropdown Menu ]--&amp;gt;
&amp;lt;li&amp;gt;
  &amp;lt;input id=&#39;&lt;mark data-before=&#39;An unique id for each dropdown&#39;&gt;nav-drop-1&lt;/mark&gt;&#39; type=&#39;checkbox&#39;&lt;mark class=&#39;block red&#39; data-before=&#39;Remove it to collapse by default&#39;&gt; checked=&#39;&#39;&lt;/mark&gt;/&amp;gt;
  &amp;lt;label aria-label=&#39;&lt;mark data-before=&#39;Toggle button title&#39;&gt;Sub Menu&lt;/mark&gt;&#39; for=&#39;&lt;mark data-before=&#39;Same id you have used above&#39;&gt;nav-drop-1&lt;/mark&gt;&#39; role=&#39;button&#39;&amp;gt;
    &amp;lt;!--[ Icon ]--&amp;gt;
    &lt;mark data-before=&#39;Svg icon code&#39;&gt;&amp;lt;b:include name=&#39;svg.folder-2&#39;/&amp;gt;&lt;/mark&gt;
    &amp;lt;!--[ Title ]--&amp;gt;
    &amp;lt;span&amp;gt;&lt;mark data-before=&#39;Toggle button title&#39;&gt;Sub Menu&lt;/mark&gt;&amp;lt;/span&amp;gt;
  &amp;lt;/label&amp;gt;
  &amp;lt;ul&amp;gt;
    &amp;lt;li&amp;gt;
      &amp;lt;!--[ Change attribute href=&#39;#&#39; to add url ]--&amp;gt;
      &amp;lt;a aria-label=&#39;&lt;mark data-before=&#39;Sub-menu title&#39;&gt;Sub Menu 01&lt;/mark&gt;&#39; href=&#39;&lt;mark data-before=&#39;Destination link&#39;&gt;#&lt;/mark&gt;&#39; itemprop=&#39;url&#39;&amp;gt;
        &amp;lt;!--[ Title ]--&amp;gt;
        &amp;lt;span itemprop=&#39;name&#39;&amp;gt;&lt;mark data-before=&#39;Sub-menu title&#39;&gt;Sub Menu 01&lt;/mark&gt;&amp;lt;/span&amp;gt;
      &amp;lt;/a&amp;gt;
    &amp;lt;/li&amp;gt;
    &amp;lt;li&amp;gt;
      &amp;lt;!--[ Change attribute href=&#39;#&#39; to add url ]--&amp;gt;
      &amp;lt;a aria-label=&#39;&lt;mark data-before=&#39;Sub-menu title&#39;&gt;Sub Menu 02&lt;/mark&gt;&#39; href=&#39;&lt;mark data-before=&#39;Destination link&#39;&gt;#&lt;/mark&gt;&#39; itemprop=&#39;url&#39;&amp;gt;
        &amp;lt;!--[ Title ]--&amp;gt;
        &amp;lt;span itemprop=&#39;name&#39;&amp;gt;&lt;mark data-before=&#39;Sub-menu title&#39;&gt;Sub Menu 02&lt;/mark&gt;&amp;lt;/span&amp;gt;
      &amp;lt;/a&amp;gt;
    &amp;lt;/li&amp;gt;
    &amp;lt;li&amp;gt;
      &amp;lt;!--[ Change attribute href=&#39;#&#39; to add url ]--&amp;gt;
      &amp;lt;a aria-label=&#39;&lt;mark data-before=&#39;Sub-menu title&#39;&gt;Sub Menu 03&lt;/mark&gt;&#39; href=&#39;&lt;mark data-before=&#39;Destination link&#39;&gt;#&lt;/mark&gt;&#39; itemprop=&#39;url&#39;&amp;gt;
        &amp;lt;!--[ Title ]--&amp;gt;
        &amp;lt;span itemprop=&#39;name&#39;&amp;gt;&lt;mark data-before=&#39;Sub-menu title&#39;&gt;Sub Menu 03&lt;/mark&gt;&amp;lt;/span&amp;gt;
      &amp;lt;/a&amp;gt;
    &amp;lt;/li&amp;gt;
  &amp;lt;/ul&amp;gt;
&amp;lt;/li&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;With icon in sub-menus&lt;/h3&gt;

&lt;p&gt;The code snippet for it is &lt;u&gt;similar to above, you only have to add your svg icon code above the title in sub-menu&lt;/u&gt; as shown below:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Dropdown Menu ]--&amp;gt;
&amp;lt;li&amp;gt;
  ...
  &amp;lt;ul&amp;gt;
    ...
    &amp;lt;li&amp;gt;
      &amp;lt;!--[ Change attribute href=&#39;#&#39; to add url ]--&amp;gt;
      &amp;lt;a aria-label=&#39;&lt;mark data-before=&#39;Sub-menu title&#39;&gt;Sub Menu 01&lt;/mark&gt;&#39; href=&#39;&lt;mark data-before=&#39;Destination link&#39;&gt;#&lt;/mark&gt;&#39; itemprop=&#39;url&#39;&amp;gt;
        &amp;lt;!--[ Icon ]--&amp;gt;
        &lt;mark class=&#39;block&#39; data-before=&#39;Svg icon code&#39;&gt;&amp;lt;b:include name=&#39;svg.folder-2&#39;/&amp;gt;&lt;/mark&gt;
        &amp;lt;!--[ Title ]--&amp;gt;
        &amp;lt;span itemprop=&#39;name&#39;&amp;gt;&lt;mark data-before=&#39;Sub-menu title&#39;&gt;Sub Menu 01&lt;/mark&gt;&amp;lt;/span&amp;gt;
      &amp;lt;/a&amp;gt;
    &amp;lt;/li&amp;gt;
    ...
  &amp;lt;/ul&amp;gt;
&amp;lt;/li&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Sub-menus at top level&lt;/h3&gt;

&lt;p&gt;Toggle button becomes small and sub-menu behave same as standard menu but they can still be collapsed/expanded by clicking on the toggle button. You can add the following code snippet by replacing marked parts with appropriate values. Note that &lt;u&gt;sub-menus are required to have svg icon.&lt;/u&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Dropdown Menu (Sub Menu at Top level) ]--&amp;gt;
&amp;lt;li class=&#39;mr&#39;&amp;gt;
  &amp;lt;input id=&#39;&lt;mark data-before=&#39;An unique id for each dropdown&#39;&gt;nav-drop-3&lt;/mark&gt;&#39; type=&#39;checkbox&#39;&lt;mark class=&#39;block red&#39; data-before=&#39;Remove it to collapse by default&#39;&gt; checked=&#39;&#39;&lt;/mark&gt;/&amp;gt;
  &amp;lt;label aria-label=&#39;&lt;mark data-before=&#39;Toggle button title&#39;&gt;More...&lt;/mark&gt;&#39; for=&#39;&lt;mark data-before=&#39;Same id you have used above&#39;&gt;nav-drop-3&lt;/mark&gt;&#39; role=&#39;button&#39;&amp;gt;
    &amp;lt;!--[ Title ]--&amp;gt;
    &amp;lt;span&amp;gt;&lt;mark data-before=&#39;Toggle button title&#39;&gt;More...&lt;/mark&gt;&amp;lt;/span&amp;gt;
  &amp;lt;/label&amp;gt;
  &amp;lt;ul&amp;gt;
    &amp;lt;li&amp;gt;
      &amp;lt;!--[ Change attribute href=&#39;#&#39; to add url ]--&amp;gt;
      &amp;lt;a aria-label=&#39;&lt;mark data-before=&#39;Sub-menu title&#39;&gt;Sub Menu 01&lt;/mark&gt;&#39; href=&#39;&lt;mark data-before=&#39;Destination link&#39;&gt;#&lt;/mark&gt;&#39; itemprop=&#39;url&#39;&amp;gt;
        &amp;lt;!--[ Icon ]--&amp;gt;
        &lt;mark data-before=&#39;Svg icon code&#39;&gt;&amp;lt;b:include name=&#39;svg.folder-2&#39;/&amp;gt;&lt;/mark&gt;
        &amp;lt;!--[ Title ]--&amp;gt;
        &amp;lt;span itemprop=&#39;name&#39;&amp;gt;&lt;mark data-before=&#39;Sub-menu title&#39;&gt;Sub Menu 01&lt;/mark&gt;&amp;lt;/span&amp;gt;
      &amp;lt;/a&amp;gt;
    &amp;lt;/li&amp;gt;
    &amp;lt;li&amp;gt;
      &amp;lt;!--[ Change attribute href=&#39;#&#39; to add url ]--&amp;gt;
      &amp;lt;a aria-label=&#39;&lt;mark data-before=&#39;Sub-menu title&#39;&gt;Sub Menu 02&lt;/mark&gt;&#39; href=&#39;&lt;mark data-before=&#39;Destination link&#39;&gt;#&lt;/mark&gt;&#39; itemprop=&#39;url&#39;&amp;gt;
        &amp;lt;!--[ Icon ]--&amp;gt;
        &lt;mark data-before=&#39;Svg icon code&#39;&gt;&amp;lt;b:include name=&#39;svg.folder-2&#39;/&amp;gt;&lt;/mark&gt;
        &amp;lt;!--[ Title ]--&amp;gt;
        &amp;lt;span itemprop=&#39;name&#39;&amp;gt;&lt;mark data-before=&#39;Sub-menu title&#39;&gt;Sub Menu 02&lt;/mark&gt;&amp;lt;/span&amp;gt;
      &amp;lt;/a&amp;gt;
    &amp;lt;/li&amp;gt;
    &amp;lt;li&amp;gt;
      &amp;lt;!--[ Change attribute href=&#39;#&#39; to add url ]--&amp;gt;
      &amp;lt;a aria-label=&#39;&lt;mark data-before=&#39;Sub-menu title&#39;&gt;Sub Menu 03&lt;/mark&gt;&#39; href=&#39;&lt;mark data-before=&#39;Destination link&#39;&gt;#&lt;/mark&gt;&#39; itemprop=&#39;url&#39;&amp;gt;
        &amp;lt;!--[ Icon ]--&amp;gt;
        &lt;mark data-before=&#39;Svg icon code&#39;&gt;&amp;lt;b:include name=&#39;svg.folder-2&#39;/&amp;gt;&lt;/mark&gt;
        &amp;lt;!--[ Title ]--&amp;gt;
        &amp;lt;span itemprop=&#39;name&#39;&amp;gt;&lt;mark data-before=&#39;Sub-menu title&#39;&gt;Sub Menu 03&lt;/mark&gt;&amp;lt;/span&amp;gt;
      &amp;lt;/a&amp;gt;
    &amp;lt;/li&amp;gt;
  &amp;lt;/ul&amp;gt;
&amp;lt;/li&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Customizing further&lt;/h2&gt;

&lt;p&gt;If you want to make more customizations to Navigation Menu like changing its width for desktop view, changing text color, etc. you can do that from Theme Designer.&lt;/p&gt;

&lt;ul class=&#39;steps&#39;&gt;
  &lt;li&gt;Go to Blogger Theme Designer.&lt;/li&gt;
  &lt;li&gt;Click on &lt;b&gt;Advanced&lt;/b&gt; tab.&lt;/li&gt;
  &lt;li&gt;From dropdown selection list, select &lt;b&gt;Style: Navigation Menu&lt;/b&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;!--[ Accordion (Grouped) ]--&gt;
&lt;div class=&#39;showH&#39;&gt;
  &lt;details class=&#39;ac&#39;&gt;
    &lt;summary&gt;How to keep Navigation Menu expanded by default for desktop view?&lt;/summary&gt;
    &lt;div&gt;
      &lt;p class=&#39;note wr&#39;&gt;The option to change this behaviour was added in v3.1. You can find this option if and only if you are using v3.1 or above.&lt;/p&gt;
      &lt;p&gt;Navigate to &lt;b&gt;Style: Navigation Menu&lt;/b&gt; as described above, set the length of &lt;b&gt;Navbar default state (Desktop)&lt;/b&gt; to 1px or 2px to keep the navigation menu in desktop view collapsed or expanded respectively.&lt;/p&gt;
    &lt;/div&gt;
  &lt;/details&gt;
  &lt;details class=&#39;ac&#39;&gt;
    &lt;summary&gt;From where I can get SVG icons?&lt;/summary&gt;
    &lt;div&gt;
      &lt;p&gt;You can find few SVG icons &lt;a href=&#39;./resources.html#svg-icons&#39;&gt;here&lt;/a&gt;.&lt;/p&gt;
    &lt;/div&gt;
  &lt;/details&gt;
&lt;/div&gt;
</description><link>https://www.plus-ui.blog/2024/10/navigation-menu-customization.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMcB6QMs1P2QfZZ-UMw473IMjG3qidc1np6RWT90qHT2DInO8P0m55EFv24GxFv5VrHzztp0zqK14JlJUOIIX6FaK6666h61tWjbUXbgQb2TW48-F_NpbbmOuuClQPeVktX2vNDmelqZc9h5YyN9fuc4bGmQIhT2hD3lEX3uJMQe0csif4CK3y-G9k7B8/s72-c/navigation-menu-customization.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8128085283179772973.post-8010155211312175046</guid><pubDate>Sun, 27 Oct 2024 15:47:00 +0000</pubDate><atom:updated>2025-04-30T08:13:44.896-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Documentation</category><category domain="http://www.blogger.com/atom/ns#">Plugin</category><title>Comment Settings and Integrations</title><description>&lt;!--[ Explicitly sets post thumbnail ]--&gt;
&lt;!--[
  &lt;div class=&#39;separator&#39;&gt;&lt;img src=&#39;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgisMircfIenf1jqkipHH98f7TMBNJ8UuWmwQ0hif4ycBeMaYnUURjew2fv0E4MxiZzl1TZdzsnsSwPzd1x9LjF-8BzKGfhr4DRHlkIsR2DdpQe91nnq5K9x1tA8zjHCrohJqXZpze5Y_MQXMgqSa4pOcz2EvdG2NxIIxwB86e4Q8pvIWVBGgLA4H42Xv4/s1280/comment-settings-and-integrations.png&#39;/&gt;&lt;/div&gt;
]--&gt;

&lt;p&gt;We provide first class support for &lt;b&gt;Blogger&lt;/b&gt;, &lt;b&gt;Disqus&lt;/b&gt; and &lt;b&gt;Facebook&lt;/b&gt; comments on posts and pages. Not only that, you can use multiple comments platforms at the same time and these comments are available on AMP pages as well.&lt;/p&gt;

&lt;p&gt;To customize comments, navigate to &lt;b&gt;Comments Plugin&lt;/b&gt; through &lt;b&gt;Theme Designer&lt;/b&gt;.&lt;/p&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;Go to Blogger Theme Designer.&lt;/li&gt;
  &lt;li&gt;Click on &lt;b&gt;Advanced&lt;/b&gt; tab.&lt;/li&gt;
  &lt;li&gt;From dropdown selection list, select &lt;b&gt;Plugin: Comments&lt;/b&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;Blogger comments&lt;/h2&gt;

&lt;p&gt;This section will guide you to customize Blogger comments.&lt;/p&gt;

&lt;h3&gt;Comments on pages&lt;/h3&gt;

&lt;p&gt;By default, comments are enabled for pages as well. They can be disabled or enabled by setting the length of &lt;b&gt;Comments on pages&lt;/b&gt; to 1px or 2px respectively.&lt;/p&gt;

&lt;h3&gt;Iframe style&lt;/h3&gt;

&lt;p class=&#39;note wr&#39;&gt;This option has been removed as of v3.2.0.&lt;br&gt;Blogger deprecated (without notification) Legacy style in February 2025, don&#39;t make any changes to this option. If you have been using Legacy style, switch back to Modern style. Since blogger comments on AMP pages explicitly use Legacy style in order to make comments compatible with AMP as Modern style doesn&#39;t work well on AMP, blogger comment forms will not work on AMP pages and might show Google logo.&lt;/p&gt;

&lt;p&gt;There are two styles of iframe available for comments form embed, generally &lt;b&gt;Legacy&lt;/b&gt; and &lt;b&gt;Modern&lt;/b&gt;. By default, it is set to &lt;b&gt;Modern&lt;/b&gt; style.&lt;/p&gt;

&lt;p&gt;You can change the iframe style to Legacy or Modern by setting the length of &lt;b&gt;Blogger Iframe Style&lt;/b&gt; to 1px or 2px respectively.&lt;/p&gt;

&lt;p class=&#39;note&#39;&gt;For AMP variant of pages, it will explicitly use the &lt;b&gt;Legacy&lt;/b&gt; style because Modern style doesn&#39;t work well on AMP pages.&lt;/p&gt;

&lt;h3&gt;Pop-up style&lt;/h3&gt;

&lt;p&gt;Blogger comments uses pop-up style by default.&lt;/p&gt;

&lt;p&gt;This can be disabled or enabled by setting the length of &lt;b&gt;Comments Popup&lt;/b&gt; to 1px or 2px respectively.&lt;/p&gt;

&lt;p class=&#39;note&#39;&gt;For AMP variant of pages or if multiple comments platforms are enabled at the same time, &lt;b&gt;Pop-up&lt;/b&gt; style will be automatically disabled.&lt;/p&gt;

&lt;h3&gt;Expanded replies&lt;/h3&gt;

&lt;p&gt;Comments&#39; replies are expanded by default. You can choose whether to collapse or expand replies to a comment by setting the length of &lt;b&gt;Expanded replies&lt;/b&gt; to 1px or 2px respectively.&lt;/p&gt;

&lt;h3&gt;Comment media parsers&lt;/h3&gt;

&lt;p&gt;Comment media parsers is a Blogger comment form tool which allows commenter to add &lt;b&gt;Quotes&lt;/b&gt;, &lt;b&gt;Images&lt;/b&gt;, &lt;b&gt;Inline code&lt;/b&gt;, &lt;b&gt;Code block&lt;/b&gt; and &lt;b&gt;Name tag&lt;/b&gt;. By default, it is enabled.&lt;/p&gt;

&lt;p&gt;Comment media parsers can be disabled or enabled by setting the length of &lt;b&gt;Comment media parsers&lt;/b&gt; to 1px or 2px respectively.&lt;/p&gt;

&lt;h3&gt;Allow images&lt;/h3&gt;

&lt;p&gt;This option when enabled, renders &lt;code&gt;&amp;lt;i rel=&#39;image&#39;&amp;gt;image_link_here&amp;lt;/i&amp;gt;&lt;/code&gt; in comment body as &lt;code&gt;&amp;lt;img src=&#39;image_link_here&#39;&amp;gt;&lt;/code&gt; allowing commenters to put images in comments.&lt;/p&gt;

&lt;p&gt;This is enabled by default. If you want to disable or enable it, set the length of &lt;b&gt;Allow Images&lt;/b&gt; to 1px or 2px respectively.&lt;/p&gt;

&lt;h3&gt;Allow links&lt;/h3&gt;

&lt;p&gt;This option when enabled, renders HTML anchor tags &lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt; if it exists in comments body. This can be useful to prevent commenters from putting links in the comment body in order to reduce spam links.&lt;/p&gt;

&lt;p&gt;This is disabled by default. If you want to disable or enable it, set the length of &lt;b&gt;Allow Links&lt;/b&gt; to 1px or 2px respectively.&lt;/p&gt;

&lt;p class=&#39;note&#39;&gt;&lt;b&gt;Note!&lt;/b&gt;&lt;br&gt;
  This option does not effect on author&#39;s comments, allowing them to put anchor tags irrespective of this option is disabled or enabled.
&lt;/p&gt;

&lt;h2&gt;Disqus comments&lt;/h2&gt;

&lt;p&gt;In order to enable Disqus comments, you need to specify your disqus shortname first. Find the following code snippet in Edit HTML and add your disqus shortname.&lt;/p&gt;

&lt;!--[ MultiTabs Syntax Highlighter ]--&gt;
&lt;div class=&#39;pre tabs&#39;&gt;
  &lt;!--[ Active function ]--&gt;
  &lt;input id=&#39;preT1-1&#39; type=&#39;radio&#39; name=&#39;preTab&#39; checked=&#39;&#39;/&gt;
  &lt;input id=&#39;preT1-2&#39; type=&#39;radio&#39; name=&#39;preTab&#39;/&gt;
  
  &lt;!--[ Header/title ]--&gt;
  &lt;div&gt;
    &lt;!--[ Change atribute data-text=&#39;...&#39; to replace title ]--&gt;
    &lt;label for=&#39;preT1-1&#39; data-text=&#39;Before&#39;&gt;&lt;/label&gt;
    &lt;label for=&#39;preT1-2&#39; data-text=&#39;After&#39;&gt;&lt;/label&gt;
  &lt;/div&gt;

  &lt;!--[ Content ]--&gt;
  &lt;pre class=&#39;preC1-1&#39;&gt;&lt;code class=&#39;language-xml&#39;&gt;&amp;lt;Variable name=&quot;disqus.shortname&quot; description=&quot;Disqus shortname&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark data-before=&#39;Disqus shortname&#39;&gt;&lt;/mark&gt;&quot;/&amp;gt;
[!] Disqus shortname
[!] @type {String}
[!] Warning: Don&#39;t add invalid disqus shortname&lt;/code&gt;&lt;/pre&gt;
  &lt;pre class=&#39;preC1-2&#39;&gt;&lt;code class=&#39;language-xml&#39;&gt;&amp;lt;Variable name=&quot;disqus.shortname&quot; description=&quot;Disqus shortname&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark data-before=&#39;Disqus shortname&#39;&gt;xxxxxxxxx&lt;/mark&gt;&quot;/&amp;gt;
[!] Disqus shortname
[!] @type {String}
[!] Warning: Don&#39;t add invalid disqus shortname&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Now coming back to Comments Plugin settings, you can disable or enable Disqus comments by setting the length of &lt;b&gt;Disqus Comments&lt;/b&gt; to 1px or 2px respectively.&lt;/p&gt;

&lt;p class=&#39;note&#39;&gt;If you want only disqus comments to appear, set the lengths of &lt;b&gt;Blogger Comments&lt;/b&gt; and &lt;b&gt;Facebook Comments&lt;/b&gt; to &lt;b&gt;1px&lt;/b&gt; in order to disable Blogger comments and Facebook comments respectively.&lt;/p&gt;

&lt;h2&gt;Facebook comments&lt;/h2&gt;

&lt;p&gt;Facebook comments can be disabled or enabled by setting the length of &lt;b&gt;Facebook Comments&lt;/b&gt; to 1px or 2px respectively.&lt;/p&gt;

&lt;div class=&#39;pRelate&#39;&gt;
  &lt;!--[ Related title ]--&gt;
  &lt;b&gt;Links related to Facebook comments :&lt;/b&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;a href=&#39;https://developers.facebook.com/docs/plugins/comments/&#39; target=&#39;_blank&#39; rel=&#39;nofollow noreferrer noopener&#39;&gt;Facebook comments plugin - Meta for developers&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;
</description><link>https://www.plus-ui.blog/2024/10/comment-settings-and-integrations.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgisMircfIenf1jqkipHH98f7TMBNJ8UuWmwQ0hif4ycBeMaYnUURjew2fv0E4MxiZzl1TZdzsnsSwPzd1x9LjF-8BzKGfhr4DRHlkIsR2DdpQe91nnq5K9x1tA8zjHCrohJqXZpze5Y_MQXMgqSa4pOcz2EvdG2NxIIxwB86e4Q8pvIWVBGgLA4H42Xv4/s72-c/comment-settings-and-integrations.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8128085283179772973.post-5157423626275678228</guid><pubDate>Sun, 27 Oct 2024 15:46:00 +0000</pubDate><atom:updated>2025-10-30T09:21:14.218-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Documentation</category><category domain="http://www.blogger.com/atom/ns#">Plugin</category><title>Pagination Settings</title><description>
&lt;!--[ Explicitly sets post snippet ]--&gt;
&lt;div hidden aria-hidden=&#39;true&#39;&gt;A detailed info on options available for blog and post pagination.&lt;/div&gt;

&lt;!--[ Explicitly sets post thumbnail ]--&gt;
&lt;!--[
  &lt;div class=&#39;separator&#39;&gt;&lt;img src=&#39;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWSAfEVLbVukbrKQxTdHZHdGu00txbfv-DiUextuRZtvTJtBzsNys_wh19COR6eTF4b-t-4O44FxjP1vlhj5d3uvY2u2Tfv80Qe1o7nvXjsol2Nyv3uO0SEAcIznzcXRGcCOOza05wiLCVnAIk04D0mfrGZDF-iN-IQbLORtrVFMdoBB3FRHsVyAhpPGwp/s1280/pagination-settings.png&#39;/&gt;&lt;/div&gt;
]--&gt;

&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;

&lt;p&gt;The pagination plugin can be configured through Blogger Theme Designer.&lt;/p&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;Go to Blogger Theme Designer.&lt;/li&gt;
  &lt;li&gt;Click on Advanced tab.&lt;/li&gt;
  &lt;li&gt;From the dropdown selection list, select &lt;b&gt;Plugin: Pagination&lt;/b&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;Blog pagination&lt;/h2&gt;

&lt;p&gt;Blog pagination allows users to navigate through a list of posts displayed on the homepage, search results, label searches, or blog archives.&lt;/p&gt;

&lt;p&gt;There are four types of blog pagination available: &lt;b&gt;Default&lt;/b&gt;, &lt;b&gt;Infinite&lt;/b&gt;, &lt;b&gt;Numbered&lt;/b&gt;, and &lt;b&gt;Auto&lt;/b&gt;. By default, it is set to &lt;b&gt;Auto&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;The behaviors of these blog pagination types are as follows:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;b&gt;Default&lt;/b&gt;: Displays three buttons for pagination: &lt;b&gt;Newest&lt;/b&gt;, &lt;b&gt;Homepage&lt;/b&gt;, and &lt;b&gt;Oldest&lt;/b&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Infinite&lt;/b&gt;: Displays a single &lt;b&gt;Load more&lt;/b&gt; button that, when clicked, appends the next set of posts to the end of the current list on the same page.&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Numbered&lt;/b&gt;: Available only for all posts and label search pages. Displays a series of numbered buttons (e.g., 1, 2, 3, ...), allowing users to jump to specific pages of posts.&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Auto&lt;/b&gt;: Functions like the default to numbered pagination. If it fails to load the numbered pagination, it falls back to the Infinite pagination method.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To switch between blog pagination types, change the length of &lt;b&gt;Blog Pagination Type&lt;/b&gt; to 1px, 2px, 3px or 4px for Default, Infinite, Numbered or Auto respectively.&lt;/p&gt;

&lt;p class=&#39;note wr&#39;&gt;For AMP variant of pages, always &lt;b&gt;Default&lt;/b&gt; blog pagination type is used.&lt;/p&gt;

&lt;p&gt;The &lt;b&gt;Infinite&lt;/b&gt; blog pagination also has three types: &lt;b&gt;Click&lt;/b&gt;, &lt;b&gt;Scroll&lt;/b&gt; and &lt;b&gt;Click then Scroll&lt;/b&gt;. By default, it is set to &lt;b&gt;Click&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;The behaviors of these infinite pagination types are as follows:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;b&gt;Click&lt;/b&gt;: User needs to click on &lt;b&gt;Load more&lt;/b&gt; button to load more posts.&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Scroll&lt;/b&gt;: Automatically keeps loading more posts whenever user reaches the end of posts list.&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Click then Scroll&lt;/b&gt;: User needs to click on &lt;b&gt;Load more&lt;/b&gt; button for the first time, and next time whenever reaches the end of posts list, automatically loads more posts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To switch between infinite pagination types, change the length of &lt;b&gt;Infinite Pagination Type&lt;/b&gt; to 1px, 2px or 3px for Click, Scroll or Click then Scroll behaviours respectively.&lt;/p&gt;

&lt;h2&gt;Post pagination&lt;/h2&gt;

&lt;p&gt;Post pagination is used display the previous and next article links at the end of the article. By default, it is enabled.&lt;/p&gt;

&lt;p&gt;Post pagination can be disabled or enabled by setting the length of &lt;b&gt;Post Pagination&lt;/b&gt; to 1px or 2px respectively.&lt;/p&gt;
</description><link>https://www.plus-ui.blog/2024/10/pagination-settings.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWSAfEVLbVukbrKQxTdHZHdGu00txbfv-DiUextuRZtvTJtBzsNys_wh19COR6eTF4b-t-4O44FxjP1vlhj5d3uvY2u2Tfv80Qe1o7nvXjsol2Nyv3uO0SEAcIznzcXRGcCOOza05wiLCVnAIk04D0mfrGZDF-iN-IQbLORtrVFMdoBB3FRHsVyAhpPGwp/s72-c/pagination-settings.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8128085283179772973.post-2443566576163038745</guid><pubDate>Sun, 27 Oct 2024 15:45:00 +0000</pubDate><atom:updated>2025-06-23T08:32:42.026-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Documentation</category><category domain="http://www.blogger.com/atom/ns#">Google Adsense</category><title>Google Adsense</title><description>&lt;!--[ Explicitly sets post snippet ]--&gt;
&lt;div hidden=&#39;&#39; aria-hidden=&#39;true&#39;&gt;A step-by-step guide to setup Google Adsense and manual ad units.&lt;/div&gt;

&lt;!--[ Explicitly sets post thumbnail ]--&gt;
&lt;!--[
  &lt;div class=&#39;separator&#39;&gt;&lt;img src=&#39;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFxBe3pYqErQygzKO-tZZfcVsM4inx9V5Y4JbIgg1_x_71LASpsx0wKSY8OpWPBckdiX2xIE4rfr1wM06vdy7-6mUrhz3qki4M1J5Y39PTKaIYR9xDdc2KtXnEdAb9gVxAuzIcplcWzVNcQlNwRTkIfeVwueivIxC1RQqiJnsRuBIXSn-slRcC3fywlYY/s1280/google-adsense-documentation.png&#39;/&gt;&lt;/div&gt;
]--&gt;

&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;

&lt;p&gt;We recommend you to use built-in Adsense plugin to load script instead of adding the script manually because it allows you to put ad units on AMP pages.&lt;/p&gt;

&lt;h2&gt;Setup Adsense plugin&lt;/h2&gt;

&lt;p class=&#39;alert info outline&#39;&gt;&lt;b&gt;Good to know&lt;/b&gt;
  Adsense script will be &lt;b&gt;automatically&lt;/b&gt; loaded if your &lt;b&gt;blog is connected with an Adsense account&lt;/b&gt;.
&lt;/p&gt;

&lt;p&gt;In case your blog is &lt;b&gt;not connected with an Adsense account&lt;/b&gt; or you want to use &lt;b&gt;different publisher id&lt;/b&gt; to load script, you can find the following code snippet in Edit HTML and add your publisher id.&lt;/p&gt;

&lt;!--[ MultiTabs Syntax Highlighter ]--&gt;
&lt;div class=&#39;pre tabs&#39;&gt;
  &lt;!--[ Active function ]--&gt;
  &lt;input id=&#39;preT1-1&#39; type=&#39;radio&#39; name=&#39;preTab1&#39; checked=&#39;&#39;/&gt;
  &lt;input id=&#39;preT1-2&#39; type=&#39;radio&#39; name=&#39;preTab1&#39;/&gt;
  
  &lt;!--[ Header/title ]--&gt;
  &lt;div&gt;
    &lt;!--[ Change atribute data-text=&#39;...&#39; to replace title ]--&gt;
    &lt;label for=&#39;preT1-1&#39; data-text=&#39;Before&#39;&gt;&lt;/label&gt;
    &lt;label for=&#39;preT1-2&#39; data-text=&#39;After&#39;&gt;&lt;/label&gt;
  &lt;/div&gt;

  &lt;!--[ Content ]--&gt;
  &lt;pre class=&#39;preC1-1&#39;&gt;&lt;code class=&#39;language-xml&#39;&gt;&amp;lt;Variable name=&quot;adsense.clientId&quot; description=&quot;Adsense Client Id&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark data-before=&#39;Adsense publisher id here&#39;&gt;&lt;/mark&gt;&quot;/&amp;gt;
[!] Adsense Client Id
[!] @type {String}
[!] If Blank: It will be automated if Blog is connected with Adsense Account
[!] Warning: Only digits are allowed&lt;/code&gt;&lt;/pre&gt;
  &lt;pre class=&#39;preC1-2&#39;&gt;&lt;code class=&#39;language-xml&#39;&gt;&amp;lt;Variable name=&quot;adsense.clientId&quot; description=&quot;Adsense Client Id&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark data-before=&#39;Adsense publisher id here&#39;&gt;0000000000000000&lt;/mark&gt;&quot;/&amp;gt;
[!] Adsense Client Id
[!] @type {String}
[!] If Blank: It will be automated if Blog is connected with Adsense Account
[!] Warning: Only digits are allowed&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p class=&#39;note wr&#39;&gt;Only digits part of publisher id should be added i.e. you only have to add &lt;code&gt;0000000000000000&lt;/code&gt; by removing &lt;code&gt;ca-pub-&lt;/code&gt; from &lt;code&gt;ca-pub-0000000000000000&lt;/code&gt;.&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;Note that &lt;b&gt;you don&#39;t have to add&lt;/b&gt; any of the following code snippets anywhere in the Edit HTML which is recommended by Adsense because it will be automatically added for you with the publisher id specified above.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;script async src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-0000000000000000&quot;
     crossorigin=&quot;anonymous&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;script async custom-element=&quot;amp-auto-ads&quot;
        src=&quot;https://cdn.ampproject.org/v0/amp-auto-ads-0.1.js&quot;&amp;gt;
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;amp-auto-ads type=&quot;adsense&quot;
        data-ad-client=&quot;ca-pub-0000000000000000&quot;&amp;gt;
&amp;lt;/amp-auto-ads&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p class=&#39;alert error outline&#39;&gt;
  &lt;span&gt;Although it is recommended to use AdSense plugin to load script, if you still decided to manually put adsense scripts, you first need to disable the plugin before you do so by setting the length of &lt;b&gt;Enable Script&lt;/b&gt; to 1px in plugin settings.&lt;/span&gt;
&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;When adding manual ad unit, you must &lt;u&gt;&lt;b&gt;remove the marked part&lt;/b&gt; as shown below when using loading type &lt;b&gt;other than Normal&lt;/b&gt;&lt;/u&gt; to prevent loading of script multiple times, &lt;u&gt;otherwise it is optional to remove&lt;/u&gt;.&lt;/p&gt;

&lt;!--[ MultiTabs Syntax Highlighter ]--&gt;
&lt;div class=&#39;pre tabs&#39;&gt;
  &lt;!--[ Active function ]--&gt;
  &lt;input id=&#39;preT2-1&#39; type=&#39;radio&#39; name=&#39;preTab2&#39; checked=&#39;&#39;/&gt;
  &lt;input id=&#39;preT2-2&#39; type=&#39;radio&#39; name=&#39;preTab2&#39;/&gt;
  
  &lt;!--[ Header/title ]--&gt;
  &lt;div&gt;
    &lt;!--[ Change atribute data-text=&#39;...&#39; to replace title ]--&gt;
    &lt;label for=&#39;preT2-1&#39; data-text=&#39;Before&#39;&gt;&lt;/label&gt;
    &lt;label for=&#39;preT2-2&#39; data-text=&#39;After&#39;&gt;&lt;/label&gt;
  &lt;/div&gt;

  &lt;!--[ Content ]--&gt;
  &lt;pre class=&#39;preC2-1&#39;&gt;&lt;code&gt;&lt;mark class=&#39;block red&#39; data-before=&#39;Remove this&#39;&gt;&amp;lt;script async src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-0000000000000000&quot;
     crossorigin=&quot;anonymous&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/mark&gt;
&amp;lt;!-- Ad --&amp;gt;
&amp;lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block&quot;
     data-ad-client=&quot;ca-pub-0000000000000000&quot;
     data-ad-slot=&quot;0000000000&quot;
     data-ad-format=&quot;auto&quot;
     data-full-width-responsive=&quot;true&quot;&amp;gt;&amp;lt;/ins&amp;gt;
&amp;lt;script&amp;gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
  &lt;pre class=&#39;preC2-2&#39;&gt;&lt;code&gt;&amp;lt;!-- Ad --&amp;gt;
&amp;lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block&quot;
     data-ad-client=&quot;ca-pub-0000000000000000&quot;
     data-ad-slot=&quot;0000000000&quot;
     data-ad-format=&quot;auto&quot;
     data-full-width-responsive=&quot;true&quot;&amp;gt;&amp;lt;/ins&amp;gt;
&amp;lt;script&amp;gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;h3&gt;Change script loading behaviour&lt;/h3&gt;

&lt;p&gt;By default script is loaded normally which may impact the PageSpeed Insights Performance. If you don&#39;t want performance to be slow, you can switch between script loading behaviour.&lt;/p&gt;

&lt;p&gt;The plugin provides 4 types of script loading, generally &lt;b&gt;Normal&lt;/b&gt;, &lt;b&gt;Defer&lt;/b&gt;, &lt;b&gt;Lazy&lt;/b&gt; and &lt;b&gt;Defer + Lazy&lt;/b&gt;. The default type is set to &lt;b&gt;Normal&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;Behaviours of these loading types are as follows:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;b&gt;Normal&lt;/b&gt;: Loads script normally by adding it above &lt;code&gt;&amp;lt;/head&amp;gt;&lt;/code&gt;. It impacts PageSpeed Insights performance.&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Defer&lt;/b&gt;: Loads script dynamically after page load. It impacts PageSpeed Insights performance.&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Lazy&lt;/b&gt;: Loads script dynamically on user interaction for the first time and next time it instantly loads script. It doesn&#39;t impact PageSpeed Insights performance.&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Defer + Lazy&lt;/b&gt;: Same as &lt;b&gt;Lazy&lt;/b&gt; but it makes sure page is loaded first. It doesn&#39;t impact PageSpeed performance.&lt;/li&gt;
&lt;/ol&gt;

&lt;p class=&#39;note wr&#39;&gt;When using any script loading type other than &lt;b&gt;Normal&lt;/b&gt;, the earnings may be impacted a little bit as script loading is delayed which in turn delay the loading of ads or sometimes they don&#39;t display. All types have advantages as well as disadvantages, choose it wisely.&lt;/p&gt;

&lt;p&gt;To switch between loading types, follow these steps:&lt;/p&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;Go to &lt;b&gt;Theme Designer&lt;/b&gt;.&lt;/li&gt;
  &lt;li&gt;Click on &lt;b&gt;Advanced&lt;/b&gt; tab.&lt;/li&gt;
  &lt;li&gt;From the dropdown selection list, select &lt;b&gt;Plugin: Google Adsense&lt;/b&gt;.&lt;/li&gt;
  &lt;li&gt;Change the length of &lt;b&gt;Load Type&lt;/b&gt; to 1px, 2px, 3px or 4px for Normal, Defer, Lazy or Lazy + Defer respectively.&lt;/li&gt;
&lt;/ol&gt;

&lt;p class=&#39;note wr&#39;&gt;You must always use &lt;b&gt;Normal&lt;/b&gt; loading type if your site is not yet approved by Google Adsense. It is because other loading type dynamically loads script which cannot be detected by any crawlers resulting in Google Adsense not verifying your site.&lt;/p&gt;

&lt;h2&gt;Disable Adsense plugin&lt;/h2&gt;

&lt;p&gt;If you don&#39;t want to load Adsense script or want to explicitly add script tags. You can disable the Adsense plugin to prevent theme to load script for you.&lt;/p&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;Go to &lt;b&gt;Theme Designer&lt;/b&gt;.&lt;/li&gt;
  &lt;li&gt;Click on &lt;b&gt;Advanced&lt;/b&gt; tab.&lt;/li&gt;
  &lt;li&gt;From the dropdown selection list, select &lt;b&gt;Plugin: Google Adsense&lt;/b&gt;.&lt;/li&gt;
  &lt;li&gt;Change the length of &lt;b&gt;Enable Script&lt;/b&gt; to 1px or 2px to disable or enable respectively.&lt;/li&gt;
&lt;/ol&gt;

&lt;p class=&#39;note wr&#39;&gt;If you intend to disable the Adsense plugin to manually add script tags through Edit HTML, be careful if you have enabled the AMP plugin. We always recommend you to use the Adsense plugin to load Adsense script as it handles both AMP and Non-AMP script.&lt;/p&gt;

&lt;h2&gt;Manual Ad units&lt;/h2&gt;

&lt;p&gt;There are few ad widgets in the form of LinkList in layout from where you can add your ad unit code. You can add both Non-AMP and AMP ad unit through the same widget. These widgets are listed below.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Under Header Ad&lt;/li&gt;
  &lt;li&gt;Sticky Ad&lt;/li&gt;
  &lt;li&gt;Above Pinned Post Ad&lt;/li&gt;
  &lt;li&gt;Above Posts Ad&lt;/li&gt;
  &lt;li&gt;Below Posts Ad&lt;/li&gt;
  &lt;li&gt;Anchor Ad&lt;/li&gt;
&lt;/ul&gt;

&lt;p class=&#39;note&#39;&gt;&lt;b&gt;Tips!&lt;/b&gt;&lt;br&gt;
  The above ad units can be configured to display only on mobile devices by adding &lt;b&gt;[Mobile]&lt;/b&gt; in it&#39;s title, or only on desktop devices by adding &lt;b&gt;[Desktop]&lt;/b&gt; in it&#39;s title. For example, to display anchor ad only on mobile devices, we haved added &lt;b&gt;[Mobile]&lt;/b&gt; in its title making it &lt;b&gt;Anchor Ad [Mobile]&lt;/b&gt;; and to display sticky ad only in desktop devices, we have added &lt;b&gt;[Desktop]&lt;/b&gt; in its title making it &lt;b&gt;Sticky Ad [Desktop]&lt;/b&gt;.&lt;br/&gt;
  The anchor ad can be moved to top by adding &lt;b&gt;[Top]&lt;/b&gt; in its title, i.e. &lt;b&gt;Anchor Ad [Mobile][Top]&lt;/b&gt;.
&lt;/p&gt;

&lt;p class=&#39;note wr&#39;&gt;&lt;b&gt;Warning!&lt;/b&gt;&lt;br&gt;
  There are many manual ad unit widgets and placeholders, that doesn&#39;t mean you have to enable all of them. Make sure your site content and number of manual ads are both balanced.
&lt;/p&gt;

&lt;h3&gt;Non-AMP Ad Unit&lt;/h3&gt;

&lt;p&gt;To add a Non-AMP ad unit in widget, edit the link with Site Name &lt;b&gt;noamp&lt;/b&gt; and put your ad code as its Site URL by replacing existing content. A Non-AMP ad unit code snippet looks something like the following:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!-- Ad --&amp;gt;
&amp;lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block&quot;
     data-ad-client=&quot;ca-pub-0000000000000000&quot;
     data-ad-slot=&quot;0000000000&quot;
     data-ad-format=&quot;auto&quot;
     data-full-width-responsive=&quot;true&quot;&amp;gt;&amp;lt;/ins&amp;gt;
&amp;lt;script&amp;gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;AMP Ad Unit&lt;/h3&gt;

&lt;p&gt;If you are using experimental Linked AMP Lite, you can add Ad Unit for AMP variant of the pages in the ad widgets. To do so, edit the link with Site Name &lt;b&gt;amp&lt;/b&gt; and put your amp ad code as its Site URL by replacing existing content. An AMP ad unit looks something like the following:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;amp-ad width=&quot;100vw&quot; height=&quot;320&quot;
     type=&quot;adsense&quot;
     data-ad-client=&quot;ca-pub-0000000000000000&quot;
     data-ad-slot=&quot;0000000000&quot;
     data-auto-format=&quot;rspv&quot;
     data-full-width=&quot;&quot;&amp;gt;
  &amp;lt;div overflow=&quot;&quot;&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;/amp-ad&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Anchor ad&lt;/h2&gt;

&lt;p&gt;When adding display ad unit code to anchor ad unit widget, make sure attributes &lt;code&gt;data-ad-format=&quot;horizontal&quot;&lt;/code&gt; and &lt;code&gt;data-full-width-responsive=&quot;false&quot;&lt;/code&gt; are set to the &lt;code&gt;&amp;lt;ins&amp;gt;&lt;/code&gt; tag. The Non-AMP ad unit code for anchor ad should look like as below:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!-- Anchor Ads --&amp;gt;
&amp;lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block&quot;
     data-ad-client=&quot;&lt;mark&gt;ca-pub-0000000000000000&lt;/mark&gt;&quot;
     data-ad-slot=&quot;&lt;mark&gt;0000000000&lt;/mark&gt;&quot;
     &lt;mark class=&#39;block green&#39; data-before=&#39;+&#39;&gt;data-ad-format=&quot;horizontal&quot;&lt;/mark&gt;
     &lt;mark class=&#39;block green&#39; data-before=&#39;+&#39;&gt;data-full-width-responsive=&quot;false&quot;&lt;/mark&gt;&amp;gt;&amp;lt;/ins&amp;gt;
&amp;lt;script&amp;gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p class=&#39;note wr&#39;&gt;We recommend you to disable this widget if there are already few ad units available in initial viewport or you have enabled auto anchor ad. While we provide option to add AMP ad unit to this widget, it is recommended that you do not add AMP ad unit in this widget.&lt;/p&gt;

&lt;h2&gt;Post middle ads&lt;/h2&gt;

&lt;p&gt;Post middle ads is used to append ad units in the middle of articles contents automatically. To add an ad unit to this widget, find the LinkList widget with title &lt;b&gt;Post middle ads&lt;/b&gt;. You can either create a new link or edit existing one.&lt;/p&gt;

&lt;p&gt;The &lt;b&gt;Site name&lt;/b&gt; denotes the CSS selector after which the ad unit should be appended. The selector selects all the elements within the context of the parent post body element. For example, if you want to append the ad unit just after the &lt;code&gt;6th&lt;/code&gt; child paragraph, you can use &lt;code&gt;:scope &amp;gt; p:nth-of-type(6)&lt;/code&gt;; or if you want to append the ad unit after every &lt;code&gt;6th&lt;/code&gt; child paragraph, you can use &lt;code&gt;:scope &amp;gt; p:nth-of-type(6n)&lt;/code&gt;.&lt;/p&gt;

&lt;p class=&#39;alert warning outline&#39;&gt;&lt;b&gt;Use Paragraphs&lt;/b&gt;
  We highly recommend you to use &lt;b&gt;Paragraph&lt;/b&gt; over &lt;b&gt;Normal&lt;/b&gt; when writing a paragraph of your post since it&#39;s the only right way. Normal uses &lt;code&gt;div&lt;/code&gt; tags for post text contents while Paragraph uses &lt;code&gt;p&lt;/code&gt; tags. For paragraphs, &lt;code&gt;p&lt;/code&gt; tags are recommended. If you use Normal, the middle post ads will not append ads since we are selecting &lt;code&gt;p&lt;/code&gt; tags and not &lt;code&gt;div&lt;/code&gt;.
&lt;/p&gt;

&lt;p&gt;The &lt;b&gt;Site URL&lt;/b&gt; denotes the ad unit that will be appended. Put your ad unit code in this field, or replace the existing content with your ad unit code if you are editing an existing link.&lt;/p&gt;

&lt;p class=&#39;note wr&#39;&gt;This ad widget is not supported for AMP variant of the pages.&lt;/p&gt;

&lt;h2&gt;In-feed ads&lt;/h2&gt;

&lt;p&gt;These ads are displayed between the list of posts. This ad unit cannot be configured through the layout, but through Edit HTML.&lt;/p&gt;

&lt;p class=&#39;note wr&#39;&gt;This ad unit does not work well everytime, please enable it if you are not concerned about it.&lt;/p&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;Go to Blogger HTML Editor.&lt;/li&gt;
  &lt;li&gt;
    Find the following code snippet and make the changes as shown in second tab.
    &lt;!--[ MultiTabs Syntax Highlighter ]--&gt;
    &lt;div class=&#39;pre tabs&#39;&gt;
      &lt;!--[ Active function ]--&gt;
      &lt;input id=&#39;preT3-1&#39; type=&#39;radio&#39; name=&#39;preTab3&#39; checked=&#39;&#39;/&gt;
      &lt;input id=&#39;preT3-2&#39; type=&#39;radio&#39; name=&#39;preTab3&#39;/&gt;

      &lt;!--[ Header/title ]--&gt;
      &lt;div&gt;
        &lt;!--[ Change atribute data-text=&#39;...&#39; to replace title ]--&gt;
        &lt;label for=&#39;preT3-1&#39; data-text=&#39;Before&#39;&gt;&lt;/label&gt;
        &lt;label for=&#39;preT3-2&#39; data-text=&#39;After&#39;&gt;&lt;/label&gt;
      &lt;/div&gt;

      &lt;!--[ Content ]--&gt;
      &lt;pre class=&#39;preC3-1&#39;&gt;&lt;code&gt;&amp;lt;!--[ In-feed ad ]--&amp;gt;
&amp;lt;b:includable id=&#39;post-adIn&#39;&amp;gt;
  &amp;lt;b:if cond=&#39;!data:amp.active&#39;&amp;gt;

    &lt;mark class=&#39;red&#39; data-before=&#39;Remove this&#39;&gt;&amp;lt;!--&lt;/mark&gt;&amp;lt;div class=&#39;ntry pAdIf show-if-js&#39;&amp;gt;

      &amp;lt;b:comment&amp;gt;[NO AMP] In-feed ad code here&amp;lt;/b:comment&amp;gt;
      &lt;mark data-before=&#39;Replace with Non-AMP ad unit&#39;&gt;&amp;lt;div class=&#39;adB&#39; expr:data-text=&#39;data:.messages.adsGoHere + &amp;amp;quot; (In-feed Ad)&amp;amp;quot;&#39;/&amp;gt;&lt;/mark&gt;

    &amp;lt;/div&amp;gt;&lt;mark class=&#39;red&#39; data-after=&#39;Remove this&#39;&gt;--&amp;gt;&lt;/mark&gt;

  &amp;lt;/b:if&amp;gt;
&amp;lt;/b:includable&amp;gt;&lt;/code&gt;&lt;/pre&gt;
      &lt;pre class=&#39;preC3-2&#39;&gt;&lt;code&gt;&amp;lt;!--[ In-feed ad ]--&amp;gt;
&amp;lt;b:includable id=&#39;post-adIn&#39;&amp;gt;
  &amp;lt;b:if cond=&#39;!data:amp.active&#39;&amp;gt;

    &amp;lt;div class=&#39;ntry pAdIf show-if-js&#39;&amp;gt;

      &amp;lt;b:comment&amp;gt;[NO AMP] In-feed ad code here&amp;lt;/b:comment&amp;gt;
      &lt;mark data-before=&#39;Non-AMP ad unit here&#39;&gt;&amp;lt;ins class=&#39;adsbygoogle&#39; style=&#39;display:block&#39; data-ad-format=&#39;fluid&#39; data-ad-layout-key=&#39;-xx+xx+xx-xx+xx&#39; data-ad-client=&#39;ca-pub-0000000000000000&#39; data-ad-slot=&#39;0000000000&#39;&amp;gt;&amp;lt;/ins&amp;gt;
      &amp;lt;script&amp;gt;(adsbygoogle = window.adsbygoogle || []).push({});&amp;lt;/script&amp;gt;&lt;/mark&gt;

    &amp;lt;/div&amp;gt;

  &amp;lt;/b:if&amp;gt;
&amp;lt;/b:includable&amp;gt;&lt;/code&gt;&lt;/pre&gt;
    &lt;/div&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;Top article ad&lt;/h2&gt;

&lt;p&gt;The top article ad is used to display an ad unit at the top of every artcle. This ad unit cannot be configured through the layout, but through Edit HTML.&lt;/p&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;Go to Blogger HTML Editor.&lt;/li&gt;
  &lt;li&gt;
    Find the following code snippet and make the changes as shown in second tab.
    &lt;!--[ MultiTabs Syntax Highlighter ]--&gt;
    &lt;div class=&#39;pre tabs&#39;&gt;
      &lt;!--[ Active function ]--&gt;
      &lt;input id=&#39;preT4-1&#39; type=&#39;radio&#39; name=&#39;preTab4&#39; checked=&#39;&#39;/&gt;
      &lt;input id=&#39;preT4-2&#39; type=&#39;radio&#39; name=&#39;preTab4&#39;/&gt;

      &lt;!--[ Header/title ]--&gt;
      &lt;div&gt;
        &lt;!--[ Change atribute data-text=&#39;...&#39; to replace title ]--&gt;
        &lt;label for=&#39;preT4-1&#39; data-text=&#39;Before&#39;&gt;&lt;/label&gt;
        &lt;label for=&#39;preT4-2&#39; data-text=&#39;After&#39;&gt;&lt;/label&gt;
      &lt;/div&gt;

      &lt;!--[ Content ]--&gt;
      &lt;pre class=&#39;preC4-1&#39;&gt;&lt;code&gt;&amp;lt;!--[ Top article ad ]--&amp;gt;
&amp;lt;b:includable id=&#39;post-adTop&#39;&amp;gt;
  &amp;lt;b:if cond=&#39;!data:amp.active&#39;&amp;gt;

    &lt;mark class=&#39;red&#39; data-before=&#39;Remove this&#39;&gt;&amp;lt;!--&lt;/mark&gt;&amp;lt;div class=&#39;pAd show-if-js&#39;&amp;gt;

      &amp;lt;b:comment&amp;gt;[NO AMP] Top article ad code here&amp;lt;/b:comment&amp;gt;
      &lt;mark data-before=&#39;Replace with Non-AMP ad unit&#39;&gt;&amp;lt;div class=&#39;adB&#39; expr:data-text=&#39;data:.messages.adsGoHere + &amp;amp;quot; (Top Article Ad)&amp;amp;quot;&#39;/&amp;gt;&lt;/mark&gt;

    &amp;lt;/div&amp;gt;&lt;mark class=&#39;red&#39; data-after=&#39;Remove this&#39;&gt;--&amp;gt;&lt;/mark&gt;

    &amp;lt;b:else/&amp;gt;

    &amp;lt;!--&amp;lt;div class=&#39;pAd&#39;&amp;gt;

      &amp;lt;b:comment&amp;gt;[AMP] Top article ad code here&amp;lt;/b:comment&amp;gt;
      &amp;lt;div class=&#39;adB&#39; expr:data-text=&#39;data:.messages.adsGoHere + &amp;amp;quot; (Top Article Ad)&amp;amp;quot;&#39;/&amp;gt;

    &amp;lt;/div&amp;gt;--&amp;gt;

  &amp;lt;/b:if&amp;gt;
&amp;lt;/b:includable&amp;gt;&lt;/code&gt;&lt;/pre&gt;
      &lt;pre class=&#39;preC4-2&#39;&gt;&lt;code&gt;&amp;lt;!--[ Top article ad ]--&amp;gt;
&amp;lt;b:includable id=&#39;post-adTop&#39;&amp;gt;
  &amp;lt;b:if cond=&#39;!data:amp.active&#39;&amp;gt;

    &amp;lt;div class=&#39;pAd show-if-js&#39;&amp;gt;

      &amp;lt;b:comment&amp;gt;[NO AMP] Top article ad code here&amp;lt;/b:comment&amp;gt;
      &lt;mark data-before=&#39;Non-AMP ad unit here&#39;&gt;&amp;lt;ins class=&#39;adsbygoogle&#39; style=&#39;display:block&#39; data-ad-client=&#39;ca-pub-0000000000000000&#39; data-ad-slot=&#39;0000000000&#39; data-ad-format=&#39;auto&#39; data-full-width-responsive=&#39;true&#39;&amp;gt;&amp;lt;/ins&amp;gt;
      &amp;lt;script&amp;gt;(adsbygoogle = window.adsbygoogle || []).push({});&amp;lt;/script&amp;gt;&lt;/mark&gt;

    &amp;lt;/div&amp;gt;

    &amp;lt;b:else/&amp;gt;

    &amp;lt;!--&amp;lt;div class=&#39;pAd&#39;&amp;gt;

      &amp;lt;b:comment&amp;gt;[AMP] Top article ad code here&amp;lt;/b:comment&amp;gt;
      &amp;lt;div class=&#39;adB&#39; expr:data-text=&#39;data:.messages.adsGoHere + &amp;amp;quot; (Top Article Ad)&amp;amp;quot;&#39;/&amp;gt;

    &amp;lt;/div&amp;gt;--&amp;gt;

  &amp;lt;/b:if&amp;gt;
&amp;lt;/b:includable&amp;gt;&lt;/code&gt;&lt;/pre&gt;
    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;
    If you are using &lt;a href=&#39;./amp.html&#39;&gt;experimental AMP feature&lt;/a&gt;, you can further modify the code to add an AMP ad unit.
    &lt;!--[ MultiTabs Syntax Highlighter ]--&gt;
    &lt;div class=&#39;pre tabs&#39;&gt;
      &lt;!--[ Active function ]--&gt;
      &lt;input id=&#39;preT5-1&#39; type=&#39;radio&#39; name=&#39;preTab5&#39; checked=&#39;&#39;/&gt;
      &lt;input id=&#39;preT5-2&#39; type=&#39;radio&#39; name=&#39;preTab5&#39;/&gt;

      &lt;!--[ Header/title ]--&gt;
      &lt;div&gt;
        &lt;!--[ Change atribute data-text=&#39;...&#39; to replace title ]--&gt;
        &lt;label for=&#39;preT5-1&#39; data-text=&#39;Before&#39;&gt;&lt;/label&gt;
        &lt;label for=&#39;preT5-2&#39; data-text=&#39;After&#39;&gt;&lt;/label&gt;
      &lt;/div&gt;

      &lt;!--[ Content ]--&gt;
      &lt;pre class=&#39;preC5-1&#39;&gt;&lt;code&gt;&amp;lt;!--[ Top article ad ]--&amp;gt;
&amp;lt;b:includable id=&#39;post-adTop&#39;&amp;gt;
  &amp;lt;b:if cond=&#39;!data:amp.active&#39;&amp;gt;

    &amp;lt;div class=&#39;pAd show-if-js&#39;&amp;gt;

      &amp;lt;b:comment&amp;gt;[NO AMP] Top article ad code here&amp;lt;/b:comment&amp;gt;
      &lt;mark data-before=&#39;Non-AMP ad unit here&#39;&gt;&amp;lt;ins class=&#39;adsbygoogle&#39; style=&#39;display:block&#39; data-ad-client=&#39;ca-pub-0000000000000000&#39; data-ad-slot=&#39;0000000000&#39; data-ad-format=&#39;auto&#39; data-full-width-responsive=&#39;true&#39;&amp;gt;&amp;lt;/ins&amp;gt;
      &amp;lt;script&amp;gt;(adsbygoogle = window.adsbygoogle || []).push({});&amp;lt;/script&amp;gt;&lt;/mark&gt;

    &amp;lt;/div&amp;gt;

    &amp;lt;b:else/&amp;gt;

    &lt;mark class=&#39;red&#39; data-before=&#39;Remove this&#39;&gt;&amp;lt;!--&lt;/mark&gt;&amp;lt;div class=&#39;pAd&#39;&amp;gt;

      &amp;lt;b:comment&amp;gt;[AMP] Top article ad code here&amp;lt;/b:comment&amp;gt;
      &lt;mark data-before=&#39;Replace with AMP ad unit&#39;&gt;&amp;lt;div class=&#39;adB&#39; expr:data-text=&#39;data:.messages.adsGoHere + &amp;amp;quot; (Top Article Ad)&amp;amp;quot;&#39;/&amp;gt;&lt;/mark&gt;

    &amp;lt;/div&amp;gt;&lt;mark class=&#39;red&#39; data-after=&#39;Remove this&#39;&gt;--&amp;gt;&lt;/mark&gt;

  &amp;lt;/b:if&amp;gt;
&amp;lt;/b:includable&amp;gt;&lt;/code&gt;&lt;/pre&gt;
      &lt;pre class=&#39;preC5-2&#39;&gt;&lt;code&gt;&amp;lt;!--[ Top article ad ]--&amp;gt;
&amp;lt;b:includable id=&#39;post-adTop&#39;&amp;gt;
  &amp;lt;b:if cond=&#39;!data:amp.active&#39;&amp;gt;

    &amp;lt;div class=&#39;pAd show-if-js&#39;&amp;gt;

      &amp;lt;b:comment&amp;gt;[NO AMP] Top article ad code here&amp;lt;/b:comment&amp;gt;
      &lt;mark data-before=&#39;Non-AMP ad unit here&#39;&gt;&amp;lt;ins class=&#39;adsbygoogle&#39; style=&#39;display:block&#39; data-ad-client=&#39;ca-pub-0000000000000000&#39; data-ad-slot=&#39;0000000000&#39; data-ad-format=&#39;auto&#39; data-full-width-responsive=&#39;true&#39;&amp;gt;&amp;lt;/ins&amp;gt;
      &amp;lt;script&amp;gt;(adsbygoogle = window.adsbygoogle || []).push({});&amp;lt;/script&amp;gt;&lt;/mark&gt;

    &amp;lt;/div&amp;gt;

    &amp;lt;b:else/&amp;gt;

    &amp;lt;div class=&#39;pAd&#39;&amp;gt;

      &amp;lt;b:comment&amp;gt;[AMP] Top article ad code here&amp;lt;/b:comment&amp;gt;
      &lt;mark data-before=&#39;AMP ad unit here&#39;&gt;&amp;lt;amp-ad width=&#39;100vw&#39; height=&#39;320&#39; type=&#39;adsense&#39; data-ad-client=&#39;ca-pub-0000000000000000&#39; data-ad-slot=&#39;0000000000&#39; data-auto-format=&#39;rspv&#39; data-full-width=&#39;&#39;&amp;gt;
        &amp;lt;div overflow=&#39;&#39;&amp;gt;&amp;lt;/div&amp;gt;
      &amp;lt;/amp-ad&amp;gt;&lt;/mark&gt;

    &amp;lt;/div&amp;gt;

  &amp;lt;/b:if&amp;gt;
&amp;lt;/b:includable&amp;gt;&lt;/code&gt;&lt;/pre&gt;
    &lt;/div&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;Bottom article ad&lt;/h2&gt;

&lt;p&gt;The bottom article ad is used to display an ad unit at the bottom of every artcle. This ad unit cannot be configured through the layout, but through Edit HTML.&lt;/p&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;Go to Blogger HTML Editor.&lt;/li&gt;
  &lt;li&gt;
    Find the following code snippet and make the changes as shown in second tab.
    &lt;!--[ MultiTabs Syntax Highlighter ]--&gt;
    &lt;div class=&#39;pre tabs&#39;&gt;
      &lt;!--[ Active function ]--&gt;
      &lt;input id=&#39;preT6-1&#39; type=&#39;radio&#39; name=&#39;preTab6&#39; checked=&#39;&#39;/&gt;
      &lt;input id=&#39;preT6-2&#39; type=&#39;radio&#39; name=&#39;preTab6&#39;/&gt;

      &lt;!--[ Header/title ]--&gt;
      &lt;div&gt;
        &lt;!--[ Change atribute data-text=&#39;...&#39; to replace title ]--&gt;
        &lt;label for=&#39;preT6-1&#39; data-text=&#39;Before&#39;&gt;&lt;/label&gt;
        &lt;label for=&#39;preT6-2&#39; data-text=&#39;After&#39;&gt;&lt;/label&gt;
      &lt;/div&gt;

      &lt;!--[ Content ]--&gt;
      &lt;pre class=&#39;preC6-1&#39;&gt;&lt;code&gt;&amp;lt;!--[ Bottom article ad ]--&amp;gt;
&amp;lt;b:includable id=&#39;post-adBot&#39;&amp;gt;
  &amp;lt;b:if cond=&#39;!data:amp.active&#39;&amp;gt;

    &lt;mark class=&#39;red&#39; data-before=&#39;Remove this&#39;&gt;&amp;lt;!--&lt;/mark&gt;&amp;lt;div class=&#39;pAd show-if-js&#39;&amp;gt;

      &amp;lt;b:comment&amp;gt;[NO AMP] Bottom article ad code here&amp;lt;/b:comment&amp;gt;
      &lt;mark data-before=&#39;Replace with Non-AMP ad unit&#39;&gt;&amp;lt;div class=&#39;adB&#39; expr:data-text=&#39;data:.messages.adsGoHere + &amp;amp;quot; (Bottom Article Ad)&amp;amp;quot;&#39;/&amp;gt;&lt;/mark&gt;

    &amp;lt;/div&amp;gt;&lt;mark class=&#39;red&#39; data-after=&#39;Remove this&#39;&gt;--&amp;gt;&lt;/mark&gt;

    &amp;lt;b:else/&amp;gt;

    &amp;lt;!--&amp;lt;div class=&#39;pAd&#39;&amp;gt;

      &amp;lt;b:comment&amp;gt;[AMP] Bottom article ad code here&amp;lt;/b:comment&amp;gt;
      &amp;lt;div class=&#39;adB&#39; expr:data-text=&#39;data:.messages.adsGoHere + &amp;amp;quot; (Bottom Article Ad)&amp;amp;quot;&#39;/&amp;gt;

    &amp;lt;/div&amp;gt;--&amp;gt;

  &amp;lt;/b:if&amp;gt;
&amp;lt;/b:includable&amp;gt;&lt;/code&gt;&lt;/pre&gt;
      &lt;pre class=&#39;preC6-2&#39;&gt;&lt;code&gt;&amp;lt;!--[ Bottom article ad ]--&amp;gt;
&amp;lt;b:includable id=&#39;post-adBot&#39;&amp;gt;
  &amp;lt;b:if cond=&#39;!data:amp.active&#39;&amp;gt;

    &amp;lt;div class=&#39;pAd show-if-js&#39;&amp;gt;

      &amp;lt;b:comment&amp;gt;[NO AMP] Bottom article ad code here&amp;lt;/b:comment&amp;gt;
      &lt;mark data-before=&#39;Non-AMP ad unit here&#39;&gt;&amp;lt;ins class=&#39;adsbygoogle&#39; style=&#39;display:block&#39; data-ad-client=&#39;ca-pub-0000000000000000&#39; data-ad-slot=&#39;0000000000&#39; data-ad-format=&#39;auto&#39; data-full-width-responsive=&#39;true&#39;&amp;gt;&amp;lt;/ins&amp;gt;
      &amp;lt;script&amp;gt;(adsbygoogle = window.adsbygoogle || []).push({});&amp;lt;/script&amp;gt;&lt;/mark&gt;

    &amp;lt;/div&amp;gt;

    &amp;lt;b:else/&amp;gt;

    &amp;lt;!--&amp;lt;div class=&#39;pAd&#39;&amp;gt;

      &amp;lt;b:comment&amp;gt;[AMP] Bottom article ad code here&amp;lt;/b:comment&amp;gt;
      &amp;lt;div class=&#39;adB&#39; expr:data-text=&#39;data:.messages.adsGoHere + &amp;amp;quot; (Bottom Article Ad)&amp;amp;quot;&#39;/&amp;gt;

    &amp;lt;/div&amp;gt;--&amp;gt;

  &amp;lt;/b:if&amp;gt;
&amp;lt;/b:includable&amp;gt;&lt;/code&gt;&lt;/pre&gt;
    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;
    If you are using &lt;a href=&#39;./amp.html&#39;&gt;experimental AMP feature&lt;/a&gt;, you can further modify the code to add an AMP ad unit.
    &lt;!--[ MultiTabs Syntax Highlighter ]--&gt;
    &lt;div class=&#39;pre tabs&#39;&gt;
      &lt;!--[ Active function ]--&gt;
      &lt;input id=&#39;preT7-1&#39; type=&#39;radio&#39; name=&#39;preTab7&#39; checked=&#39;&#39;/&gt;
      &lt;input id=&#39;preT7-2&#39; type=&#39;radio&#39; name=&#39;preTab7&#39;/&gt;

      &lt;!--[ Header/title ]--&gt;
      &lt;div&gt;
        &lt;!--[ Change atribute data-text=&#39;...&#39; to replace title ]--&gt;
        &lt;label for=&#39;preT7-1&#39; data-text=&#39;Before&#39;&gt;&lt;/label&gt;
        &lt;label for=&#39;preT7-2&#39; data-text=&#39;After&#39;&gt;&lt;/label&gt;
      &lt;/div&gt;

      &lt;!--[ Content ]--&gt;
      &lt;pre class=&#39;preC7-1&#39;&gt;&lt;code&gt;&amp;lt;!--[ Bottom article ad ]--&amp;gt;
&amp;lt;b:includable id=&#39;post-adBot&#39;&amp;gt;
  &amp;lt;b:if cond=&#39;!data:amp.active&#39;&amp;gt;

    &amp;lt;div class=&#39;pAd show-if-js&#39;&amp;gt;

      &amp;lt;b:comment&amp;gt;[NO AMP] Bottom article ad code here&amp;lt;/b:comment&amp;gt;
      &lt;mark data-before=&#39;Non-AMP ad unit here&#39;&gt;&amp;lt;ins class=&#39;adsbygoogle&#39; style=&#39;display:block&#39; data-ad-client=&#39;ca-pub-0000000000000000&#39; data-ad-slot=&#39;0000000000&#39; data-ad-format=&#39;auto&#39; data-full-width-responsive=&#39;true&#39;&amp;gt;&amp;lt;/ins&amp;gt;
      &amp;lt;script&amp;gt;(adsbygoogle = window.adsbygoogle || []).push({});&amp;lt;/script&amp;gt;&lt;/mark&gt;

    &amp;lt;/div&amp;gt;

    &amp;lt;b:else/&amp;gt;

    &lt;mark class=&#39;red&#39; data-before=&#39;Remove this&#39;&gt;&amp;lt;!--&lt;/mark&gt;&amp;lt;div class=&#39;pAd&#39;&amp;gt;

      &amp;lt;b:comment&amp;gt;[AMP] Bottom article ad code here&amp;lt;/b:comment&amp;gt;
      &lt;mark data-before=&#39;Replace with AMP ad unit&#39;&gt;&amp;lt;div class=&#39;adB&#39; expr:data-text=&#39;data:.messages.adsGoHere + &amp;amp;quot; (Bottom Article Ad)&amp;amp;quot;&#39;/&amp;gt;&lt;/mark&gt;

    &amp;lt;/div&amp;gt;&lt;mark class=&#39;red&#39; data-after=&#39;Remove this&#39;&gt;--&amp;gt;&lt;/mark&gt;

  &amp;lt;/b:if&amp;gt;
&amp;lt;/b:includable&amp;gt;&lt;/code&gt;&lt;/pre&gt;
      &lt;pre class=&#39;preC7-2&#39;&gt;&lt;code&gt;&amp;lt;!--[ Bottom article ad ]--&amp;gt;
&amp;lt;b:includable id=&#39;post-adBot&#39;&amp;gt;
  &amp;lt;b:if cond=&#39;!data:amp.active&#39;&amp;gt;

    &amp;lt;div class=&#39;pAd show-if-js&#39;&amp;gt;

      &amp;lt;b:comment&amp;gt;[NO AMP] Bottom article ad code here&amp;lt;/b:comment&amp;gt;
      &lt;mark data-before=&#39;Non-AMP ad unit here&#39;&gt;&amp;lt;ins class=&#39;adsbygoogle&#39; style=&#39;display:block&#39; data-ad-client=&#39;ca-pub-0000000000000000&#39; data-ad-slot=&#39;0000000000&#39; data-ad-format=&#39;auto&#39; data-full-width-responsive=&#39;true&#39;&amp;gt;&amp;lt;/ins&amp;gt;
      &amp;lt;script&amp;gt;(adsbygoogle = window.adsbygoogle || []).push({});&amp;lt;/script&amp;gt;&lt;/mark&gt;

    &amp;lt;/div&amp;gt;

    &amp;lt;b:else/&amp;gt;

    &amp;lt;div class=&#39;pAd&#39;&amp;gt;

      &amp;lt;b:comment&amp;gt;[AMP] Bottom article ad code here&amp;lt;/b:comment&amp;gt;
      &lt;mark data-before=&#39;AMP ad unit here&#39;&gt;&amp;lt;amp-ad width=&#39;100vw&#39; height=&#39;320&#39; type=&#39;adsense&#39; data-ad-client=&#39;ca-pub-0000000000000000&#39; data-ad-slot=&#39;0000000000&#39; data-auto-format=&#39;rspv&#39; data-full-width=&#39;&#39;&amp;gt;
        &amp;lt;div overflow=&#39;&#39;&amp;gt;&amp;lt;/div&amp;gt;
      &amp;lt;/amp-ad&amp;gt;&lt;/mark&gt;

    &amp;lt;/div&amp;gt;

  &amp;lt;/b:if&amp;gt;
&amp;lt;/b:includable&amp;gt;&lt;/code&gt;&lt;/pre&gt;
    &lt;/div&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;Matched content ad&lt;/h2&gt;

&lt;p&gt;The matched content ad is displayed below the Related posts. This ad unit cannot be configured through the layout, but through Edit HTML.&lt;/p&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;Go to Blogger HTML Editor.&lt;/li&gt;
  &lt;li&gt;
    Find the following code snippet and make the changes as shown in second tab.
    &lt;!--[ MultiTabs Syntax Highlighter ]--&gt;
    &lt;div class=&#39;pre tabs&#39;&gt;
      &lt;!--[ Active function ]--&gt;
      &lt;input id=&#39;preT8-1&#39; type=&#39;radio&#39; name=&#39;preTab8&#39; checked=&#39;&#39;/&gt;
      &lt;input id=&#39;preT8-2&#39; type=&#39;radio&#39; name=&#39;preTab8&#39;/&gt;

      &lt;!--[ Header/title ]--&gt;
      &lt;div&gt;
        &lt;!--[ Change atribute data-text=&#39;...&#39; to replace title ]--&gt;
        &lt;label for=&#39;preT8-1&#39; data-text=&#39;Before&#39;&gt;&lt;/label&gt;
        &lt;label for=&#39;preT8-2&#39; data-text=&#39;After&#39;&gt;&lt;/label&gt;
      &lt;/div&gt;

      &lt;!--[ Content ]--&gt;
      &lt;pre class=&#39;preC8-1&#39;&gt;&lt;code&gt;&amp;lt;!--[ Matched content ad ]--&amp;gt;
&amp;lt;b:includable id=&#39;post-relatedAd&#39;&amp;gt;
  &amp;lt;b:if cond=&#39;!data:amp.active&#39;&amp;gt;

    &lt;mark class=&#39;red&#39; data-before=&#39;Remove this&#39;&gt;&amp;lt;!--&lt;/mark&gt;&amp;lt;div class=&#39;rAd relatedPosts show-if-js&#39;&amp;gt;

      &amp;lt;b:comment&amp;gt;[NO AMP] Matched content ad code here&amp;lt;/b:comment&amp;gt;
      &lt;mark data-before=&#39;Replace with Non-AMP ad unit&#39;&gt;&amp;lt;div class=&#39;adB&#39; expr:data-text=&#39;data:.messages.adsGoHere + &amp;amp;quot; (Matched Content Ad)&amp;amp;quot;&#39;/&amp;gt;&lt;/mark&gt;

    &amp;lt;/div&amp;gt;&lt;mark class=&#39;red&#39; data-after=&#39;Remove this&#39;&gt;--&amp;gt;&lt;/mark&gt;

    &amp;lt;b:else/&amp;gt;

    &amp;lt;!--&amp;lt;div class=&#39;rAd relatedPosts&#39;&amp;gt;

      &amp;lt;b:comment&amp;gt;[AMP] Matched content ad code here&amp;lt;/b:comment&amp;gt;
      &amp;lt;div class=&#39;adB&#39; expr:data-text=&#39;data:.messages.adsGoHere + &amp;amp;quot; (Matched Content Ad)&amp;amp;quot;&#39;/&amp;gt;

    &amp;lt;/div&amp;gt;--&amp;gt;

  &amp;lt;/b:if&amp;gt;
&amp;lt;/b:includable&amp;gt;&lt;/code&gt;&lt;/pre&gt;
      &lt;pre class=&#39;preC8-2&#39;&gt;&lt;code&gt;&amp;lt;!--[ Matched content ad ]--&amp;gt;
&amp;lt;b:includable id=&#39;post-relatedAd&#39;&amp;gt;
  &amp;lt;b:if cond=&#39;!data:amp.active&#39;&amp;gt;

    &amp;lt;div class=&#39;rAd relatedPosts show-if-js&#39;&amp;gt;

      &amp;lt;b:comment&amp;gt;[NO AMP] Matched content ad code here&amp;lt;/b:comment&amp;gt;
      &lt;mark data-before=&#39;Non-AMP ad unit here&#39;&gt;&amp;lt;ins class=&#39;adsbygoogle&#39; style=&#39;display:block&#39; data-ad-client=&#39;ca-pub-0000000000000000&#39; data-ad-slot=&#39;0000000000&#39; data-ad-format=&#39;auto&#39; data-full-width-responsive=&#39;true&#39;&amp;gt;&amp;lt;/ins&amp;gt;
      &amp;lt;script&amp;gt;(adsbygoogle = window.adsbygoogle || []).push({});&amp;lt;/script&amp;gt;&lt;/mark&gt;

    &amp;lt;/div&amp;gt;

    &amp;lt;b:else/&amp;gt;

    &amp;lt;!--&amp;lt;div class=&#39;rAd relatedPosts&#39;&amp;gt;

      &amp;lt;b:comment&amp;gt;[AMP] Matched content ad code here&amp;lt;/b:comment&amp;gt;
      &amp;lt;div class=&#39;adB&#39; expr:data-text=&#39;data:.messages.adsGoHere + &amp;amp;quot; (Matched Content Ad)&amp;amp;quot;&#39;/&amp;gt;

    &amp;lt;/div&amp;gt;--&amp;gt;

  &amp;lt;/b:if&amp;gt;
&amp;lt;/b:includable&amp;gt;&lt;/code&gt;&lt;/pre&gt;
    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;
    If you are using &lt;a href=&#39;./amp.html&#39;&gt;experimental AMP feature&lt;/a&gt;, you can further modify the code to add an AMP ad unit.
    &lt;!--[ MultiTabs Syntax Highlighter ]--&gt;
    &lt;div class=&#39;pre tabs&#39;&gt;
      &lt;!--[ Active function ]--&gt;
      &lt;input id=&#39;preT9-1&#39; type=&#39;radio&#39; name=&#39;preTab9&#39; checked=&#39;&#39;/&gt;
      &lt;input id=&#39;preT9-2&#39; type=&#39;radio&#39; name=&#39;preTab9&#39;/&gt;

      &lt;!--[ Header/title ]--&gt;
      &lt;div&gt;
        &lt;!--[ Change atribute data-text=&#39;...&#39; to replace title ]--&gt;
        &lt;label for=&#39;preT9-1&#39; data-text=&#39;Before&#39;&gt;&lt;/label&gt;
        &lt;label for=&#39;preT9-2&#39; data-text=&#39;After&#39;&gt;&lt;/label&gt;
      &lt;/div&gt;

      &lt;!--[ Content ]--&gt;
      &lt;pre class=&#39;preC9-1&#39;&gt;&lt;code&gt;&amp;lt;!--[ Matched content ad ]--&amp;gt;
&amp;lt;b:includable id=&#39;post-relatedAd&#39;&amp;gt;
  &amp;lt;b:if cond=&#39;!data:amp.active&#39;&amp;gt;

    &amp;lt;div class=&#39;rAd relatedPosts show-if-js&#39;&amp;gt;

      &amp;lt;b:comment&amp;gt;[NO AMP] Matched content ad code here&amp;lt;/b:comment&amp;gt;
      &lt;mark data-before=&#39;Non-AMP ad unit here&#39;&gt;&amp;lt;ins class=&#39;adsbygoogle&#39; style=&#39;display:block&#39; data-ad-client=&#39;ca-pub-0000000000000000&#39; data-ad-slot=&#39;0000000000&#39; data-ad-format=&#39;auto&#39; data-full-width-responsive=&#39;true&#39;&amp;gt;&amp;lt;/ins&amp;gt;
      &amp;lt;script&amp;gt;(adsbygoogle = window.adsbygoogle || []).push({});&amp;lt;/script&amp;gt;&lt;/mark&gt;

    &amp;lt;/div&amp;gt;

    &amp;lt;b:else/&amp;gt;

    &lt;mark class=&#39;red&#39; data-before=&#39;Remove this&#39;&gt;&amp;lt;!--&lt;/mark&gt;&amp;lt;div class=&#39;rAd relatedPosts&#39;&amp;gt;

      &amp;lt;b:comment&amp;gt;[AMP] Matched content ad code here&amp;lt;/b:comment&amp;gt;
      &lt;mark data-before=&#39;Replace with AMP ad unit&#39;&gt;&amp;lt;div class=&#39;adB&#39; expr:data-text=&#39;data:.messages.adsGoHere + &amp;amp;quot; (Matched Content Ad)&amp;amp;quot;&#39;/&amp;gt;&lt;/mark&gt;

    &amp;lt;/div&amp;gt;&lt;mark class=&#39;red&#39; data-after=&#39;Remove this&#39;&gt;--&amp;gt;&lt;/mark&gt;

  &amp;lt;/b:if&amp;gt;
&amp;lt;/b:includable&amp;gt;&lt;/code&gt;&lt;/pre&gt;
      &lt;pre class=&#39;preC9-2&#39;&gt;&lt;code&gt;&amp;lt;!--[ Matched content ad ]--&amp;gt;
&amp;lt;b:includable id=&#39;post-relatedAd&#39;&amp;gt;
  &amp;lt;b:if cond=&#39;!data:amp.active&#39;&amp;gt;

    &amp;lt;div class=&#39;rAd relatedPosts show-if-js&#39;&amp;gt;

      &amp;lt;b:comment&amp;gt;[NO AMP] Matched content ad code here&amp;lt;/b:comment&amp;gt;
      &lt;mark data-before=&#39;Non-AMP ad unit here&#39;&gt;&amp;lt;ins class=&#39;adsbygoogle&#39; style=&#39;display:block&#39; data-ad-client=&#39;ca-pub-0000000000000000&#39; data-ad-slot=&#39;0000000000&#39; data-ad-format=&#39;auto&#39; data-full-width-responsive=&#39;true&#39;&amp;gt;&amp;lt;/ins&amp;gt;
      &amp;lt;script&amp;gt;(adsbygoogle = window.adsbygoogle || []).push({});&amp;lt;/script&amp;gt;&lt;/mark&gt;

    &amp;lt;/div&amp;gt;

    &amp;lt;b:else/&amp;gt;

    &amp;lt;div class=&#39;rAd relatedPosts&#39;&amp;gt;

      &amp;lt;b:comment&amp;gt;[AMP] Matched content ad code here&amp;lt;/b:comment&amp;gt;
      &lt;mark data-before=&#39;AMP ad unit here&#39;&gt;&amp;lt;amp-ad width=&#39;100vw&#39; height=&#39;320&#39; type=&#39;adsense&#39; data-ad-client=&#39;ca-pub-0000000000000000&#39; data-ad-slot=&#39;0000000000&#39; data-auto-format=&#39;rspv&#39; data-full-width=&#39;&#39;&amp;gt;
        &amp;lt;div overflow=&#39;&#39;&amp;gt;&amp;lt;/div&amp;gt;
      &amp;lt;/amp-ad&amp;gt;&lt;/mark&gt;

    &amp;lt;/div&amp;gt;

  &amp;lt;/b:if&amp;gt;
&amp;lt;/b:includable&amp;gt;&lt;/code&gt;&lt;/pre&gt;
    &lt;/div&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;Best practices&lt;/h2&gt;

&lt;p&gt;Before you integrate Adsense on your site, we recommend you to gather more information and read about ad placements and policies related to it.&lt;/p&gt;

&lt;!--[ Accordion (Grouped) ]--&gt;
&lt;div class=&#39;showH&#39;&gt;
  &lt;details class=&#39;ac&#39;&gt;
    &lt;summary&gt;Adsense policies&lt;/summary&gt;
    &lt;div&gt;
      &lt;p&gt;We recommend you to read &lt;a href=&#39;https://support.google.com/adsense/answer/48182&#39; target=&#39;_blank&#39; rel=&#39;noreferrer nofollow noopener&#39;&gt;AdSense Program policies&lt;/a&gt; and &lt;a href=&#39;https://support.google.com/adsense/answer/1346295&#39; target=&#39;_blank&#39; rel=&#39;noreferrer nofollow noopener&#39;&gt;Ad placement policies&lt;/a&gt;.&lt;/p&gt;
    &lt;/div&gt;
  &lt;/details&gt;
  &lt;details class=&#39;ac&#39;&gt;
    &lt;summary&gt;Avoid custom parallax effects ads&lt;/summary&gt;
    &lt;div&gt;
      &lt;p&gt;AdSense policies require that ads are placed in a standard, non-intrusive manner. Parallax effects could be seen as manipulating ad placement to draw excessive attention, which may violate the policy of ads blending naturally with content without overly distracting users.&lt;/p&gt;
    &lt;/div&gt;
  &lt;/details&gt;
  &lt;details class=&#39;ac&#39;&gt;
    &lt;summary&gt;Do not follow unofficial guides blindly&lt;/summary&gt;
    &lt;div&gt;
      &lt;p&gt;There are many tutorials available on internet related to Adsense. Before you follow them or implement any codes from there, make sure they are both engaging and policy-compliant.&lt;/p&gt;
    &lt;/div&gt;
  &lt;/details&gt;
&lt;/div&gt;
</description><link>https://www.plus-ui.blog/2024/10/google-adsense.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFxBe3pYqErQygzKO-tZZfcVsM4inx9V5Y4JbIgg1_x_71LASpsx0wKSY8OpWPBckdiX2xIE4rfr1wM06vdy7-6mUrhz3qki4M1J5Y39PTKaIYR9xDdc2KtXnEdAb9gVxAuzIcplcWzVNcQlNwRTkIfeVwueivIxC1RQqiJnsRuBIXSn-slRcC3fywlYY/s72-c/google-adsense-documentation.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8128085283179772973.post-5058819053642063955</guid><pubDate>Sun, 27 Oct 2024 15:44:00 +0000</pubDate><atom:updated>2025-06-23T08:32:25.468-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Documentation</category><category domain="http://www.blogger.com/atom/ns#">Google Analytics</category><title>Google Analytics</title><description>&lt;!--[ Explicitly sets post snippet ]--&gt;
&lt;div hidden=&#39;&#39; aria-hidden=&#39;true&#39;&gt;A step-by-step guide to setup Google Analytics.&lt;/div&gt;

&lt;!--[ Explicitly sets post thumbnail ]--&gt;
&lt;!--[
  &lt;div class=&#39;separator&#39;&gt;&lt;img src=&#39;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNaeqr7sPR_4P_c8CrNdafhViVeoMeEv3eoRw-qU_I7a4bfCAO8eGCX4GAOiFVWlG-jcjARwtPBtjfgQdk9fhfbrwAsR-C9Vdz7pdcq2Cd3xVjjsBzzxs3c0PWBxG-acDyh6bPBRyRYbBTDgi688FWbZaRSEhaTUAfyEtq_8m_cN4jd97An7abw8mIWOY/s1280/google-analytics-documentation.png&#39;/&gt;&lt;/div&gt;
]--&gt;

&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;

&lt;h2&gt;Setup Analytics plugin&lt;/h2&gt;

&lt;p&gt;Analytics script will be automatically loaded if Google Analytics Measurement ID is set in Blog Settings.&lt;/p&gt;

&lt;p&gt;You can either add your Google Analytics 4 Measurement ID through Blog Settings or you can explicitly set it by finding the following code snippet in Edit HTML and add your measurement id.&lt;/p&gt;

&lt;!--[ MultiTabs Syntax Highlighter ]--&gt;
&lt;div class=&#39;pre tabs&#39;&gt;
  &lt;!--[ Active function ]--&gt;
  &lt;input id=&#39;preT1-1&#39; type=&#39;radio&#39; name=&#39;preTab&#39; checked=&#39;&#39;/&gt;
  &lt;input id=&#39;preT1-2&#39; type=&#39;radio&#39; name=&#39;preTab&#39;/&gt;
  
  &lt;!--[ Header/title ]--&gt;
  &lt;div&gt;
    &lt;!--[ Change atribute data-text=&#39;...&#39; to replace title ]--&gt;
    &lt;label for=&#39;preT1-1&#39; data-text=&#39;Before&#39;&gt;&lt;/label&gt;
    &lt;label for=&#39;preT1-2&#39; data-text=&#39;After&#39;&gt;&lt;/label&gt;
  &lt;/div&gt;

  &lt;!--[ Content ]--&gt;
  &lt;pre class=&#39;preC1-1&#39;&gt;&lt;code class=&#39;language-xml&#39;&gt;&amp;lt;Variable name=&quot;analytics.accountNumber&quot; description=&quot;Google Analytics GA-4 Tracking Code&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark data-before=&#39;Measurement id here&#39;&gt;&lt;/mark&gt;&quot;/&amp;gt;
[!] Google Analytics GA-4 Tracking Code
[!] @type {String}
[!] If Blank: Tracking Code is added from Blogger Blog Settings
[!] Example: G-0000000H00&lt;/code&gt;&lt;/pre&gt;
  &lt;pre class=&#39;preC1-2&#39;&gt;&lt;code class=&#39;language-xml&#39;&gt;&amp;lt;Variable name=&quot;analytics.accountNumber&quot; description=&quot;Google Analytics GA-4 Tracking Code&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark data-before=&#39;Measurement id here&#39;&gt;G-XXXXXXXXXX&lt;/mark&gt;&quot;/&amp;gt;
[!] Google Analytics GA-4 Tracking Code
[!] @type {String}
[!] If Blank: Tracking Code is added from Blogger Blog Settings
[!] Example: G-0000000H00&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Note that &lt;b&gt;you don&#39;t have to add&lt;/b&gt; any of the following code snippets anywhere in the Edit HTML which is recommended by Analytics because it will be automatically added for you with the measurement id specified above.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!-- Google tag (gtag.js) --&amp;gt;
&amp;lt;script async src=&quot;https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script&amp;gt;
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag(&#39;js&#39;, new Date());

  gtag(&#39;config&#39;, &#39;G-XXXXXXXXXX&#39;);
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Change script loading behaviour&lt;/h3&gt;

&lt;p&gt;By default script is loaded normally which may impact the PageSpeed Insights Performance. If you don&#39;t want performance to be slow, you can switch between script loading behaviour.&lt;/p&gt;

&lt;p&gt;The plugin provides 4 types of script loading, generally &lt;b&gt;Normal&lt;/b&gt;, &lt;b&gt;Defer&lt;/b&gt;, &lt;b&gt;Lazy&lt;/b&gt; and &lt;b&gt;Defer + Lazy&lt;/b&gt;. The default type is set to &lt;b&gt;Normal&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;Behaviours of these loading types are as follows:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;b&gt;Normal&lt;/b&gt;: Loads script normally by adding it above &lt;code&gt;&amp;lt;/head&amp;gt;&lt;/code&gt;. It impacts PageSpeed Insights performance.&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Defer&lt;/b&gt;: Loads script dynamically after page load. It impacts PageSpeed Insights performance.&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Lazy&lt;/b&gt;: Loads script dynamically on user interaction for the first time and next time it instantly loads script. It doesn&#39;t impact PageSpeed Insights performance.&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Defer + Lazy&lt;/b&gt;: Same as &lt;b&gt;Lazy&lt;/b&gt; but it makes sure page is loaded first. It doesn&#39;t impact PageSpeed performance.&lt;/li&gt;
&lt;/ol&gt;

&lt;p class=&#39;note wr&#39;&gt;When using any script loading type other than &lt;b&gt;Normal&lt;/b&gt;, it may sometimes not track events as script loading is delayed, not only that user visiting site for the first time need to interact with the page to load script in case of Lazy and Defer + Lazy types. All types have advantages as well as disadvantages, choose it wisely.&lt;/p&gt;

&lt;p&gt;To switch between loading types, follow these steps:&lt;/p&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;Go to &lt;b&gt;Theme Designer&lt;/b&gt;.&lt;/li&gt;
  &lt;li&gt;Click on &lt;b&gt;Advanced&lt;/b&gt; tab.&lt;/li&gt;
  &lt;li&gt;From the dropdown selection list, select &lt;b&gt;Plugin: Google Analytics&lt;/b&gt;.&lt;/li&gt;
  &lt;li&gt;Change the length of &lt;b&gt;Load Type&lt;/b&gt; to 1px, 2px, 3px or 4px for Normal, Defer, Lazy or Lazy + Defer respectively.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;Disable Analytics plugin&lt;/h2&gt;

&lt;p&gt;If you don&#39;t want to load Analytics script or want to explicitly add script tags. You can disable the Analytics plugin to prevent theme to load script for you.&lt;/p&gt;

&lt;p&gt;Go to &lt;b&gt;Theme Designer&lt;/b&gt; &amp;gt; &lt;b&gt;Advanced&lt;/b&gt; &amp;gt; &lt;b&gt;Plugin: Google Analytics&lt;/b&gt; and set &lt;b&gt;Enable Script&lt;/b&gt; to &lt;b&gt;1px&lt;/b&gt; in order to disable in-built Analytics plugin.&lt;/p&gt;

&lt;p class=&#39;note wr&#39;&gt;If you intend to disable the Analytics plugin to manually add script tags through Edit HTML, be careful if you have enabled the AMP plugin. We always recommend you to use the Analytics plugin to load Analytics script as it handles both AMP and Non-AMP script.&lt;/p&gt;
</description><link>https://www.plus-ui.blog/2024/10/google-analytics.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNaeqr7sPR_4P_c8CrNdafhViVeoMeEv3eoRw-qU_I7a4bfCAO8eGCX4GAOiFVWlG-jcjARwtPBtjfgQdk9fhfbrwAsR-C9Vdz7pdcq2Cd3xVjjsBzzxs3c0PWBxG-acDyh6bPBRyRYbBTDgi688FWbZaRSEhaTUAfyEtq_8m_cN4jd97An7abw8mIWOY/s72-c/google-analytics-documentation.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8128085283179772973.post-749405295719439046</guid><pubDate>Sun, 27 Oct 2024 15:43:00 +0000</pubDate><atom:updated>2025-06-23T08:32:11.368-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Documentation</category><category domain="http://www.blogger.com/atom/ns#">Plugin</category><title>Google Translate</title><description>&lt;!--[ Explicitly sets post snippet ]--&gt;
&lt;div hidden=&#39;&#39; aria-hidden=&#39;true&#39;&gt;A step-by-step guide to setup Google Translate.&lt;/div&gt;

&lt;!--[ Explicitly sets post thumbnail ]--&gt;
&lt;!--[
  &lt;div class=&#39;separator&#39;&gt;&lt;img src=&#39;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNi7s82MENhZ1jCyrjy40zWc0Th5KoOz1Q7c9eWKH6smXdaDXrEZVavI5pdmt94j3YgOeIlnrcSG-Sjbtk_DVpd2E2J9F1CEJZB3Ue5o1gNVcEKfMAxrKiKQVlInO4DiQ-Fvf_6VeZL4xktYBoHiX5ECCZv0Ehe1zYQKPE2Pvxw76gEcuI6qC0rVanzBc/s1280/google-translate-documentation.png&#39;/&gt;&lt;/div&gt;
]--&gt;

&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;

&lt;p class=&#39;note wr&#39;&gt;
  &lt;b&gt;🧪 Experimental feature!&lt;/b&gt;&lt;br&gt;
  &lt;u&gt;Google Translate&lt;/u&gt; plugin is an experimental feature. We need your feedback to improve it further and make it stable.
&lt;/p&gt;

&lt;p&gt;Google Translate widget can be customized through Layout.&lt;/p&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;Go to Blogger Layout.&lt;/li&gt;
  &lt;li&gt;Find the LinkList widget with title &lt;b&gt;Google Translate&lt;/b&gt;, if you have not renamed it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Good to know:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;The language specified in Blog Settings will be considered as &lt;b&gt;Page Language&lt;/b&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;System language&lt;/h2&gt;

&lt;p&gt;It can be used to automatically select the language based on browser language.&lt;/p&gt;

&lt;p&gt;To add it in the language selection list, create a link or edit existing link in the widget having Site name &lt;code&gt;system&lt;/code&gt; with the button text as its Site URL. You can use &lt;code&gt;#&lt;/code&gt; or &lt;code&gt;custom_text&lt;/code&gt; in Site URL to use default text, i.e. System Language.&lt;/p&gt;

&lt;h2&gt;Default language&lt;/h2&gt;

&lt;p&gt;When system language is enabled, you can choose whether page language or system language should be used as default.&lt;/p&gt;

&lt;p&gt;To set page language or system language as default, create a link or edit existing link in the widget having Site name &lt;code&gt;default&lt;/code&gt; with &lt;code&gt;page&lt;/code&gt; or &lt;code&gt;system&lt;/code&gt; as its Site URL respectively.&lt;/p&gt;

&lt;h2&gt;Language list&lt;/h2&gt;

&lt;p&gt;To add a new language to the language selection list, you can create a link with language code as its &lt;b&gt;Site name&lt;/b&gt; and language name as its &lt;b&gt;Site URL&lt;/b&gt;. You can also use &lt;code&gt;#&lt;/code&gt; or &lt;code&gt;custom_text&lt;/code&gt; in Site URL to use default text. Following is a list of available language codes along with its respective names.&lt;/p&gt;

&lt;div id=&#39;language-list&#39;&gt;&lt;/div&gt;

&lt;!--[ Accordion ]--&gt;
&lt;details class=&#39;ac&#39;&gt;
  &lt;summary&gt;How to prevent a section from being translated?&lt;/summary&gt;
  &lt;div&gt;
    &lt;p&gt;To prevent an element from being translated by Google Translate, simply add a classname &lt;code&gt;notranslate&lt;/code&gt; to it.&lt;/p&gt;
    &lt;p&gt;For an example, following element will not be translated:&lt;/p&gt;
    &lt;pre&gt;&lt;code&gt;&amp;lt;div class=&#39;notranslate&#39;&amp;gt;
  &amp;lt;p&amp;gt;This paragraph will not be translated.&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/details&gt;

&lt;script&gt;
&quot;use strict&quot;;((window, document) =&gt; {
  const element = document.getElementById(&quot;language-list&quot;);
  const languages = {af:&quot;Afrikaans&quot;,sq:&quot;Albanian&quot;,am:&quot;Amharic&quot;,ar:&quot;Arabic&quot;,hy:&quot;Armenian&quot;,as:&quot;Assamese&quot;,ay:&quot;Aymara&quot;,az:&quot;Azerbaijani&quot;,bm:&quot;Bambara&quot;,eu:&quot;Basque&quot;,be:&quot;Belarusian&quot;,bn:&quot;Bengali&quot;,bho:&quot;Bhojpuri&quot;,bs:&quot;Bosnian&quot;,bg:&quot;Bulgarian&quot;,ca:&quot;Catalan&quot;,ceb:&quot;Cebuano&quot;,ny:&quot;Chichewa&quot;,&quot;zh-CN&quot;:&quot;Chinese (Simplified)&quot;,&quot;zh-TW&quot;:&quot;Chinese (Traditional)&quot;,co:&quot;Corsican&quot;,hr:&quot;Croatian&quot;,cs:&quot;Czech&quot;,da:&quot;Danish&quot;,dv:&quot;Dhivehi&quot;,doi:&quot;Dogri&quot;,nl:&quot;Dutch&quot;,en:&quot;English&quot;,eo:&quot;Esperanto&quot;,et:&quot;Estonian&quot;,ee:&quot;Ewe&quot;,tl:&quot;Filipino&quot;,fi:&quot;Finnish&quot;,fr:&quot;French&quot;,fy:&quot;Frisian&quot;,gl:&quot;Galician&quot;,ka:&quot;Georgian&quot;,de:&quot;German&quot;,el:&quot;Greek&quot;,gn:&quot;Guarani&quot;,gu:&quot;Gujarati&quot;,ht:&quot;Haitian Creole&quot;,ha:&quot;Hausa&quot;,haw:&quot;Hawaiian&quot;,iw:&quot;Hebrew&quot;,hi:&quot;Hindi&quot;,hmn:&quot;Hmong&quot;,hu:&quot;Hungarian&quot;,is:&quot;Icelandic&quot;,ig:&quot;Igbo&quot;,ilo:&quot;Ilocano&quot;,id:&quot;Indonesian&quot;,ga:&quot;Irish Gaelic&quot;,it:&quot;Italian&quot;,ja:&quot;Japanese&quot;,jw:&quot;Javanese&quot;,kn:&quot;Kannada&quot;,kk:&quot;Kazakh&quot;,km:&quot;Khmer&quot;,rw:&quot;Kinyarwanda&quot;,gom:&quot;Konkani&quot;,ko:&quot;Korean&quot;,kri:&quot;Krio&quot;,ku:&quot;Kurdish (Kurmanji)&quot;,ckb:&quot;Kurdish (Sorani)&quot;,ky:&quot;Kyrgyz&quot;,lo:&quot;Lao&quot;,la:&quot;Latin&quot;,lv:&quot;Latvian&quot;,ln:&quot;Lingala&quot;,lt:&quot;Lithuanian&quot;,lg:&quot;Luganda&quot;,lb:&quot;Luxembourgish&quot;,mk:&quot;Macedonian&quot;,mai:&quot;Maithili&quot;,mg:&quot;Malagasy&quot;,ms:&quot;Malay&quot;,ml:&quot;Malayalam&quot;,mt:&quot;Maltese&quot;,mi:&quot;Maori&quot;,mr:&quot;Marathi&quot;,&quot;mni-Mtei&quot;:&quot;Meiteilon (Manipuri)&quot;,lus:&quot;Mizo&quot;,mn:&quot;Mongolian&quot;,my:&quot;Myanmar (Burmese)&quot;,ne:&quot;Nepali&quot;,no:&quot;Norwegian&quot;,or:&quot;Odia (Oriya)&quot;,om:&quot;Oromo&quot;,ps:&quot;Pashto&quot;,fa:&quot;Persian&quot;,pl:&quot;Polish&quot;,pt:&quot;Portuguese&quot;,pa:&quot;Punjabi&quot;,qu:&quot;Quechua&quot;,ro:&quot;Romanian&quot;,ru:&quot;Russian&quot;,sm:&quot;Samoan&quot;,sa:&quot;Sanskrit&quot;,gd:&quot;Scots Gaelic&quot;,nso:&quot;Sepedi&quot;,sr:&quot;Serbian&quot;,st:&quot;Sesotho&quot;,sn:&quot;Shona&quot;,sd:&quot;Sindhi&quot;,si:&quot;Sinhala&quot;,sk:&quot;Slovak&quot;,sl:&quot;Slovenian&quot;,so:&quot;Somali&quot;,es:&quot;Spanish&quot;,su:&quot;Sundanese&quot;,sw:&quot;Swahili&quot;,sv:&quot;Swedish&quot;,tg:&quot;Tajik&quot;,ta:&quot;Tamil&quot;,tt:&quot;Tatar&quot;,te:&quot;Telugu&quot;,th:&quot;Thai&quot;,ti:&quot;Tigrinya&quot;,ts:&quot;Tsonga&quot;,tr:&quot;Turkish&quot;,tk:&quot;Turkmen&quot;,ak:&quot;Twi&quot;,uk:&quot;Ukrainian&quot;,ur:&quot;Urdu&quot;,ug:&quot;Uyghur&quot;,uz:&quot;Uzbek&quot;,vi:&quot;Vietnamese&quot;,cy:&quot;Welsh&quot;,xh:&quot;Xhosa&quot;,yi:&quot;Yiddish&quot;,yo:&quot;Yoruba&quot;,zu:&quot;Zulu&quot;};
  let htmlStr = &quot;&lt;div class=&#39;table bordered stripped sticky&#39;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Code&lt;/th&gt;&lt;th&gt;Language&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&quot;;
  for (const code in languages) {
    const language = languages[code];
    htmlStr += `&lt;tr&gt;&lt;td&gt;&lt;code data-highlight=&#39;false&#39;&gt;${code}&lt;/code&gt;&lt;/td&gt;&lt;td&gt;${language}&lt;/td&gt;&lt;/tr&gt;`;
  }
  htmlStr += &quot;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&quot;;
  element.innerHTML = htmlStr;
})(window, document);
&lt;/script&gt;</description><link>https://www.plus-ui.blog/2024/10/google-translate.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNi7s82MENhZ1jCyrjy40zWc0Th5KoOz1Q7c9eWKH6smXdaDXrEZVavI5pdmt94j3YgOeIlnrcSG-Sjbtk_DVpd2E2J9F1CEJZB3Ue5o1gNVcEKfMAxrKiKQVlInO4DiQ-Fvf_6VeZL4xktYBoHiX5ECCZv0Ehe1zYQKPE2Pvxw76gEcuI6qC0rVanzBc/s72-c/google-translate-documentation.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8128085283179772973.post-1075636287240610719</guid><pubDate>Sun, 27 Oct 2024 15:42:00 +0000</pubDate><atom:updated>2025-06-23T08:31:52.506-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Documentation</category><category domain="http://www.blogger.com/atom/ns#">PWA</category><title>Progressive Web App</title><description>&lt;!--[ Explicitly sets post snippet ]--&gt;
&lt;div hidden=&#39;&#39; aria-hidden=&#39;true&#39;&gt;Enable in-built Progressive Web App plugin.&lt;/div&gt;

&lt;!--[ Explicitly sets post thumbnail ]--&gt;
&lt;!--[
  &lt;div class=&#39;separator&#39;&gt;&lt;img src=&#39;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiXyXADzkvPudRAkqb_2oZNMeTNOPbbFTMqsIHzoW7lHZqUQFAPHsFVEBZula6BAnGtsjzbhgFl9GBj6Q0GhdeUzz8rVuxjVYj5iX6ZeBA-5IZIinw4AVVOSRXZKYeMtj8HdvUQzw7xdLZ-lQn3QtC-w_hpvWzuKnnBm9bDVvqZxubU6iwwknJwif602Y/s1280/pwa-plugin-documentation.png&#39;/&gt;&lt;/div&gt;
]--&gt;

&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;

&lt;p class=&#39;note&#39;&gt;
  &lt;b&gt;Progressive Web App plugin is now stable!&lt;/b&gt;&lt;br&gt;
  Initially introduced as an experimental feature in v3.0.0, the PWA plugin has been fully stabilized starting from v3.2.0. We still welcome your feedback to make it even better!
&lt;/p&gt;

&lt;p&gt;Blogger doesn&#39;t provide a native way to enable Progressive Web App as we cannot upload assets such as &lt;code&gt;manifest.json&lt;/code&gt;, &lt;code&gt;serviceworker.js&lt;/code&gt;, etc.&lt;/p&gt;

&lt;p&gt;Our theme is the first in Blogger to natively implement Progressive Web App (PWA) functionality, proudly eliminating the need for third-party services, with only the Offline Page and Push Notifications not supported.&lt;/p&gt;

&lt;div class=&#39;pRelate&#39;&gt;
  &lt;b&gt;Checkout these Blogger community threads regarding PWA:&lt;/b&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;a href=&#39;https://support.google.com/blogger/thread/3184773/is-it-possible-that-i-can-build-progressive-web-app-for-my-blogger-blog&#39; rel=&#39;nofollow noreferrer&#39; target=&#39;_blank&#39;&gt;Is it possible that i can build progressive web app for my Blogger blog&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#39;https://support.google.com/blogger/thread/79548841/please-request-for-progressive-web-app&#39; rel=&#39;nofollow noreferrer&#39; target=&#39;_blank&#39;&gt;Please Request For Progressive Web App&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#39;https://support.google.com/blogger/thread/18627131/why-blogger-not-have-plugins-option-for-easy-integration-of-new-things-like-pwa-amp-etc&#39; rel=&#39;nofollow noreferrer&#39; target=&#39;_blank&#39;&gt;Why blogger not have plugins option for easy integration of new things like PWA, AMP etc?&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;

&lt;p&gt;When using our theme, you can enable and configure it for your Blog with ease.&lt;/p&gt;

&lt;h2&gt;What is Progressive Web App?&lt;/h2&gt;

&lt;p&gt;A &lt;b&gt;Progressive Web App (PWA)&lt;/b&gt; is a type of web application that offers a native app-like experience while being accessible through a web browser. PWAs are designed to combine the best features of web and mobile apps, providing fast performance, offline functionality, and a responsive interface. Key features of PWAs include:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;b&gt;Installable&lt;/b&gt;: Users can add a PWA to their home screen without needing to go through an app store.&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Responsiveness&lt;/b&gt;: PWAs adapt seamlessly to different devices and screen sizes, from desktops to smartphones.&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Fast and Reliable&lt;/b&gt;: PWAs load quickly and offer smooth performance, even on slow or unreliable networks.&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Offline Capability&lt;/b&gt;: Using service workers, PWAs can cache content, allowing users to access the app even without an internet connection.&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Push Notifications&lt;/b&gt;: PWAs can send notifications, similar to native mobile apps.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;PWAs aim to enhance the user experience by blending the advantages of web apps (easy access and updates) with the functionality of native apps (offline access, push notifications).&lt;/p&gt;

&lt;p class=&#39;note wr&#39;&gt;As said earlier, Offline Page and Push Notifications features are not available using the inbuilt plugin of the theme due to how they are implemented and Blogger limitations. Using cloudflare workers as workaround we can enable these features too, checkout @kumardeo/blogger-pwa github repository. Make sure to disable the inbuilt plugin of theme when following the tutorial from github repository.&lt;/p&gt;

&lt;h2&gt;Enable PWA plugin&lt;/h2&gt;

&lt;p&gt;Built-in PWA plugin can be configured using LinkList widget titled &lt;b&gt;Progressive Web App&lt;/b&gt; (if you have not renamed it) in &lt;b&gt;Layout&lt;/b&gt;.&lt;/p&gt;

&lt;h3&gt;Add icon&lt;/h3&gt;

&lt;p&gt;By default it uses the &lt;a href=&#39;./basic.html#favicon&#39;&gt;favicon configured for meta tags&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In case you have not added it or want to use different icon, create a new link in the widget and use &lt;code&gt;icon&lt;/code&gt; as &lt;b&gt;Site Name&lt;/b&gt; and the icon image url as &lt;b&gt;Site URL&lt;/b&gt;. The icon must be of &lt;b&gt;1:1&lt;/b&gt; ratio with a minimum width of &lt;b&gt;512px&lt;/b&gt;, i.e. &lt;b&gt;512px*512px&lt;/b&gt;, &lt;b&gt;640px*640px&lt;/b&gt;, etc.&lt;/p&gt;

&lt;h3&gt;Add description&lt;/h3&gt;

&lt;p&gt;By default it uses Blog Description from Blog Settings.&lt;/p&gt;

&lt;p&gt;In case you have not added it or want to use different description, create a new link in the widget and use &lt;code&gt;description&lt;/code&gt; as &lt;b&gt;Site Name&lt;/b&gt; and the description text as &lt;b&gt;Site URL&lt;/b&gt;.&lt;/p&gt;

&lt;h3&gt;Add screenshots&lt;/h3&gt;

&lt;p&gt;You can add screenshots which will be previewed when install popup is shown. There are two types of screenshots you can add through the widget namely &lt;b&gt;narrow&lt;/b&gt; screenshots which will be displayed on mobile devices and &lt;b&gt;wide&lt;/b&gt; screenshots which will be displayed on desktop devices.&lt;/p&gt;

&lt;h4&gt;Narrow screenshots&lt;/h4&gt;

&lt;p&gt;The &lt;b&gt;narrow&lt;/b&gt; screenshots must be of &lt;b&gt;3:4&lt;/b&gt; ratio with a minimum width of &lt;b&gt;540px&lt;/b&gt;, i.e. &lt;b&gt;540px*720px&lt;/b&gt;, etc.&lt;/p&gt;

&lt;p&gt;To add a &lt;b&gt;narrow&lt;/b&gt; screenshot, create a new link in the widget and use &lt;code&gt;screenshot_narrow&lt;/code&gt; as &lt;b&gt;Site Name&lt;/b&gt; and the screenshot image url as &lt;b&gt;Site URL&lt;/b&gt;. You are allowed to add multiple narrow screenshots.&lt;/p&gt;

&lt;h4&gt;Wide screenshots&lt;/h4&gt;

&lt;p&gt;The &lt;b&gt;wide&lt;/b&gt; screenshots must be of &lt;b&gt;4:3&lt;/b&gt; ratio with a minimum width of &lt;b&gt;720px&lt;/b&gt;, i.e. &lt;b&gt;720px*540px&lt;/b&gt;, etc.&lt;/p&gt;

&lt;p&gt;To add a &lt;b&gt;wide&lt;/b&gt; screenshot, create a new link in the widget and use &lt;code&gt;screenshot_wide&lt;/code&gt; as &lt;b&gt;Site Name&lt;/b&gt; and the screenshot image url as &lt;b&gt;Site URL&lt;/b&gt;. You are allowed to add multiple wide screenshots.&lt;/p&gt;

&lt;h3&gt;Add shortcuts&lt;/h3&gt;

&lt;p&gt;To add a shortcut to your PWA, create a new link in the widget and use the shortcut name as &lt;b&gt;Site Name&lt;/b&gt; and shortcut url as &lt;b&gt;Site URL&lt;/b&gt;. You are allowed to add multiple shortcuts.&lt;/p&gt;

&lt;p class=&#39;note wr&#39;&gt;Please note that url must be navigating to the same origin due to limitations, therefore we recommend you to add only the absolute pathname and querystring part of the url, i.e. &lt;code&gt;/p/contact.html&lt;/code&gt; instead of full url &lt;code&gt;https://xyz.blogspot.com/p/contact.html&lt;/code&gt;.&lt;/p&gt;

&lt;h4&gt;Shortcut icon&lt;/h4&gt;

&lt;p class=&#39;note wr&#39;&gt;Support for shortcut icon was added in v3.1. You can only use this feature if and only if you are using v3.1.0 or above.&lt;/p&gt;

&lt;p&gt;Shortcut icon by default uses the app icon but you can change it to a different icon. To do so, create a link with shortcut name suffixed with a space and &lt;code&gt;[icon]&lt;/code&gt; as Site name and the icon image URL as Site URL. For an example if you want to add an icon for a shortcut named &lt;b&gt;Shortcut&lt;/b&gt;, you have to use &lt;code&gt;Shortcut [icon]&lt;/code&gt; (including space and is case-sensitive) as Site name and the icon image URL as its Site URL, the dimension and ratio for this icon is same as app icon.&lt;/p&gt;

&lt;!--[ Accordion (Grouped) ]--&gt;
&lt;div class=&#39;showH&#39;&gt;
  &lt;details class=&#39;ac&#39;&gt;
    &lt;summary&gt;Why is PWA not working?&lt;/summary&gt;
    &lt;div&gt;
      &lt;p&gt;There can be various reasons for it. Here are some common reasons:&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;b&gt;HTTPS redirect is turned off&lt;/b&gt;: PWAs require a secure connection (HTTPS) to work properly, except when running on &lt;code&gt;localhost&lt;/code&gt; for development purposes. Therefore, make sure you have turned on HTTPS redirect in your Blog settings.&lt;/li&gt;
        &lt;li&gt;&lt;b&gt;No app icon is set&lt;/b&gt;: You neither have a favicon configured nor you provided app icon url in the widget. Either configure a favicon or provide your app icon url in the widget. Read &lt;b&gt;Add icon&lt;/b&gt; section above for more information.&lt;/li&gt;
        &lt;li&gt;&lt;b&gt;Wrong image dimension or ratio&lt;/b&gt;: Make sure your images&#39; dimension and ratio are correct.&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/div&gt;
  &lt;/details&gt;
&lt;/div&gt;</description><link>https://www.plus-ui.blog/2024/10/progressive-web-app.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiXyXADzkvPudRAkqb_2oZNMeTNOPbbFTMqsIHzoW7lHZqUQFAPHsFVEBZula6BAnGtsjzbhgFl9GBj6Q0GhdeUzz8rVuxjVYj5iX6ZeBA-5IZIinw4AVVOSRXZKYeMtj8HdvUQzw7xdLZ-lQn3QtC-w_hpvWzuKnnBm9bDVvqZxubU6iwwknJwif602Y/s72-c/pwa-plugin-documentation.png" height="72" width="72"/><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8128085283179772973.post-669643689766629397</guid><pubDate>Sun, 27 Oct 2024 15:41:00 +0000</pubDate><atom:updated>2025-06-23T08:31:36.959-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">AMP</category><category domain="http://www.blogger.com/atom/ns#">Documentation</category><title>Accelerated Mobile Pages</title><description>&lt;!--[ Explicitly sets post snippet ]--&gt;
&lt;div hidden=&#39;&#39; aria-hidden=&#39;true&#39;&gt;Enable in-built Accelerated Mobile Pages plugin.&lt;/div&gt;

&lt;!--[ Explicitly sets post thumbnail ]--&gt;
&lt;!--[
  &lt;div class=&#39;separator&#39;&gt;&lt;img src=&#39;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiosQ6qwBM_spnqwkLTdP-mSb4szRilOK0nXx-aDBeaJMJOkvRI5QRIsTI3QkI8x3jBiD4StuMx-RPylnUZzIhBu61Yvql6MoY9jWQj2xAhboI0VmhfIJJsOW0Ngmf_aBwys0-bvwWAGTNG463HRHHZfVckRT5BR66yFkdW7ycvqzB0klgxX8sloIVBjmU/s1280/amp-plugin-documentation.png&#39;/&gt;&lt;/div&gt;
]--&gt;

&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;

&lt;p class=&#39;note wr&#39;&gt;
  &lt;b&gt;Experimental feature!&lt;/b&gt;&lt;br&gt;
  &lt;u&gt;Accelerated Mobile Pages&lt;/u&gt; plugin is an experimental feature. We need your feedback to improve it further and make it stable.
&lt;/p&gt;

&lt;h2&gt;What is Accelerated Mobile Pages?&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Accelerated Mobile Pages (AMP)&lt;/strong&gt; is an open-source framework developed by Google to create fast-loading mobile web pages. It was introduced to improve user experience on mobile devices by optimizing web content for speed and performance. AMP pages are designed to load almost instantly, even on slower networks. Key Features of AMP include:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Lightning-Fast Loading:&lt;/strong&gt; AMP pages are optimized to load quickly by using a simplified version of HTML, known as AMP HTML, which eliminates resource-heavy features that can slow down the page.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Lazy Loading:&lt;/strong&gt; AMP implements lazy loading for images, ensuring that images only load when they appear in the user&#39;s viewport, further improving performance.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Optimized Resource Handling:&lt;/strong&gt; AMP controls resource loading to prioritize essential content, ensuring that scripts and images do not block the rendering of the page.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Pre-Rendering:&lt;/strong&gt; Google caches and pre-renders AMP pages, making them instantly accessible when clicked from search results, even before the user reaches the website.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Mobile-Friendly Design:&lt;/strong&gt; AMP enforces responsive web design principles, ensuring that pages look good and function well on any screen size, especially mobile devices.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;AMP Cache:&lt;/strong&gt; AMP uses a content delivery network (CDN) known as the Google AMP Cache, which caches AMP content to provide faster delivery.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Restricted JavaScript:&lt;/strong&gt; AMP limits the use of custom JavaScript and third-party scripts to avoid performance bottlenecks. Only asynchronous scripts are allowed, preventing slowdowns.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Consistent User Experience:&lt;/strong&gt; AMP pages provide a smooth, consistent experience with no unpredictable behavior, pop-ups, or interstitials that hinder mobile usability.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AMP is widely used by publishers, news sites, and businesses looking to improve mobile performance, boost SEO rankings, and provide a better user experience.&lt;/p&gt;

&lt;h3&gt;Enable AMP plugin&lt;/h3&gt;

&lt;p&gt;We have added experimental support for Linked AMP Lite in v3. When it is enabled it creates two variants of all the webpages, a &lt;b&gt;Non-AMP&lt;/b&gt; webpage and a &lt;b&gt;Linked AMP&lt;/b&gt; webpage which can be accessed by adding &lt;code&gt;?amp=1&lt;/code&gt; to urls.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Linked AMP Lite&lt;/b&gt; is best choice for blogger as it creates a separate variant. For posts and pages, it displays a short overview of the body contents and a link at end to navigate to the Non-AMP variant to continue reading. Therefore you don&#39;t have to care about AMP things, the theme will handle everything for you!&lt;/p&gt;

&lt;p&gt;Not only that, dark mode and comments features will also be available on Linked AMP variant of the pages.&lt;/p&gt;

&lt;p class=&#39;note wr&#39;&gt;
  Make sure you have enough knowledge about AMP and its requirements before enabling this plugin since we do not provide any guidance for AMP errors.
  &lt;br&gt;
  &lt;u&gt;Do not enable it if you don&#39;t know anything about it.&lt;/u&gt; Once you enable it, there is &lt;u&gt;no going back&lt;/u&gt;!
&lt;/p&gt;

&lt;h2&gt;Enable Linked AMP Lite&lt;/h2&gt;

&lt;p&gt;If you want to try out this feature you can enable &lt;b&gt;Linked AMP Lite&lt;/b&gt; through &lt;b&gt;Theme Designer&lt;/b&gt;.&lt;/p&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;Go to Blogger Theme Designer.&lt;/li&gt;
  &lt;li&gt;Click on &lt;b&gt;Advanced&lt;/b&gt; tab.&lt;/li&gt;
  &lt;li&gt;From dropdown selection list, select &lt;b&gt;Plugin: AMP (Experimental)&lt;/b&gt;.&lt;/li&gt;
  &lt;li&gt;
    Set &lt;b&gt;AMP&lt;/b&gt; to &lt;b&gt;2px&lt;/b&gt; and &lt;b&gt;AMP Type&lt;/b&gt; to &lt;b&gt;3px&lt;/b&gt; to enable it.
    &lt;p class=&#39;note wr&#39;&gt;&lt;b&gt;Warning!&lt;/b&gt;&lt;br&gt;
      Do not set &lt;b&gt;AMP Type&lt;/b&gt;&#39;s length non other than &lt;b&gt;3px&lt;/b&gt;.
    &lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After enabling Linked AMP Lite, you can test urls using &lt;a class=&#39;extL&#39; href=&#39;https://search.google.com/test/amp&#39; rel=&#39;noreferrer&#39; target=&#39;_blank&#39;&gt;Google AMP Test&lt;/a&gt; tool.&lt;/p&gt;

&lt;h2&gt;Do&#39;s and Don&#39;ts&lt;/h2&gt;

&lt;p&gt;When AMP plugin is enabled, remember these do&#39;s and don&#39;ts.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Do not add custom javascript, you are not allowed to add your custom javascript when AMP is enabled.&lt;/li&gt;
  &lt;li&gt;Do not add custom css, you are not allowed to add your custom css when AMP is enabled.&lt;/li&gt;
  &lt;li&gt;Do not add Adsense script manually, use built-in &lt;a href=&#39;./adsense.html&#39;&gt;Adsense Plugin&lt;/a&gt; instead.&lt;/li&gt;
  &lt;li&gt;Do not add Analytics script manually, use built-in &lt;a href=&#39;./analytics.html&#39;&gt;Analytics Plugin&lt;/a&gt; instead.&lt;/li&gt;
  &lt;li&gt;Do not add widgets which uses javascript (Followers, Feeds, etc).&lt;/li&gt;
&lt;/ul&gt;
</description><link>https://www.plus-ui.blog/2024/10/accelerated-mobile-pages.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiosQ6qwBM_spnqwkLTdP-mSb4szRilOK0nXx-aDBeaJMJOkvRI5QRIsTI3QkI8x3jBiD4StuMx-RPylnUZzIhBu61Yvql6MoY9jWQj2xAhboI0VmhfIJJsOW0Ngmf_aBwys0-bvwWAGTNG463HRHHZfVckRT5BR66yFkdW7ycvqzB0klgxX8sloIVBjmU/s72-c/amp-plugin-documentation.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8128085283179772973.post-657477710618458439</guid><pubDate>Sun, 27 Oct 2024 15:40:00 +0000</pubDate><atom:updated>2025-06-23T08:28:52.425-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Documentation</category><title>Firebase Configuration</title><description>&lt;!--[ Explicitly sets post snippet ]--&gt;
&lt;div hidden=&#39;&#39; aria-hidden=&#39;true&#39;&gt;Configure a firebase project for a blog.&lt;/div&gt;

&lt;!--[ Explicitly sets post thumbnail ]--&gt;
&lt;!--[
  &lt;div class=&#39;separator&#39;&gt;&lt;img src=&#39;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqJKXoymlJjwF-z_g8m7V4OGgni-Do50I3OG5DMfmarnmbBliwaCBsyTtfpFeJHW59f9tA3OpD78MAgiGsS2y4Or93EPAR0z61qqJWH2AQAzgyVEu_SarHvkW1utnS7yu972eV_CCAAyx8Ae5Hv1wNw5leT3z2-eWg3qjGbFwv2ZzMIbeTJMHdRW8ISRU/s1280/firebase-configurations.png&#39;/&gt;&lt;/div&gt;
]--&gt;


&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;

&lt;p&gt;Few plugins in the template depend on Firebase Services, i.e. Realtime Database for Post Views Counter, etc. Therefore, if you wish to use any of these plugins, you need to have a Firebase Project configured with the blog template.&lt;/p&gt;

&lt;h2&gt;Creating a Firebase Project&lt;/h2&gt;

&lt;p class=&#39;note&#39;&gt;If you have already an existing Firebase Project created earlier, you can use it and skip the steps for creating newer one which is described below.&lt;/p&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;Go to &lt;a href=&#39;https://console.firebase.google.com&#39; target=&#39;_blank&#39; rel=&#39;nofollow noreferrer&#39; title=&#39;Firebase Console&#39;&gt;Firebase Console&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Click &lt;b&gt;+ Create a project&lt;/b&gt; and follow the prompts to create a project. You can name your project anything you want.&lt;/li&gt;
  &lt;li&gt;Once the project is created, navigate to &lt;b&gt;Project settings.&lt;/b&gt;&lt;/li&gt;
  &lt;li&gt;Under &lt;b&gt;General&lt;/b&gt; &amp;gt; &lt;b&gt;Your apps&lt;/b&gt;, click on &lt;b&gt;&amp;lt;/&amp;gt; Web&lt;/b&gt; and follow the prompts to create a Web app in the project.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You have now created a Firebase Project for Web Applications.&lt;/p&gt;

&lt;h2&gt;Setting up Realtime Database Rules&lt;/h2&gt;

&lt;p&gt;Adding secure rules to Realtime Database is crucial because insecure rules permits database &lt;code&gt;read&lt;/code&gt; and &lt;code&gt;write&lt;/code&gt; access to anyone on the internet, allowing them to read and modify anything in the database. Therefore, we need to add restrictions in order to make sure one cannot read or modify data without permission. Follow the steps below to protect your database.&lt;/p&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;Go to &lt;b&gt;Firebase Project&lt;/b&gt; &amp;gt; &lt;b&gt;Realtime Database&lt;/b&gt;.&lt;/li&gt;
  &lt;li&gt;Switch to &lt;b&gt;Rules&lt;/b&gt; tab.&lt;/li&gt;
  &lt;li&gt;
    Paste the following JSON by making appropriate changes in the rules editor and click on &lt;b&gt;Publish&lt;/b&gt;.
    &lt;p class=&#39;note wr&#39;&gt;&lt;b&gt;Warning!&lt;/b&gt;&lt;br/&gt;
      The provided rules may update in future by our team in case any critical issue is found or new plugins are made available. It is recommended to update the rules as below regularly (atleast once in 3 months) by visiting this page.&lt;br/&gt;
      Rules was last updated on 1st September, 2023 by Deo Kumar.
    &lt;/p&gt;
    &lt;!--[ MultiTabs Syntax Highlighter ]--&gt;
    &lt;div class=&#39;pre tabs&#39;&gt;
      &lt;!--[ Active function ]--&gt;
      &lt;input id=&#39;preT-1&#39; type=&#39;radio&#39; name=&#39;preTab&#39; checked=&#39;true&#39;/&gt;
      &lt;input id=&#39;preT-2&#39; type=&#39;radio&#39; name=&#39;preTab&#39;/&gt;
      &lt;!--[ Header/title ]--&gt;
      &lt;div&gt;
        &lt;!--[ Change atribute data-text=&#39;...&#39; to replace title ]--&gt;
        &lt;label for=&#39;preT-1&#39; data-text=&#39;Secure&#39;&gt;&lt;/label&gt;
        &lt;label for=&#39;preT-2&#39; data-text=&#39;Insecure&#39;&gt;&lt;/label&gt;
      &lt;/div&gt;

      &lt;!--[ Content ]--&gt;
      &lt;pre class=&#39;preC-1&#39; data-source=&#39;rules.secure.json&#39;&gt;&lt;code&gt;{
  &quot;rules&quot;: {
    &quot;.write&quot;: false,
    &quot;.read&quot;: false,
    &quot;blogs&quot;: {
      &quot;$blog_id&quot;: {
        &quot;.validate&quot;: &quot;$blog_id.matches(/^\\d{18,22}$/) &amp;amp;&amp;amp; ($blog_id === &#39;&lt;mark data-before=&#39;Blog 1 id&#39;&gt;000000000000000000&lt;/mark&gt;&#39; || $blog_id === &#39;&lt;mark data-before=&#39;Blog 2 id (optional)&#39;&gt;0000&lt;/mark&gt;&#39; || $blog_id === &#39;&lt;mark data-before=&#39;Blog 3 id (optional)&#39;&gt;0000&lt;/mark&gt;&#39;)&quot;,
        &quot;posts&quot;: {
          &quot;$post_id&quot;: {
            &quot;.validate&quot;: &quot;$post_id.matches(/^\\d{18,22}$/)&quot;,
            &quot;views&quot;: {
              &quot;.read&quot;: true,
              &quot;.write&quot;: &quot;newData.exists()&quot;,
              &quot;.validate&quot;: &quot;newData.isNumber() &amp;amp;&amp;amp; newData.val() % 1 === 0 &amp;amp;&amp;amp; newData.val() === (data.exists() ? data.val() + 1 : 1)&quot;
            }
          }
        }
      }
    }
  }
}&lt;/code&gt;&lt;/pre&gt;
      &lt;pre class=&#39;preC-2&#39; data-source=&#39;rules.insecure.json&#39;&gt;&lt;code&gt;{
  &quot;rules&quot;: {
    &quot;.read&quot;: true,
    &quot;.write&quot;: true
  }
}&lt;/code&gt;&lt;/pre&gt;
    &lt;/div&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;Getting Firebase Configurations&lt;/h2&gt;

&lt;p&gt;We now need the configuration object of our Firebase Project Web app. Follow the steps to find it.&lt;/p&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;Navigate to your &lt;b&gt;Firebase Project&lt;/b&gt;.&lt;/li&gt;
  &lt;li&gt;Go to &lt;b&gt;Project Settings&lt;/b&gt;.&lt;/li&gt;
  &lt;li&gt;
    Under &lt;b&gt;General&lt;/b&gt; &amp;gt; &lt;b&gt;Your apps&lt;/b&gt; tab, select your Web app and click on &lt;b&gt;Config&lt;/b&gt;. You will be able to see a Javascript object which looks like the following:
    &lt;pre&gt;&lt;code&gt;const firebaseConfig = {
  apiKey: &quot;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxx&quot;,
  authDomain: &quot;xxxxxxxxxxxxx.firebaseapp.com&quot;,
  databaseURL: &quot;https://xxxxxxxxxxxxx.firebaseio.com&quot;,
  projectId: &quot;xxxxxxxxxxxxx&quot;,
  storageBucket: &quot;xxxxxxxxxxxxx.appspot.com&quot;,
  messagingSenderId: &quot;000000000000&quot;,
  appId: &quot;1:000000000000:web:xxxxxxxxxxxxxxxxxxxxxx&quot;,
  measurementId: &quot;G-XXXXXXXXXX&quot;,
};&lt;/code&gt;&lt;/pre&gt;
    &lt;p class=&#39;note wr&#39;&gt;If the field &lt;code&gt;databaseURL&lt;/code&gt; is not available, that means you have not created a Realtime Database instance yet, create it through &lt;b&gt;Realtime Database&lt;/b&gt; section and re-check to make sure the field &lt;code&gt;databaseURL&lt;/code&gt; is available.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Keep the browser tab open as we shall need the information of this object.&lt;/p&gt;

&lt;h2&gt;Setting up Firebase Configurations&lt;/h2&gt;

&lt;p&gt;We shall now add the firebase configurations to our blog.&lt;/p&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;Go to &lt;a href=&#39;https://www.blogger.com&#39; target=&#39;_blank&#39; rel=&#39;nofollow noreferrer noopener&#39;&gt;Blogger dashboard&lt;/a&gt; and navigate to &lt;b&gt;Layout&lt;/b&gt;.&lt;/li&gt;
  &lt;li&gt;Find the Link List gadget with title &lt;b&gt;Firebase Configurations&lt;/b&gt; (if you have not renamed it), click on &lt;b&gt;Edit&lt;/b&gt; button.&lt;/li&gt;
  &lt;li&gt;
    Create or edit existing links for every key-value pairs, the key as &lt;b&gt;Site name&lt;/b&gt; and the value (content under quotes) as &lt;b&gt;Site URL&lt;/b&gt; respectively as shown below.
    &lt;pre&gt;&lt;code&gt;const firebaseConfig = {
  &lt;mark class=&#39;orange&#39; data-before=&#39;Site name&#39;&gt;apiKey&lt;/mark&gt;: &quot;&lt;mark data-before=&#39;Site URL&#39;&gt;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxx&lt;/mark&gt;&quot;,
  &lt;mark class=&#39;orange&#39; data-before=&#39;Site name&#39;&gt;authDomain&lt;/mark&gt;: &quot;&lt;mark data-before=&#39;Site URL&#39;&gt;xxxxxxxxxxxxx.firebaseapp.com&lt;/mark&gt;&quot;,
  &lt;mark class=&#39;orange&#39; data-before=&#39;Site name&#39;&gt;databaseURL&lt;/mark&gt;: &quot;&lt;mark data-before=&#39;Site URL&#39;&gt;https://xxxxxxxxxxxxx.firebaseio.com&lt;/mark&gt;&quot;,
  &lt;mark class=&#39;orange&#39; data-before=&#39;Site name&#39;&gt;projectId&lt;/mark&gt;: &quot;&lt;mark data-before=&#39;Site URL&#39;&gt;xxxxxxxxxxxxx&lt;/mark&gt;&quot;,
  &lt;mark class=&#39;orange&#39; data-before=&#39;Site name&#39;&gt;storageBucket&lt;/mark&gt;: &quot;&lt;mark data-before=&#39;Site URL&#39;&gt;xxxxxxxxxxxxx.appspot.com&lt;/mark&gt;&quot;,
  &lt;mark class=&#39;orange&#39; data-before=&#39;Site name&#39;&gt;messagingSenderId&lt;/mark&gt;: &quot;&lt;mark data-before=&#39;Site URL&#39;&gt;000000000000&lt;/mark&gt;&quot;,
  &lt;mark class=&#39;orange&#39; data-before=&#39;Site name&#39;&gt;appId&lt;/mark&gt;: &quot;&lt;mark data-before=&#39;Site URL&#39;&gt;1:000000000000:web:xxxxxxxxxxxxxxxxxxxxxx&lt;/mark&gt;&quot;,
  &lt;mark class=&#39;orange&#39; data-before=&#39;Site name&#39;&gt;measurementId&lt;/mark&gt;: &quot;&lt;mark data-before=&#39;Site URL&#39;&gt;G-XXXXXXXXXX&lt;/mark&gt;&quot;,
};&lt;/code&gt;&lt;/pre&gt;
    Your links should look as shown below:
    &lt;!--[ Table ]--&gt;
    &lt;div class=&#39;table sticky bordered hovered mh300&#39;&gt;
      &lt;table&gt;
        &lt;thead&gt;
          &lt;tr&gt;
            &lt;th&gt;Site name&lt;/th&gt;
            &lt;th&gt;Site URL&lt;/th&gt;
          &lt;/tr&gt;
        &lt;/thead&gt;
        &lt;tbody&gt;
          &lt;tr&gt;
            &lt;td&gt;&lt;code&gt;apiKey&lt;/code&gt;&lt;/td&gt;
            &lt;td&gt;&lt;code&gt;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxx&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;&lt;code&gt;authDomain&lt;/code&gt;&lt;/td&gt;
            &lt;td&gt;&lt;code&gt;xxxxxxxxxxxxx.firebaseapp.com&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;&lt;code&gt;databaseURL&lt;/code&gt;&lt;/td&gt;
            &lt;td&gt;&lt;code&gt;https://xxxxxxxxxxxxx.firebaseio.com&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;&lt;code&gt;projectId&lt;/code&gt;&lt;/td&gt;
            &lt;td&gt;&lt;code&gt;xxxxxxxxxxxxx&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;&lt;code&gt;storageBucket&lt;/code&gt;&lt;/td&gt;
            &lt;td&gt;&lt;code&gt;xxxxxxxxxxxxx.appspot.com&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;&lt;code&gt;messagingSenderId&lt;/code&gt;&lt;/td&gt;
            &lt;td&gt;&lt;code&gt;000000000000&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;&lt;code&gt;appId&lt;/code&gt;&lt;/td&gt;
            &lt;td&gt;&lt;code&gt;1:000000000000:web:xxxxxxxxxxxxxxxxxxxxxx&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;&lt;code&gt;measurementId&lt;/code&gt;&lt;/td&gt;
            &lt;td&gt;&lt;code&gt;G-XXXXXXXXXX&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
        &lt;/tbody&gt;
      &lt;/table&gt;
    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;Save the gadget to apply changes.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Done! You have successfully configured Firebase Project with your blog.&lt;/p&gt;
</description><link>https://www.plus-ui.blog/2024/10/firebase-configuration.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqJKXoymlJjwF-z_g8m7V4OGgni-Do50I3OG5DMfmarnmbBliwaCBsyTtfpFeJHW59f9tA3OpD78MAgiGsS2y4Or93EPAR0z61qqJWH2AQAzgyVEu_SarHvkW1utnS7yu972eV_CCAAyx8Ae5Hv1wNw5leT3z2-eWg3qjGbFwv2ZzMIbeTJMHdRW8ISRU/s72-c/firebase-configurations.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8128085283179772973.post-4285058085214174436</guid><pubDate>Sun, 27 Oct 2024 15:38:00 +0000</pubDate><atom:updated>2025-09-26T07:32:12.847-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Documentation</category><title>Safelink</title><description>&lt;!--[ Explicitly sets post snippet ]--&gt;
&lt;div hidden aria-hidden=&#39;true&#39;&gt;Setup and configure Safelink to protect outgoing links and manage external redirections effectively.&lt;/div&gt;

&lt;!--[ Explicitly sets post thumbnail ]--&gt;
&lt;!--[
  &lt;div class=&#39;separator&#39;&gt;&lt;img src=&#39;&#39;/&gt;&lt;/div&gt;
]--&gt;

&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;

&lt;p class=&#39;note wr&#39;&gt;&lt;u&gt;Safelink&lt;/u&gt; plugin was added in v3.2, therefore you will be able to enable it if and only if you are using v3.2.0 or above.&lt;/p&gt;

&lt;p class=&#39;note wr&#39;&gt;
  &lt;b&gt;Experimental feature!&lt;/b&gt;&lt;br&gt;
  &lt;u&gt;Safelink&lt;/u&gt; plugin is an experimental feature. We need your feedback to improve it further and make it stable.
&lt;/p&gt;

&lt;!--[ Alert variant info outlined ]--&gt;
&lt;div class=&#39;alert info outline&#39;&gt;&lt;b&gt;Looking for Demo?&lt;/b&gt;
  Demo of this Safelink feature can be found at &lt;a href=&#39;/p/safelink-generator.html&#39;&gt;Safelink Generator&lt;/a&gt; page.
&lt;/div&gt;

&lt;p&gt;Safelink is a feature that protects and manages outgoing links by redirecting users through an intermediate page before reaching the final destination. It helps improve security, control external traffic, and optionally display additional content such as advertisements, warnings, or timers. This ensures safer browsing for visitors and offers blog owners greater flexibility and monetization opportunities when handling external links.&lt;/p&gt;

&lt;h2&gt;Configure Safelink&lt;/h2&gt;

&lt;p&gt;In order to use this feature, you need to setup it first. First thing to do is enable the safelink plugin through Theme Designer:&lt;/p&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;Go to Blogger Theme Designer.&lt;/li&gt;
  &lt;li&gt;Click on &lt;b&gt;Advanced&lt;/b&gt; tab.&lt;/li&gt;
  &lt;li&gt;From dropdown selection list, select &lt;b&gt;Plugin: Safelink (Experimental)&lt;/b&gt;.&lt;/li&gt;
  &lt;li&gt;Set the length of &lt;b&gt;Safelink&lt;/b&gt; to &lt;b&gt;2px&lt;/b&gt; in order to enable it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now you need to configure at-least one Safelink page. Safelink page is the page where user is redirected and asked to perferm few actions in order to get the original link. You can configure safelink pages through Theme HTML Editor.&lt;/p&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;Go to Blogger HTML Editor.&lt;/li&gt;
  &lt;li&gt;
    Find the following code snippet and put your page link at marked parts. It is not mandatory to put all four pages&#39; link, at-least one of them should be there:
    &lt;p class=&#39;note wr&#39;&gt;You have to put only pathname of the page instead of full url. For an example, if you want to include &lt;code&gt;https://www.example.com/p/my-safelink-page.html&lt;/code&gt;, only put &lt;code&gt;/p/my-safelink-page.html&lt;/code&gt;.&lt;/p&gt;
    &lt;pre&gt;&lt;code&gt;&amp;lt;Variable name=&quot;safelink.page1&quot; description=&quot;Safelink Page 1&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark data-before=&#39;Safelink Page 1&#39;&gt;/p/safelink-page-1.html&lt;/mark&gt;&quot;/&amp;gt;
[!] Safelink Page 1
[!] @type {String}
[!] Warning: Don&#39;t add full url of the safelink page, only include the pathname

&amp;lt;Variable name=&quot;safelink.page2&quot; description=&quot;Safelink Page 2&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark data-before=&#39;Safelink Page 2 (optional)&#39;&gt;&lt;/mark&gt;&quot;/&amp;gt;
[!] Safelink Page 2
[!] @type {String}
[!] Warning: Don&#39;t add full url of the safelink page, only include the pathname

&amp;lt;Variable name=&quot;safelink.page3&quot; description=&quot;Safelink Page 3&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark data-before=&#39;Safelink Page 3 (optional)&#39;&gt;&lt;/mark&gt;&quot;/&amp;gt;
[!] Safelink Page 3
[!] @type {String}
[!] Warning: Don&#39;t add full url of the safelink page, only include the pathname

&amp;lt;Variable name=&quot;safelink.page4&quot; description=&quot;Safelink Page 4&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark data-before=&#39;Safelink Page 4 (optional)&#39;&gt;&lt;/mark&gt;&quot;/&amp;gt;
[!] Safelink Page 4
[!] @type {String}
[!] Warning: Don&#39;t add full url of the safelink page, only include the pathname&lt;/code&gt;&lt;/pre&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;Safelink from Anchor&lt;/h2&gt;

&lt;p&gt;You can add a classname &lt;code&gt;safeL&lt;/code&gt; to &lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt; elements to automatically put the link behind safelink feature. An example is:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;a class=&#39;button safeL&#39; href=&#39;link_here&#39;&amp;gt;title_here&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;If you wish, you can also use &lt;code&gt;&amp;lt;button&amp;gt;&lt;/code&gt; element as shown below:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;button type=&#39;button&#39; class=&#39;button safeL&#39; data-href=&#39;link_here&#39;&amp;gt;title_here&amp;lt;/button&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Safelink Generator&lt;/h2&gt;

&lt;p&gt;The Safelink Generator allows you to create safelink from original link. You can put the generator in an existing page or in a new page.&lt;/p&gt;

&lt;ol class=&#39;steps&#39;&gt;
  &lt;li&gt;In page editor view, click &lt;span style=&#39;display:inline-block;vertical-align:top&#39;&gt;&lt;svg viewBox=&#39;0 0 48 48&#39;&gt;&lt;path d=&#39;M6 34.5V42h7.5l22.13-22.13-7.5-7.5L6 34.5zm35.41-20.41c.78-.78.78-2.05 0-2.83l-4.67-4.67c-.78-.78-2.05-.78-2.83 0l-3.66 3.66 7.5 7.5 3.66-3.66z&#39;/&gt;&lt;/svg&gt;&lt;/span&gt; icon at the bottom right of the title.&lt;/li&gt;
  &lt;li&gt;Two options will appear: &lt;b&gt;HTML view&lt;/b&gt; and &lt;b&gt;Writing view&lt;/b&gt;.&lt;/li&gt;
  &lt;li&gt;Select &#39;&lt;span style=&#39;display:inline-flex;align-items:baseline&#39;&gt;&lt;svg viewBox=&#39;0 0 48 48&#39; style=&#39;align-self:center&#39;&gt;&lt;path d=&#39;M0 0h48v48H0V0z&#39; fill=&#39;none&#39;/&gt;&lt;path d=&#39;M18.8 33.2L9.7 24l9.2-9.2L16 12 4 24l12 12 2.8-2.8zm10.4 0l9.2-9.2-9.2-9.2L32 12l12 12-12 12-2.8-2.8z&#39;/&gt;&lt;/svg&gt;&lt;b style=&#39;text-indent:4px&#39;&gt;HTML View&lt;/b&gt;&lt;/span&gt;&#39;.&lt;/li&gt;
  &lt;li&gt;
    Copy and paste following code.
    &lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Begin: Safelink Generator area ]--&amp;gt;
&amp;lt;style&amp;gt;
.inF.cB button{--svgW:16px;--svgH:16px;position:absolute;inset-block-start:10px;inset-inline-end:10px;width:30px;height:30px;display:flex;align-items:center;justify-content:center;background:var(--contentB);border-radius:8px;border:1px solid var(--contentLa);opacity:0.5;cursor:pointer}
.inF.cB input{padding-inline-end:50px}
.inF.cB input:not(:placeholder-shown) ~ button{opacity:1}
.sgMw{max-width:600px;margin:40px auto}
.sgOw{display:flex;align-items:center;gap:12px 8px;flex-wrap:wrap;background:var(--contentB);border:1px solid var(--contentL);border-radius:5px;padding:12px}
.sgOw span{width:100%;line-height:1.4em;font-size:14px}
.sgOw button{--svgW:20px;--svgH:20px;display:flex;align-items:center;justify-content:center;flex-shrink:0;width:36px;height:36px;background:var(--linkB);color:#fffdfc;border-radius:8px;cursor:pointer}
&amp;lt;/style&amp;gt;
&amp;lt;script&amp;gt;
/*! Plus UI Javascript (safelink/generator.js) | Authors: Deo Kumar, Armaan Kumar (https://fineshopdesign.com) | License: Unlicensed | Copyright (c) 2024-2025 Fineshop Design */
&quot;use strict&quot;;((e,t,l)=&amp;gt;{let{cEl:n,iAE:a,aEL:s,qSel:i,gId:p,eHTML:o,tNtf:g,df:c,pl:u,bg:r}=l,d=e=&amp;gt;(e=&amp;gt;new URL(e,t.baseURI))((e=&amp;gt;e.replace(/(^\w+:|^)/,&quot;&quot;))(e)),h=(e,t,n=&quot;s&quot;)=&amp;gt;{let a=(e=&amp;gt;{let t=JSON.stringify(e);return{decoded:e,value:t,data:l.B64.O3.e(t)}})(t);return e+`#${n}=${encodeURIComponent(a.data)}`},v=u.sl,b=v.pg.map((e=&amp;gt;new URL(e,r.cnHmU).href)),f=t.currentScript,C=[];v.ok||C.push(&quot;The Safelink plugin is not enabled. The generated links will not work until it is enabled.&quot;),0===b.length&amp;amp;&amp;amp;C.push(&quot;No Safelink page has been configured!&quot;);let k=n(&quot;div&quot;,{className:&quot;sgMw&quot;,innerHTML:`${0!==C.length?`&amp;lt;div class=&#39;alert warning&#39;&amp;gt;&amp;lt;b&amp;gt;Warning!&amp;lt;/b&amp;gt;${C.map(((e,t)=&amp;gt;`${t+1}. ${e}`)).join(&quot;&amp;lt;br&amp;gt;&quot;)}&amp;lt;/div&amp;gt;`:&quot;&quot;}&amp;lt;div class=&#39;inF cB&#39; data-message=&#39;URL must begin with http:// or https://&#39;&amp;gt;&amp;lt;input type=&#39;text&#39; name=&#39;link&#39; id=&#39;sg_f_link&#39; placeholder=&#39; &#39;&amp;gt;&amp;lt;label for=&#39;sg_f_link&#39;&amp;gt;Destination URL&amp;lt;/label&amp;gt;&amp;lt;button type=&#39;button&#39; id=&#39;sg_f_clear_link&#39;&amp;gt;&amp;lt;svg class=&#39;line&#39; viewBox=&#39;0 0 24 24&#39;&amp;gt;&amp;lt;path d=&#39;M19.0005 4.99988L5.00049 18.9999M5.00049 4.99988L19.0005 18.9999&#39;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;/svg&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&#39;inF&#39; data-message=&#39;Select a page for safelink&#39;&amp;gt;&amp;lt;select id=&#39;sg_f_page&#39;&amp;gt;&amp;lt;optgroup label=&#39;Static pages&#39;&amp;gt;&amp;lt;option value=&#39;${o(r.cnHmU)}&#39;${0===b.length?&quot; selected&quot;:&quot;&quot;}&amp;gt;Homepage&amp;lt;/option&amp;gt;&amp;lt;/optgroup&amp;gt;${0!==b.length?`&amp;lt;optgroup label=&#39;Safelink Pages&#39;&amp;gt;${b.reduce(((e,t,l)=&amp;gt;`${e}&amp;lt;option value=&#39;${o(t)}&#39;${0===l?&quot; selected&quot;:&quot;&quot;}&amp;gt;Safelink Page (${o(v.pg[l])})&amp;lt;/option&amp;gt;`),&quot;&quot;)}&amp;lt;/optgroup&amp;gt;`:&quot;&quot;}&amp;lt;/select&amp;gt;&amp;lt;label for=&#39;sg_f_page&#39;&amp;gt;Safelink Page&amp;lt;/label&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&#39;sgOw&#39;&amp;gt;&amp;lt;span class=&#39;sgOl&#39;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;button type=&#39;button&#39; class=&#39;sgOv&#39;&amp;gt;&amp;lt;svg class=&#39;line&#39; viewBox=&#39;0 0 24 24&#39;&amp;gt;&amp;lt;path d=&#39;M15.58 12C15.58 13.98 13.98 15.58 12 15.58C10.02 15.58 8.42004 13.98 8.42004 12C8.42004 10.02 10.02 8.42004 12 8.42004C13.98 8.42004 15.58 10.02 15.58 12Z&#39;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;path d=&#39;M12 20.27C15.53 20.27 18.82 18.19 21.11 14.59C22.01 13.18 22.01 10.81 21.11 9.39997C18.82 5.79997 15.53 3.71997 12 3.71997C8.46997 3.71997 5.17997 5.79997 2.88997 9.39997C1.98997 10.81 1.98997 13.18 2.88997 14.59C5.17997 18.19 8.46997 20.27 12 20.27Z&#39;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;/svg&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;button type=&#39;button&#39; class=&#39;sgOc&#39;&amp;gt;&amp;lt;svg class=&#39;line&#39; viewBox=&#39;0 0 24 24&#39;&amp;gt;&amp;lt;path d=&#39;M16 12.9V17.1C16 20.6 14.6 22 11.1 22H6.9C3.4 22 2 20.6 2 17.1V12.9C2 9.4 3.4 8 6.9 8H11.1C14.6 8 16 9.4 16 12.9Z&#39;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;path d=&#39;M22 6.9V11.1C22 14.6 20.6 16 17.1 16H16V12.9C16 9.4 14.6 8 11.1 8H8V6.9C8 3.4 9.4 2 12.9 2H17.1C20.6 2 22 3.4 22 6.9Z&#39;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;/svg&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;/div&amp;gt;`});a(f,&quot;beforebegin&quot;,k);let $=p(&quot;sg_f_link&quot;),_=p(&quot;sg_f_clear_link&quot;),m=p(&quot;sg_f_page&quot;),w=i(&quot;.sgOl&quot;,k),H=i(&quot;.sgOv&quot;,k),L=i(&quot;.sgOc&quot;,k),U=()=&amp;gt;{if(!l.B64)return null;let e=$.value.trim();return&quot;&quot;===e?null:(/^https?:\/\//.test(e)||(e=`https://${e}`),h(m.value,{v:1,u:e}))},M=()=&amp;gt;{let e=U();w.innerText=e||&quot;Input a valid Destination URL first!&quot;};M(),s($,&quot;change&quot;,M),s($,&quot;input&quot;,M),s($,&quot;keyup&quot;,M),s(m,&quot;change&quot;,M),s(m,&quot;input&quot;,M),s($,&quot;blur&quot;,(()=&amp;gt;{let e=$.value.trim();&quot;&quot;!==e&amp;amp;&amp;amp;(/^https?:\/\//.test(e)?$.value!==e&amp;amp;&amp;amp;($.value=e):$.value=`https://${e}`)})),s(_,&quot;click&quot;,(()=&amp;gt;{$.value=&quot;&quot;,M()})),s(H,&quot;click&quot;,(()=&amp;gt;{let t=U();t?e.open(t,&quot;_blank&quot;):g(w.textContent)})),s(L,&quot;click&quot;,(()=&amp;gt;{let e=U();e?l.cpT(e).then((()=&amp;gt;g(&quot;Link copied to clipboard!&quot;))):g(w.textContent)})),c.then((()=&amp;gt;{M(),l.iBF().then((async e=&amp;gt;{let t=new e(d(r.cnHmU)),[l,a]=await Promise.all([t.posts.list(),t.pages.list()]);[[&quot;Recent Posts&quot;,l],[&quot;Recent Pages&quot;,a]].forEach((([e,t])=&amp;gt;{let l=n(&quot;optgroup&quot;,{attributes:{label:e},innerHTML:t.reduce(((e,t)=&amp;gt;`${e}&amp;lt;option value=&#39;${o(t.url)}&#39;&amp;gt;${o(t.title)}&amp;lt;/option&amp;gt;`),&quot;&quot;)});m.appendChild(l)}))}))}))})(window,document,PU);
&amp;lt;/script&amp;gt;
&amp;lt;!--[ End: Safelink Generator area ]--&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/li&gt;
  &lt;li&gt;It is recommended to add a page description paragraph above the given code.&lt;/li&gt;
&lt;/ol&gt;</description><link>https://www.plus-ui.blog/2024/10/safelink.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8128085283179772973.post-4020562851239177192</guid><pubDate>Sun, 27 Oct 2024 15:37:00 +0000</pubDate><atom:updated>2025-10-02T18:53:16.067-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Plugin</category><title>Widgets and Plugins</title><description>&lt;p class=&#39;alert info outline&#39;&gt;&lt;b&gt;Help us improve this post!&lt;/b&gt;
  English is not my first language, so if you find any mistakes or think something can be explained better, feel free to &lt;a class=&#39;extL&#39; href=&#39;/p/contact.html&#39; target=&#39;_blank&#39;&gt;contact us&lt;/a&gt;. Your suggestions are always welcome!
&lt;/p&gt;

&lt;p&gt;There are many in-built plugins in the theme, few of them are documented separately. This page documents rest of the plugins.&lt;/p&gt;

&lt;h2&gt;Bookmark posts&lt;/h2&gt;

&lt;p&gt;The &lt;b&gt;Bookmark posts&lt;/b&gt; feature allows your site visitors to save posts so they can read it later. The posts are stored in browser using localStorage Web APIs. This feature comes enabled by default, but you can disable or customize it through Layout.&lt;/p&gt;

&lt;ul class=&#39;steps&#39;&gt;
  &lt;li&gt;Go to Blogger Layout.&lt;/li&gt;
  &lt;li&gt;Search for the LinkList widget with title &lt;b&gt;Bookmark posts&lt;/b&gt; (if you have not renamed it).&lt;/li&gt;
  &lt;li&gt;Click on pencil icon beside the widget.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Live Search&lt;/h2&gt;

&lt;p class=&#39;note wr&#39;&gt;&lt;u&gt;Live Search&lt;/u&gt; was added in v3.1, therefore you will be able to enable it if and only if you are using v3.1.0 or above.&lt;/p&gt;

&lt;p class=&#39;note&#39;&gt;
  &lt;b&gt;Live Search plugin is now stable!&lt;/b&gt;&lt;br&gt;
  Initially introduced as an experimental feature in v3.1.0, the Live Search plugin has been fully stabilized starting from v3.2.0. We still welcome your feedback to make it even better!
&lt;/p&gt;

&lt;p&gt;The &lt;b&gt;Live Search&lt;/b&gt; feature shows a list of posts matching the query as soon as user inputs a keyword in search bar. This feature comes enabled by default, but you can disable or customize it through Theme Designer.&lt;/p&gt;

&lt;ul class=&#39;steps&#39;&gt;
  &lt;li&gt;Go to Blogger Theme Designer.&lt;/li&gt;
  &lt;li&gt;Click on &lt;b&gt;Advanced&lt;/b&gt; tab.&lt;/li&gt;
  &lt;li&gt;From dropdown selection list, select &lt;b&gt;Plugin: Live Search&lt;/b&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#39;pRelate&#39;&gt;
  &lt;!--[ Related title ]--&gt;
  &lt;b&gt;Links related to Live Search :&lt;/b&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;a href=&#39;https://github.com/kumardeo/deox/tree/main/packages/blogger-feed#readme&#39; target=&#39;_blank&#39; rel=&#39;nofollow noreferrer noopener&#39;&gt;@deox/blogger-feed : open source blogger feed client - GitHub&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;

&lt;h2&gt;Cookie Consent&lt;/h2&gt;

&lt;p&gt;The &lt;b&gt;Cookie Consent&lt;/b&gt; feature shows a popup through which site owner can obtain consent from users. This feature comes enabled by default, but you can disable or customize it through Layout.&lt;/p&gt;

&lt;ul class=&#39;steps&#39;&gt;
  &lt;li&gt;Go to Blogger Layout.&lt;/li&gt;
  &lt;li&gt;Search for the LinkList widget with title &lt;b&gt;Cookie Consent&lt;/b&gt; (if you have not renamed it).&lt;/li&gt;
  &lt;li&gt;Click on pencil icon beside the widget.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Realtime views counter&lt;/h2&gt;

&lt;p&gt;The &lt;b&gt;Realtime views counter&lt;/b&gt; shows the number of post views. This plugin utilizes Firebase Realtime Database to store views count. If you would like to enable this feature, follow these steps:&lt;/p&gt;

&lt;ul class=&#39;steps&#39;&gt;
  &lt;li&gt;First of all, you need to &lt;a class=&#39;extL&#39; href=&#39;https://plus-ul.blogspot.com/2024/10/firebase.html&#39;&gt;configure a firebase project&lt;/a&gt; with your blog.&lt;/li&gt;
  &lt;li&gt;Go to Blogger Theme Designer.&lt;/li&gt;
  &lt;li&gt;Click on &lt;b&gt;Advanced&lt;/b&gt; tab.&lt;/li&gt;
  &lt;li&gt;From dropdown selection list, select &lt;b&gt;Plugin: Views Counter&lt;/b&gt;.&lt;/li&gt;
  &lt;li&gt;Set the length of &lt;b&gt;Views Counter&lt;/b&gt; to 1px or 2px to disable or enable the plugin respectively.&lt;/li&gt;
&lt;/ul&gt;

&lt;p class=&#39;note wr&#39;&gt;&lt;b&gt;Warning!&lt;/b&gt;&lt;br&gt;
  In order to make connection to database instance through WebSocket for realtime updates, the firebase javascript SDK is loaded and executed in client&#39;s browser. If you really don&#39;t need this feature, please disable it.
&lt;/p&gt;

&lt;h2&gt;Labels description&lt;/h2&gt;

&lt;p class=&#39;note wr&#39;&gt;&lt;u&gt;Labels Description&lt;/u&gt; was added in v3.1, therefore you will be able to enable it if and only if you are using v3.1.0 or above.&lt;/p&gt;

&lt;p&gt;The &lt;b&gt;Labels description&lt;/b&gt; widget displays info (such as label name, no. of posts, label description if added and label cover if available) in label pages. For example, if we are at &lt;code&gt;/search/label/Art&lt;/code&gt; location, it shows information of &lt;b&gt;Art&lt;/b&gt; label. This feature comes enabled by default, but you can disable or customize it through Layout.&lt;/p&gt;

&lt;ul class=&#39;steps&#39;&gt;
  &lt;li&gt;Go to Blogger Layout.&lt;/li&gt;
  &lt;li&gt;Search for the LinkList widget with title &lt;b&gt;Labels Description&lt;/b&gt; (if you have not renamed it).&lt;/li&gt;
  &lt;li&gt;Click on pencil icon beside the widget.&lt;/li&gt;
&lt;/ul&gt;

&lt;!--[ Accordion (Grouped) ]--&gt;
&lt;div class=&#39;showH&#39;&gt;
  &lt;details class=&#39;ac&#39;&gt;
    &lt;summary&gt;How can I add description to a label?&lt;/summary&gt;
    &lt;div&gt;
      &lt;p&gt;To add a description to a label, create a link in the widget with label name as the Site Name (case-sensitive) and its description as the Site URL. For an example, if you want to add description to the &lt;u&gt;Lifestyle&lt;/u&gt; label, create a new link with &lt;code&gt;Lifestyle&lt;/code&gt; as Site Name and the description text as Site URL.&lt;/p&gt;
    &lt;/div&gt;
  &lt;/details&gt;
  &lt;details class=&#39;ac&#39;&gt;
    &lt;summary&gt;How can I add cover image to a label?&lt;/summary&gt;
    &lt;div&gt;
      &lt;p&gt;By default, the widget tries to select a thumbnail from posts in view as cover image but it is possible to explicitly specify an image as cover. To do so, create a link in the widget with label name followed by a space and &lt;code&gt;[cover]&lt;/code&gt; as the Site Name (case-sensitive) and the image URL as the Site URL. For an example, if you want to add cover image to the &lt;u&gt;Lifestyle&lt;/u&gt; label, create a new link with &lt;code&gt;Lifestyle [cover]&lt;/code&gt; as Site Name and the cover image URL as Site URL.&lt;/p&gt;
    &lt;/div&gt;
  &lt;/details&gt;
&lt;/div&gt;

&lt;h2&gt;Categorized Posts&lt;/h2&gt;

&lt;p&gt;The &lt;b&gt;Categorized Posts&lt;/b&gt; widget can be used to display posts with a particular label on homepage. For an example, you can use it to display certain number of posts having label News. This widget can be disabled or customized through Layout.&lt;/p&gt;

&lt;ul class=&#39;steps&#39;&gt;
  &lt;li&gt;Go to Blogger Layout.&lt;/li&gt;
  &lt;li&gt;Search for the LinkList widget with title &lt;b&gt;Categorized Posts&lt;/b&gt; (if you have not renamed it).&lt;/li&gt;
  &lt;li&gt;Click on pencil icon beside the widget.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Quick Edit&lt;/h2&gt;

&lt;p&gt;The &lt;b&gt;Quick Edit&lt;/b&gt; feature can be used for navigating directly to Post Edit, Blog Layout, Blog Settings page by clicking on shortcut buttons which appear on UI when the page is viewed by a blog administrator. It can even display delete button next to comment if the page is viewed by a blog administrator or the commentor. This feature comes enabled by default, but you can disable or customize it through Theme Designer.&lt;/p&gt;

&lt;ul class=&#39;steps&#39;&gt;
  &lt;li&gt;Go to Blogger Theme Designer.&lt;/li&gt;
  &lt;li&gt;Click on &lt;b&gt;Advanced&lt;/b&gt; tab.&lt;/li&gt;
  &lt;li&gt;From dropdown selection list, select &lt;b&gt;Plugin: Quick Edit&lt;/b&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Syntax Highlighter&lt;/h2&gt;

&lt;p&gt;The &lt;b&gt;Syntax Highlighter&lt;/b&gt; feature can be used to highlight codes in code block components, it can also be used to automatically add copy button and line numbers to the code block. The feature comes enabled by default, but you can disable or customize it through Theme Designer.&lt;/p&gt;

&lt;ul class=&#39;steps&#39;&gt;
  &lt;li&gt;Go to Blogger Theme Designer.&lt;/li&gt;
  &lt;li&gt;Click on &lt;b&gt;Advanced&lt;/b&gt; tab.&lt;/li&gt;
  &lt;li&gt;From dropdown selection list, select &lt;b&gt;Plugin: Syntax Highlighter&lt;/b&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Microsoft Clarity&lt;/h2&gt;

&lt;p class=&#39;note wr&#39;&gt;&lt;u&gt;Microsoft Clarity&lt;/u&gt; plugin was added in v3.1, therefore you will be able to enable it if and only if you are using v3.1.0 or above otherwise you can simply follow their documentation.&lt;/p&gt;

&lt;p&gt;The theme has Microsoft Clarity plugin since it allows you to choose the script loading type. Follow these steps to enable the plugin:&lt;/p&gt;

&lt;ul class=&#39;steps&#39;&gt;
  &lt;li&gt;Login to Microsoft Clarity.&lt;/li&gt;
  &lt;li&gt;Select your project and navigate to its &lt;b&gt;Settings&lt;/b&gt;.&lt;/li&gt;
  &lt;li&gt;Click on &lt;b&gt;Overview&lt;/b&gt;.&lt;/li&gt;
  &lt;li&gt;Copy the &lt;b&gt;Project ID&lt;/b&gt; by clicking on the copy button next to project id.&lt;/li&gt;
  &lt;li&gt;Now, navigate to Blogger HTML Editor page.&lt;/li&gt;
  &lt;li&gt;
    Look for the following code snippet and paste the project id as marked:
    &lt;pre&gt;&lt;code&gt;&amp;lt;Variable name=&quot;clarity.trackingId&quot; description=&quot;Microsoft Clarity Tracking Code&quot; type=&quot;string&quot; default=&quot;&quot; value=&quot;&lt;mark data-before=&#39;Clarity Project ID here&#39;&gt;&lt;/mark&gt;&quot;/&amp;gt;
[!] Microsoft Clarity Tracking Code
[!] @type {String}&lt;/code&gt;&lt;/pre&gt;
  &lt;/li&gt;
  &lt;li&gt;Save the changes and navigate to Blogger Theme Designer.&lt;/li&gt;
  &lt;li&gt;Click on &lt;b&gt;Advanced&lt;/b&gt; tab.&lt;/li&gt;
  &lt;li&gt;From dropdown selection list, select &lt;b&gt;Plugin: Microsoft Clarity&lt;/b&gt;.&lt;/li&gt;
  &lt;li&gt;Set the length of &lt;b&gt;Enable Script&lt;/b&gt; to 2px in order to enable the plugin. You can set it back to 1px if you decided to disable it in future. You can also change the &lt;b&gt;Load Type&lt;/b&gt; if you wish, each load type has same behaviour as load type of Google Analytics plugin.&lt;/li&gt;
&lt;/ul&gt;
</description><link>https://www.plus-ui.blog/2024/10/widgets-and-plugins.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8128085283179772973.post-8134100952150409642</guid><pubDate>Sun, 27 Oct 2024 15:36:00 +0000</pubDate><atom:updated>2025-04-30T08:13:45.983-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Resources</category><title>Resources</title><description>&lt;style&gt;
.icons-wrapper {
  background: var(--contentB);
  border: 1px solid var(--contentL);
  border-radius: 8px;
}
.icons-wrapper input {
  width: 100%;
  border-radius: 0;
  border: none;
  outline: none;
  padding: 12px 16px;
  background: transparent;
  border-bottom: 1px solid var(--contentL);
}
.icons-container {
  position: relative;
  padding: 16px;
  max-height: 500px;
  overflow-x: hidden;
  overflow-y: auto;
}
.icons-wrapper.has-icons .icons-container{
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
}
.icons-container button {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px;
  border: 1px solid var(--contentL);
  border-radius: 4px;
  overflow: hidden;
  cursor: pointer;
}
.icons-container button::after{
  position: relative;
  content: attr(data-code);
  border-inline-start: 1px solid var(--contentL);
  padding-inline-start: 8px;
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
}
.icons-container svg {
  width: 20px;
  height: 20px;
  flex-shrink: 0;
}
@media screen and (max-width: 640px) {
  .icons-wrapper.has-icons .icons-container{
    grid-template-columns: repeat(2, 1fr);
  }
}
&lt;/style&gt;

&lt;h2&gt;SVG Icons&lt;/h2&gt;

&lt;p&gt;A list of SVG icons which can be used in Navigation Menu, to replace default icons or other purposes. These icons are powered by &lt;a class=&#39;extL&#39; href=&#39;https://iconsax.io/&#39; target=&#39;_blank&#39; rel=&#39;nofollow noreferrer noopener&#39;&gt;Iconsax&lt;/a&gt;. Click on an icon to copy its SVG code to the clipboard.&lt;/p&gt;

&lt;div id=&#39;icons_wrapper&#39;&gt;&lt;/div&gt;

&lt;script&gt;
/*! Author: Deo Kumar | Copyright (c): Fineshop Design (fineshopdesign.com) | License: Unlicensed */
((PU, window, document) =&gt; {
  const {
    gId: getElementById,
    qSel: querySelector,
    aCl: addClass,
    rCl: removeClass,
    cEl: createElement,
    dbc: debounce,
    aEL: addEventListener,
    tNtf: toastNotification
  } = PU;
  
  // ==== icons wrapper ====
  const ICONS_JSON_SOURCE = &quot;https://cdn.jsdelivr.net/gh/fineshop/plus-ui@2.6/docs/json/svg-icons.json&quot;;
  const iconsWrapper = getElementById(&#39;icons_wrapper&#39;);
  iconsWrapper.innerHTML = `&lt;div class=&#39;alert info&#39;&gt;&lt;b&gt;Loading icons&lt;/b&gt;Icons are being fetched, please wait...&lt;/div&gt;`;
  fetch(ICONS_JSON_SOURCE).then((res) =&gt; {
    if (res.ok) {
      return res.json();
    }
    throw new Error(`Failed to fetch icons (status: ${res.status})`);
  }).then((icons) =&gt; {
    addClass(iconsWrapper, &#39;icons-wrapper&#39;);
    iconsWrapper.innerHTML = `&lt;input type=&#39;text&#39; placeholder=&#39;Search among ${icons.length} icons&#39;/&gt;&lt;div class=&#39;icons-container&#39;&gt;&lt;/div&gt;`;
    const iconsContainer = querySelector(&#39;.icons-container&#39;, iconsWrapper);
    const queryInput = querySelector(&#39;input&#39;, iconsWrapper);
    
    const displayIcons = (query = null) =&gt; {
      let filteredIcons = icons;
      if (typeof query === &#39;string&#39;) {
        const queryTrimmed = query.trim();
        if (queryTrimmed) {
          const queryLowered = queryTrimmed.toLowerCase();
          const queryJoined = queryLowered.replace(/ /g, &quot;&quot;);
          filteredIcons = filteredIcons.filter((icon) =&gt; {
            const nameLowered = icon.code.trim().toLowerCase();
            const nameJoined = nameLowered.replace(/ /g, &quot;&quot;);
            return (
              nameLowered.includes(queryLowered) ||
              nameJoined.includes(queryJoined)
            );
          });
        }
      }
      
      if (filteredIcons.length === 0) {
        removeClass(iconsWrapper, &#39;has-icons&#39;);
        addClass(iconsWrapper, &#39;no-icons&#39;);
        iconsContainer.innerHTML = `No matching icons were found for the query.`;
      } else {
        removeClass(iconsWrapper, &#39;no-icons&#39;);
        addClass(iconsWrapper, &#39;has-icons&#39;);
        iconsContainer.innerHTML = &#39;&#39;;
        for (let i = 0; i &lt; filteredIcons.length; i++) {
          const icon = filteredIcons[i];
          const button = createElement(&#39;button&#39;, {
            type: &#39;button&#39;,
            innerHTML: icon.svg,
            attributes: {
              title: icon.code,
              &quot;data-name&quot;: icon.name,
              &quot;data-code&quot;: icon.code
            }
          });
          addEventListener(button, &#39;click&#39;, () =&gt; {
            PU.cpT(icon.svg).then(() =&gt; {
              toastNotification(`SVG code for &quot;${icon.code}&quot; has been copied to clipboard!`);
            });
          });
          iconsContainer.appendChild(button);
        }
      }
    }
    
    const debouncedDisplayIcons = debounce(displayIcons, 200);
    
    const getQuery = () =&gt; queryInput.value.trim();
    
    let previousQuery = &#39;&#39;;
    const onInputValue = () =&gt; {
      const query = getQuery();
      if (previousQuery !== query) {
        debouncedDisplayIcons(query);
        previousQuery = query;
      }
    };
    
    addEventListener(queryInput, &#39;input&#39;, onInputValue);
    addEventListener(queryInput, &#39;keyup&#39;, onInputValue);
    addEventListener(queryInput, &#39;change&#39;, onInputValue);
    
    displayIcons();
  }, () =&gt; {
    iconsWrapper.innerHTML = `&lt;div class=&#39;alert error&#39;&gt;&lt;b&gt;Failed to load icons&lt;/b&gt;An error occurred while fetching icons, please try reloading this page.&lt;/div&gt;`;
  });
})(PU, window, document);
&lt;/script&gt;
</description><link>https://www.plus-ui.blog/2024/10/resources.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8128085283179772973.post-4209620676010084370</guid><pubDate>Sun, 27 Oct 2024 15:35:00 +0000</pubDate><atom:updated>2025-10-30T09:26:40.302-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Documentation</category><title>Tabs Post</title><description>&lt;!--[ Explicitly sets post snippet ]--&gt;
&lt;div hidden=&#39;&#39; aria-hidden=&#39;true&#39;&gt;Post style to divide long posts into several parts in tabs.&lt;/div&gt;

&lt;!--[ Explicitly sets post thumbnail ]--&gt;
&lt;!--[
  &lt;div class=&#39;separator&#39;&gt;&lt;img src=&#39;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj92iLzCrNZZ39-y4uqwTutnLPKv9Ig2-jQA-0tP7nXSP_y9eNnt-tVuI9-Cu6VkOWdhyEHJrKCuoEQ9tAYAX6_rNj387NInQAE_VcT3cBT5AeQPnNoHZ2AVErzkGHXch1vCI8TEar5inw/s1280/taps-post.png&#39;/&gt;&lt;/div&gt;
]--&gt;

&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;

&lt;!--[ Tabs, remove classname &#39;stick&#39; to disable floating title ]--&gt;
&lt;div class=&#39;tabs stick&#39;&gt;
  &lt;!--[ Active function ]--&gt;
  &lt;input id=&#39;tabT-1&#39; type=&#39;radio&#39; name=&#39;postTabs&#39; checked=&#39;&#39;&gt;
  &lt;input id=&#39;tabT-2&#39; type=&#39;radio&#39; name=&#39;postTabs&#39;&gt;
  &lt;input id=&#39;tabT-3&#39; type=&#39;radio&#39; name=&#39;postTabs&#39;&gt;
  &lt;input id=&#39;tabT-4&#39; type=&#39;radio&#39; name=&#39;postTabs&#39;&gt;

  &lt;!--[ Tabs header/title ]--&gt;
  &lt;div&gt;
    &lt;!--[ Change atribute data-text=&#39;...&#39; to replace tabs title ]--&gt;
    &lt;label for=&#39;tabT-1&#39; data-text=&#39;Tab 01&#39;&gt;&lt;/label&gt;
    &lt;label for=&#39;tabT-2&#39; data-text=&#39;Tab 02&#39;&gt;&lt;/label&gt;
    &lt;label for=&#39;tabT-3&#39; data-text=&#39;Tab 03&#39;&gt;&lt;/label&gt;
    &lt;label for=&#39;tabT-4&#39; data-text=&#39;Documentation&#39;&gt;&lt;/label&gt;
  &lt;/div&gt;
  
  &lt;!--[ Tabs content ]--&gt;
  &lt;div class=&#39;tabC-1&#39;&gt;
    &lt;p&gt;You can divide long posts into several parts in tabs, the maximum tabs you can use is 5.&lt;/p&gt;
    
    &lt;p&gt;For example, you write an article in two languages, English and Hindi. You can place articles in English on the first tab and Hindi on the next tab.&lt;/p&gt;
      
    &lt;p&gt;Or if you share a file in your article, adding a download link in the second tab is also a good choice.&lt;/p&gt;
    
    &lt;p&gt;It is also used in the Product Post format.&lt;/p&gt;
    
    &lt;p&gt;Switch to &lt;b&gt;Documentation&lt;/b&gt; tab to read more.&lt;/p&gt;
    
    &lt;hr/&gt;
    
    &lt;h2&gt;Sample text to extend content&lt;/h2&gt;

    &lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin vestibulum dignissim diam, et efficitur felis commodo et. Mauris vel diam pellentesque lorem lacinia luctus. Nulla quam magna, pharetra in ultrices at, condimentum id tellus. Sed suscipit sapien sed turpis ultrices viverra. Ut quis dui sed odio sollicitudin fermentum. Aliquam vitae metus laoreet, dapibus enim sit amet, feugiat lorem. Sed in dui purus.&lt;/p&gt;

    &lt;p&gt;Morbi turpis arcu, eleifend a tortor quis, sagittis dapibus ipsum. Vestibulum in imperdiet arcu, eget fringilla libero. Aenean commodo, felis id fermentum pellentesque, risus elit efficitur augue, at lobortis libero ipsum quis nulla. Suspendisse imperdiet magna at tellus feugiat rhoncus. Donec in massa vitae quam lobortis cursus. Donec tincidunt interdum ex ut finibus.&lt;/p&gt;

    &lt;p&gt;Praesent at dui scelerisque, laoreet justo eu, egestas justo. Nullam dapibus, dolor quis blandit suscipit, massa odio hendrerit neque, at fermentum dolor tellus ac justo. Cras placerat sit amet libero sit amet rhoncus. Aenean ultrices vitae erat ut malesuada. Vivamus fringilla mollis leo, ut tempus nibh feugiat sollicitudin. Phasellus sodales maximus turpis, eget sollicitudin tortor volutpat ac.&lt;/p&gt;

    &lt;p&gt;In imperdiet ultrices iaculis. Proin consequat, massa ut hendrerit lacinia, eros nibh finibus justo, ut consectetur nibh orci vitae massa. Ut sodales lobortis sollicitudin. Phasellus eget mi dictum neque mollis vehicula. Vestibulum et dolor accumsan, volutpat est quis, posuere tortor. Maecenas euismod turpis eu metus elementum tempor. Pellentesque in ullamcorper massa. Pellentesque lectus ipsum, dignissim nec ornare et, laoreet eget ex. Duis convallis lorem vitae consequat mattis. Aenean dui lectus, auctor eu dui et, gravida pellentesque velit. In vitae justo lacus. Vivamus id imperdiet sapien. Mauris non maximus purus. Nulla facilisi.&lt;/p&gt;
  &lt;/div&gt;

  &lt;!--[ Tabs content ]--&gt;
  &lt;div class=&#39;tabC-2&#39;&gt;
    &lt;p&gt;Curabitur quis vestibulum arcu, at aliquet urna. Aenean ex risus, rhoncus vitae urna accumsan, congue aliquet tortor. Suspendisse imperdiet nibh eget odio posuere maximus. Integer vitae neque ante. Donec pellentesque dictum diam, a luctus lectus ultrices vitae.&lt;/p&gt;
      
    &lt;p&gt;Donec pretium dui erat, a maximus nunc dapibus sed. Nulla malesuada lectus a felis malesuada pretium. Nulla sit amet augue in neque rhoncus commodo ac nec nibh. Duis semper eleifend mauris, vel tristique velit bibendum sit amet. Mauris vitae justo eu nisl scelerisque condimentum eget eu mi.&lt;/p&gt;

    &lt;p&gt;Nullam non sapien sit amet ex consequat tempor ut nec risus. Phasellus non justo eget ex faucibus mattis. Vivamus vestibulum interdum consectetur. Morbi pulvinar ut lectus eu semper. Ut et sagittis leo. Pellentesque vitae posuere orci. Praesent sit amet egestas tortor, vel consectetur nulla. Duis feugiat consectetur nisl.&lt;/p&gt;
      
    &lt;p&gt;Nunc interdum a sapien sed commodo. Maecenas porttitor dictum mi quis luctus. Vestibulum turpis quam, laoreet in dignissim dapibus, ullamcorper in tortor. Morbi malesuada massa sapien, sagittis ullamcorper quam pharetra ultrices.&lt;/p&gt;

    &lt;p&gt;Donec laoreet fringilla mattis. Proin vitae scelerisque neque, nec imperdiet sem. Aliquam pellentesque euismod eros, eget pharetra est vehicula eu. Nulla ligula orci, pellentesque sed quam vel, posuere sodales neque. Nulla turpis justo, lobortis vel imperdiet ut, viverra id nunc. Aliquam ipsum lectus, rutrum vel blandit sed, commodo ut ligula.&lt;/p&gt;
      
    &lt;p&gt;Ut in condimentum eros. Duis in elit ultricies, molestie metus ac, dapibus augue. Pellentesque eu feugiat risus, sed rhoncus urna. Quisque viverra tellus nec placerat ullamcorper. Sed nec volutpat est, at pharetra mauris. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Morbi eu ultrices metus. Morbi placerat tempus nibh nec ultricies.&lt;/p&gt;
  &lt;/div&gt;

  &lt;!--[ Tabs content ]--&gt;
  &lt;div class=&#39;tabC-3&#39;&gt;
    &lt;p&gt;Proin finibus aliquam suscipit. Mauris malesuada ornare sollicitudin. Sed faucibus lacinia pharetra. Nunc ultrices neque eget accumsan dignissim. Fusce efficitur ultricies volutpat. Maecenas ut mauris in dui pretium eleifend eu at purus. Etiam pretium luctus massa eget condimentum. Morbi gravida, elit at molestie rutrum, ligula est accumsan nunc, fringilla suscipit orci ligula vel est.&lt;/p&gt;
      
    &lt;p&gt;Aliquam auctor cursus lacinia. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut non porttitor ligula, vitae ultricies nisl. Phasellus quis arcu arcu. Praesent at nunc faucibus, sagittis ipsum non, egestas magna. Nam enim eros, fermentum nec odio vitae, blandit molestie lorem. Pellentesque sed mattis elit.&lt;/p&gt;

    &lt;p&gt;Donec vulputate id nisi ut pharetra. Nunc et risus lorem. Praesent in lectus nulla. Cras convallis odio eros, consectetur tristique turpis dictum feugiat. Aenean leo sem, blandit quis ante eu, tempus laoreet nisi. Duis in tincidunt lacus. Donec ornare ac nisl nec convallis. Etiam interdum ipsum nisl, sollicitudin luctus quam sollicitudin quis.&lt;/p&gt;
      
    &lt;p&gt;Ut ipsum libero, cursus vel scelerisque eget, elementum quis velit. Donec quis velit at ex faucibus cursus. Nulla at erat sed leo consectetur auctor sed dignissim est. Maecenas nec gravida dui. Maecenas non nisi nibh. Nunc viverra nisl sed risus sagittis vulputate. Quisque egestas eros non ornare mollis. Nunc ornare viverra nibh vitae faucibus.&lt;/p&gt;

    &lt;p&gt;Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In eget porta sapien. Donec eu sapien egestas, blandit sem in, consectetur neque. Cras quis diam id ipsum volutpat pretium vulputate sit amet dolor. Nunc quis tortor scelerisque, egestas lectus vitae, auctor augue. Proin sit amet efficitur tellus, et lacinia lorem.&lt;/p&gt;
      
    &lt;p&gt;Etiam lacus mauris, mattis ut sagittis et, suscipit ac elit. Nulla vitae luctus leo. Vivamus sit amet est vitae nisi vulputate iaculis vitae in lorem. Nullam lectus lectus, luctus vitae ante ut, finibus ultricies eros. Aenean quis rhoncus nibh. Ut nibh massa, venenatis id neque quis, sodales semper lorem. Mauris feugiat elementum arcu, eu rutrum erat congue quis. Nam lacinia orci id facilisis aliquet. Vestibulum tellus elit, feugiat nec sem ac, gravida interdum augue. Donec ligula augue, viverra eu odio sit amet, tempor euismod augue.&lt;/p&gt;
  &lt;/div&gt;
  
  &lt;!--[ Tabs content ]--&gt;
  &lt;div class=&#39;tabC-4&#39;&gt;
    &lt;p&gt;To use tabs in your post, you can use the following code snippet:&lt;/p&gt;
    
    &lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Tabs, remove classname &#39;stick&#39; to disable floating title ]--&amp;gt;
&amp;lt;div class=&#39;tabs stick&#39;&amp;gt;
  &amp;lt;!--[ Active function ]--&amp;gt;
  &amp;lt;input id=&#39;tabT-1&#39; type=&#39;radio&#39; name=&#39;postTabs&#39; checked=&#39;&#39;&amp;gt;
  &amp;lt;input id=&#39;tabT-2&#39; type=&#39;radio&#39; name=&#39;postTabs&#39;&amp;gt;
  &amp;lt;input id=&#39;tabT-3&#39; type=&#39;radio&#39; name=&#39;postTabs&#39;&amp;gt;
  &amp;lt;input id=&#39;tabT-4&#39; type=&#39;radio&#39; name=&#39;postTabs&#39;&amp;gt;

  &amp;lt;!--[ Tabs header/title ]--&amp;gt;
  &amp;lt;div&amp;gt;
    &amp;lt;!--[ Change atribute data-text=&#39;...&#39; to replace tabs title ]--&amp;gt;
    &amp;lt;label for=&#39;tabT-1&#39; data-text=&#39;Tab 01&#39;&amp;gt;&amp;lt;/label&amp;gt;
    &amp;lt;label for=&#39;tabT-2&#39; data-text=&#39;Tab 02&#39;&amp;gt;&amp;lt;/label&amp;gt;
    &amp;lt;label for=&#39;tabT-3&#39; data-text=&#39;Tab 03&#39;&amp;gt;&amp;lt;/label&amp;gt;
    &amp;lt;label for=&#39;tabT-4&#39; data-text=&#39;Tab 04&#39;&amp;gt;&amp;lt;/label&amp;gt;
  &amp;lt;/div&amp;gt;
  
  &amp;lt;!--[ Tabs content ]--&amp;gt;
  &amp;lt;div class=&#39;tabC-1&#39;&amp;gt;
    tab_1_content
  &amp;lt;/div&amp;gt;
  
  &amp;lt;!--[ Tabs content ]--&amp;gt;
  &amp;lt;div class=&#39;tabC-2&#39;&amp;gt;
    tab_2_content
  &amp;lt;/div&amp;gt;
  
  &amp;lt;!--[ Tabs content ]--&amp;gt;
  &amp;lt;div class=&#39;tabC-3&#39;&amp;gt;
    tab_3_content
  &amp;lt;/div&amp;gt;
  
  &amp;lt;!--[ Tabs content ]--&amp;gt;
  &amp;lt;div class=&#39;tabC-4&#39;&amp;gt;
    tab_4_content
  &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
</description><link>https://www.plus-ui.blog/2024/10/tabs-post.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj92iLzCrNZZ39-y4uqwTutnLPKv9Ig2-jQA-0tP7nXSP_y9eNnt-tVuI9-Cu6VkOWdhyEHJrKCuoEQ9tAYAX6_rNj387NInQAE_VcT3cBT5AeQPnNoHZ2AVErzkGHXch1vCI8TEar5inw/s72-c/taps-post.png" height="72" width="72"/><thr:total>4</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8128085283179772973.post-3540260500961001912</guid><pubDate>Sun, 27 Oct 2024 15:34:00 +0000</pubDate><atom:updated>2025-10-30T09:26:11.450-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Documentation</category><title>Split Post</title><description>&lt;!--[ Explicitly sets post snippet ]--&gt;
&lt;div hidden=&#39;&#39; aria-hidden=&#39;true&#39;&gt;Post style to divide articles into several pages.&lt;/div&gt;

&lt;!--[ Explicitly sets post thumbnail ]--&gt;
&lt;!--[
  &lt;div class=&#39;separator&#39;&gt;&lt;img src=&#39;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRk9LaanykE90czVs3LSOrLi3YXc01GeDuPZO8Ua8fRSI1zP8smppnw4l4qn0IJIHnvFu-H845TrQ01wB8kbroG_CiNflsmod8LKy9AwwogKaMLN-hGjZiUJ22BLNDWHsv1pTqLmmx6-g/s1280/split-post.png&#39;/&gt;&lt;/div&gt;
]--&gt;

&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;

&lt;div id=&#39;postSplit&#39;&gt;
  &lt;table class=&#39;tr-caption-container&#39;&gt;
    &lt;tbody&gt;
      &lt;tr&gt;
        &lt;td&gt;
          &lt;!--img--&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td class=&#39;tr-caption&#39;&gt;Post style to divide articles into several pages.&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
  
  &lt;p class=&#39;alert info outline&#39;&gt;Looking for documentation? Navigate to page 2.&lt;/p&gt;
  
  &lt;h2&gt;Sample text to extend content&lt;/h2&gt;

  &lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin vestibulum dignissim diam, et efficitur felis commodo et. Mauris vel diam pellentesque lorem lacinia luctus. Nulla quam magna, pharetra in ultrices at, condimentum id tellus. Sed suscipit sapien sed turpis ultrices viverra. Ut quis dui sed odio sollicitudin fermentum. Aliquam vitae metus laoreet, dapibus enim sit amet, feugiat lorem. Sed in dui purus.&lt;/p&gt;

  &lt;p&gt;Morbi turpis arcu, eleifend a tortor quis, sagittis dapibus ipsum. Vestibulum in imperdiet arcu, eget fringilla libero. Aenean commodo, felis id fermentum pellentesque, risus elit efficitur augue, at lobortis libero ipsum quis nulla. Suspendisse imperdiet magna at tellus feugiat rhoncus. Donec in massa vitae quam lobortis cursus. Donec tincidunt interdum ex ut finibus.&lt;/p&gt;

  &lt;p&gt;Praesent at dui scelerisque, laoreet justo eu, egestas justo. Nullam dapibus, dolor quis blandit suscipit, massa odio hendrerit neque, at fermentum dolor tellus ac justo. Cras placerat sit amet libero sit amet rhoncus. Aenean ultrices vitae erat ut malesuada. Vivamus fringilla mollis leo, ut tempus nibh feugiat sollicitudin. Phasellus sodales maximus turpis, eget sollicitudin tortor volutpat ac.&lt;/p&gt;

  &lt;p&gt;In imperdiet ultrices iaculis. Proin consequat, massa ut hendrerit lacinia, eros nibh finibus justo, ut consectetur nibh orci vitae massa. Ut sodales lobortis sollicitudin. Phasellus eget mi dictum neque mollis vehicula. Vestibulum et dolor accumsan, volutpat est quis, posuere tortor. Maecenas euismod turpis eu metus elementum tempor. Pellentesque in ullamcorper massa. Pellentesque lectus ipsum, dignissim nec ornare et, laoreet eget ex. Duis convallis lorem vitae consequat mattis. Aenean dui lectus, auctor eu dui et, gravida pellentesque velit. In vitae justo lacus. Vivamus id imperdiet sapien. Mauris non maximus purus. Nulla facilisi.&lt;/p&gt;
  
  &lt;!--nextpage--&gt;
  &lt;h2&gt;Documentation&lt;/h2&gt;
  
  &lt;ol class=&#39;steps&#39;&gt;
    &lt;li&gt;In post editor view, click &lt;span style=&#39;display:inline-block;vertical-align:top&#39;&gt;&lt;svg viewBox=&#39;0 0 48 48&#39;&gt;&lt;path d=&#39;M6 34.5V42h7.5l22.13-22.13-7.5-7.5L6 34.5zm35.41-20.41c.78-.78.78-2.05 0-2.83l-4.67-4.67c-.78-.78-2.05-.78-2.83 0l-3.66 3.66 7.5 7.5 3.66-3.66z&#39;/&gt;&lt;/svg&gt;&lt;/span&gt; icon at the bottom right of the title.&lt;/li&gt;
    &lt;li&gt;Two options will appear: &lt;b&gt;HTML view&lt;/b&gt; and &lt;b&gt;Writing view&lt;/b&gt;.&lt;/li&gt;
    &lt;li&gt;Select &#39;&lt;span style=&#39;display:inline-flex;align-items:baseline&#39;&gt;&lt;svg viewBox=&#39;0 0 48 48&#39; style=&#39;align-self:center&#39;&gt;&lt;path d=&#39;M0 0h48v48H0V0z&#39; fill=&#39;none&#39;/&gt;&lt;path d=&#39;M18.8 33.2L9.7 24l9.2-9.2L16 12 4 24l12 12 2.8-2.8zm10.4 0l9.2-9.2-9.2-9.2L32 12l12 12-12 12-2.8-2.8z&#39;/&gt;&lt;/svg&gt;&lt;b style=&#39;text-indent:4px&#39;&gt;HTML View&lt;/b&gt;&lt;/span&gt;&#39;.&lt;/li&gt;
    &lt;li&gt;
      Copy and paste the following code and make appropriate changes.
      &lt;pre&gt;&lt;code&gt;&amp;lt;div id=&#39;postSplit&#39;&amp;gt;
page_1_contents

&amp;lt;!--nextpage--&amp;gt;
page_2_contents

&amp;lt;!--nextpage--&amp;gt;
page_3_contents

&amp;lt;!--nextpage--&amp;gt;
page_4_contents
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
    &lt;/li&gt;
    &lt;li&gt;
      If you are using version 3.0.0, you need to add the following just below the above code snippet.
      &lt;p class=&#39;note wr&#39;&gt;&lt;b&gt;Warning&lt;/b&gt;&lt;br&gt;
        Do not add it if you are using version above to 3.0.0
      &lt;/p&gt;
      &lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Split Post javascript ]--&amp;gt;
&amp;lt;script&amp;gt;
/*! Plus UI Javascript (split-post.js) | Authors: Deo Kumar, Armaan Kumar (https://fineshopdesign.com) | License: Unlicensed | Copyright (c) 2024 Fineshop Design */
&quot;use strict&quot;;((e,t,a,i)=&amp;gt;{let{df:l,gId:s,mc:n,vw:o,eHTML:r}=e;o.iBt||l.then((()=&amp;gt;{let e=s(i.id);if(e){let a=e.innerHTML.split(&quot;\x3c!--nextpage--\x3e&quot;),i=a.length,l=t.location.search.match(/[?&amp;amp;]page=(\d+)/),s=l&amp;amp;&amp;amp;l[1]?Number(l[1]):1;s&amp;gt;i&amp;amp;&amp;amp;(s=1);let o=a[s-1],d=&quot;&amp;lt;svg class=&#39;line&#39; viewBox=&#39;0 0 24 24&#39;&amp;gt;&amp;lt;path d=&#39;M9.57 5.92993L3.5 11.9999L9.57 18.0699&#39; stroke-miterlimit=&#39;10&#39;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;path d=&#39;M20.5 12H3.67004&#39; stroke-miterlimit=&#39;10&#39;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;/svg&amp;gt;&quot;,p=&quot;&amp;lt;svg class=&#39;line&#39; viewBox=&#39;0 0 24 24&#39;&amp;gt;&amp;lt;path d=&#39;M14.4301 5.92993L20.5001 11.9999L14.4301 18.0699&#39; stroke-miterlimit=&#39;10&#39;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;path d=&#39;M3.5 12H20.33&#39; stroke-miterlimit=&#39;10&#39;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;/svg&amp;gt;&quot;;o+=&quot;&amp;lt;div class=&#39;blogN numP&#39;&amp;gt;&quot;,o+=`&amp;lt;div class=&#39;nPst&#39; data-text=&#39;Page ${s} of ${i}:&#39;&amp;gt;&amp;lt;/div&amp;gt;`,s-1==0&amp;amp;&amp;amp;(o+=`&amp;lt;div class=&#39;nwLnk nPst&#39;&amp;gt;${d}&amp;lt;/div&amp;gt;`);for(let e=1;e&amp;lt;=i;e++)e===s?o+=`&amp;lt;div class=&#39;nPst&#39; data-text=&#39;${e}&#39;&amp;gt;&amp;lt;/div&amp;gt;`:e===s-1?o+=`&amp;lt;a class=&#39;nwLnk&#39; href=&#39;?page=${e}&#39; rel=&#39;nofollow noreferrer noopener&#39; aria-label=&#39;${r(n.previous,!0,!1)}&#39; data-text=&#39;${e}&#39;&amp;gt;${d}&amp;lt;/a&amp;gt;`:e===s+1?o+=`&amp;lt;a class=&#39;olLnk&#39; href=&#39;?page=${e}&#39; rel=&#39;nofollow noreferrer noopener&#39; aria-label=&#39;${r(n.next,!0,!1)}&#39; data-text=&#39;${e}&#39;&amp;gt;${p}&amp;lt;/a&amp;gt;`:e&amp;gt;=s-3&amp;amp;&amp;amp;e&amp;lt;=s+3||1===e||e===i?o+=`&amp;lt;a href=&#39;?page=${e}&#39; rel=&#39;nofollow noreferrer noopener&#39; aria-label=&#39;Page ${e}&#39; data-text=&#39;${e}&#39;&amp;gt;&amp;lt;/a&amp;gt;`:(e===s-4||e===s+4)&amp;amp;&amp;amp;(o+=&quot;&amp;lt;div class=&#39;nPst&#39; data-text=&#39;...&#39;&amp;gt;&amp;lt;/div&amp;gt;&quot;);s+1&amp;gt;i&amp;amp;&amp;amp;(o+=`&amp;lt;div class=&#39;olLnk nPst&#39;&amp;gt;${p}&amp;lt;/div&amp;gt;`),o+=&quot;&amp;lt;/div&amp;gt;&quot;,e.innerHTML=o}else console.warn(`Split post element with id &#39;${i.id}&#39; does not exist in document while split-post.js is used!`)}))})(PU,window,document,{id:&quot;postSplit&quot;});
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
  
  &lt;!--nextpage--&gt;
  &lt;p&gt;Curabitur quis vestibulum arcu, at aliquet urna. Aenean ex risus, rhoncus vitae urna accumsan, congue aliquet tortor. Suspendisse imperdiet nibh eget odio posuere maximus. Integer vitae neque ante. Donec pellentesque dictum diam, a luctus lectus ultrices vitae.&lt;/p&gt;
      
  &lt;p&gt;Donec pretium dui erat, a maximus nunc dapibus sed. Nulla malesuada lectus a felis malesuada pretium. Nulla sit amet augue in neque rhoncus commodo ac nec nibh. Duis semper eleifend mauris, vel tristique velit bibendum sit amet. Mauris vitae justo eu nisl scelerisque condimentum eget eu mi.&lt;/p&gt;

  &lt;p&gt;Nullam non sapien sit amet ex consequat tempor ut nec risus. Phasellus non justo eget ex faucibus mattis. Vivamus vestibulum interdum consectetur. Morbi pulvinar ut lectus eu semper. Ut et sagittis leo. Pellentesque vitae posuere orci. Praesent sit amet egestas tortor, vel consectetur nulla. Duis feugiat consectetur nisl.&lt;/p&gt;
      
  &lt;p&gt;Nunc interdum a sapien sed commodo. Maecenas porttitor dictum mi quis luctus. Vestibulum turpis quam, laoreet in dignissim dapibus, ullamcorper in tortor. Morbi malesuada massa sapien, sagittis ullamcorper quam pharetra ultrices.&lt;/p&gt;

  &lt;!--nextpage--&gt;
  &lt;p&gt;Donec laoreet fringilla mattis. Proin vitae scelerisque neque, nec imperdiet sem. Aliquam pellentesque euismod eros, eget pharetra est vehicula eu. Nulla ligula orci, pellentesque sed quam vel, posuere sodales neque. Nulla turpis justo, lobortis vel imperdiet ut, viverra id nunc. Aliquam ipsum lectus, rutrum vel blandit sed, commodo ut ligula.&lt;/p&gt;
  
  &lt;!--nextpage--&gt;
  &lt;p&gt;Ut in condimentum eros. Duis in elit ultricies, molestie metus ac, dapibus augue. Pellentesque eu feugiat risus, sed rhoncus urna. Quisque viverra tellus nec placerat ullamcorper. Sed nec volutpat est, at pharetra mauris. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Morbi eu ultrices metus. Morbi placerat tempus nibh nec ultricies.&lt;/p&gt;
  
  &lt;!--nextpage--&gt;
  &lt;p&gt;Proin finibus aliquam suscipit. Mauris malesuada ornare sollicitudin. Sed faucibus lacinia pharetra. Nunc ultrices neque eget accumsan dignissim. Fusce efficitur ultricies volutpat. Maecenas ut mauris in dui pretium eleifend eu at purus. Etiam pretium luctus massa eget condimentum. Morbi gravida, elit at molestie rutrum, ligula est accumsan nunc, fringilla suscipit orci ligula vel est.&lt;/p&gt;
  
  &lt;!--nextpage--&gt;
  &lt;p&gt;Aliquam auctor cursus lacinia. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut non porttitor ligula, vitae ultricies nisl. Phasellus quis arcu arcu. Praesent at nunc faucibus, sagittis ipsum non, egestas magna. Nam enim eros, fermentum nec odio vitae, blandit molestie lorem. Pellentesque sed mattis elit.&lt;/p&gt;

  &lt;!--nextpage--&gt;
  &lt;p&gt;Donec vulputate id nisi ut pharetra. Nunc et risus lorem. Praesent in lectus nulla. Cras convallis odio eros, consectetur tristique turpis dictum feugiat. Aenean leo sem, blandit quis ante eu, tempus laoreet nisi. Duis in tincidunt lacus. Donec ornare ac nisl nec convallis. Etiam interdum ipsum nisl, sollicitudin luctus quam sollicitudin quis.&lt;/p&gt;
  
  &lt;!--nextpage--&gt;
  &lt;p&gt;Ut ipsum libero, cursus vel scelerisque eget, elementum quis velit. Donec quis velit at ex faucibus cursus. Nulla at erat sed leo consectetur auctor sed dignissim est. Maecenas nec gravida dui. Maecenas non nisi nibh. Nunc viverra nisl sed risus sagittis vulputate. Quisque egestas eros non ornare mollis. Nunc ornare viverra nibh vitae faucibus.&lt;/p&gt;

  &lt;!--nextpage--&gt;
  &lt;p&gt;Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In eget porta sapien. Donec eu sapien egestas, blandit sem in, consectetur neque. Cras quis diam id ipsum volutpat pretium vulputate sit amet dolor. Nunc quis tortor scelerisque, egestas lectus vitae, auctor augue. Proin sit amet efficitur tellus, et lacinia lorem.&lt;/p&gt;
  
  &lt;!--nextpage--&gt;
  &lt;p&gt;Etiam lacus mauris, mattis ut sagittis et, suscipit ac elit. Nulla vitae luctus leo. Vivamus sit amet est vitae nisi vulputate iaculis vitae in lorem. Nullam lectus lectus, luctus vitae ante ut, finibus ultricies eros. Aenean quis rhoncus nibh. Ut nibh massa, venenatis id neque quis, sodales semper lorem. Mauris feugiat elementum arcu, eu rutrum erat congue quis. Nam lacinia orci id facilisis aliquet. Vestibulum tellus elit, feugiat nec sem ac, gravida interdum augue. Donec ligula augue, viverra eu odio sit amet, tempor euismod augue.&lt;/p&gt;
&lt;/div&gt;

&lt;!--[ Split Post javascript ]--&gt;
&lt;script&gt;
/*! Plus UI Javascript (split-post.js) | Authors: Deo Kumar, Armaan Kumar (https://fineshopdesign.com) | License: Unlicensed | Copyright (c) 2024 Fineshop Design */
&quot;use strict&quot;;((e,t,a,i)=&gt;{let{df:l,gId:s,mc:n,vw:o,eHTML:r}=e;o.iBt||l.then((()=&gt;{let e=s(i.id);if(e){let a=e.innerHTML.split(&quot;\x3c!--nextpage--\x3e&quot;),i=a.length,l=t.location.search.match(/[?&amp;]page=(\d+)/),s=l&amp;&amp;l[1]?Number(l[1]):1;s&gt;i&amp;&amp;(s=1);let o=a[s-1],d=&quot;&lt;svg class=&#39;line&#39; viewBox=&#39;0 0 24 24&#39;&gt;&lt;path d=&#39;M9.57 5.92993L3.5 11.9999L9.57 18.0699&#39; stroke-miterlimit=&#39;10&#39;&gt;&lt;/path&gt;&lt;path d=&#39;M20.5 12H3.67004&#39; stroke-miterlimit=&#39;10&#39;&gt;&lt;/path&gt;&lt;/svg&gt;&quot;,p=&quot;&lt;svg class=&#39;line&#39; viewBox=&#39;0 0 24 24&#39;&gt;&lt;path d=&#39;M14.4301 5.92993L20.5001 11.9999L14.4301 18.0699&#39; stroke-miterlimit=&#39;10&#39;&gt;&lt;/path&gt;&lt;path d=&#39;M3.5 12H20.33&#39; stroke-miterlimit=&#39;10&#39;&gt;&lt;/path&gt;&lt;/svg&gt;&quot;;o+=&quot;&lt;div class=&#39;blogN numP&#39;&gt;&quot;,o+=`&lt;div class=&#39;nPst&#39; data-text=&#39;Page ${s} of ${i}:&#39;&gt;&lt;/div&gt;`,s-1==0&amp;&amp;(o+=`&lt;div class=&#39;nwLnk nPst&#39;&gt;${d}&lt;/div&gt;`);for(let e=1;e&lt;=i;e++)e===s?o+=`&lt;div class=&#39;nPst&#39; data-text=&#39;${e}&#39;&gt;&lt;/div&gt;`:e===s-1?o+=`&lt;a class=&#39;nwLnk&#39; href=&#39;?page=${e}&#39; rel=&#39;nofollow noreferrer noopener&#39; aria-label=&#39;${r(n.previous,!0,!1)}&#39; data-text=&#39;${e}&#39;&gt;${d}&lt;/a&gt;`:e===s+1?o+=`&lt;a class=&#39;olLnk&#39; href=&#39;?page=${e}&#39; rel=&#39;nofollow noreferrer noopener&#39; aria-label=&#39;${r(n.next,!0,!1)}&#39; data-text=&#39;${e}&#39;&gt;${p}&lt;/a&gt;`:e&gt;=s-3&amp;&amp;e&lt;=s+3||1===e||e===i?o+=`&lt;a href=&#39;?page=${e}&#39; rel=&#39;nofollow noreferrer noopener&#39; aria-label=&#39;Page ${e}&#39; data-text=&#39;${e}&#39;&gt;&lt;/a&gt;`:(e===s-4||e===s+4)&amp;&amp;(o+=&quot;&lt;div class=&#39;nPst&#39; data-text=&#39;...&#39;&gt;&lt;/div&gt;&quot;);s+1&gt;i&amp;&amp;(o+=`&lt;div class=&#39;olLnk nPst&#39;&gt;${p}&lt;/div&gt;`),o+=&quot;&lt;/div&gt;&quot;,e.innerHTML=o}else console.warn(`Split post element with id &#39;${i.id}&#39; does not exist in document while split-post.js is used!`)}))})(PU,window,document,{id:&quot;postSplit&quot;});
&lt;/script&gt;</description><link>https://www.plus-ui.blog/2024/10/split-post.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRk9LaanykE90czVs3LSOrLi3YXc01GeDuPZO8Ua8fRSI1zP8smppnw4l4qn0IJIHnvFu-H845TrQ01wB8kbroG_CiNflsmod8LKy9AwwogKaMLN-hGjZiUJ22BLNDWHsv1pTqLmmx6-g/s72-c/split-post.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8128085283179772973.post-1701613965576118571</guid><pubDate>Sun, 27 Oct 2024 15:33:00 +0000</pubDate><atom:updated>2026-01-06T08:10:07.431-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Fullpage</category><title>Fullpage Post</title><description>&lt;!--&lt;p class=&#39;note&#39;&gt;&lt;b&gt;🚧 Under Construction!&lt;/b&gt;&lt;br&gt;
  The post is to be written or updated. Try visiting it later.
&lt;/p&gt;--&gt;

&lt;p&gt;Fullpage post style makes the post content more focused by hiding the sidebar. It can be enabled by adding a label &lt;code&gt;Fullpage&lt;/code&gt; to the post.&lt;/p&gt;
</description><link>https://www.plus-ui.blog/2024/10/fullpage-post.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8128085283179772973.post-6018012192015002816</guid><pubDate>Sun, 27 Oct 2024 15:32:00 +0000</pubDate><atom:updated>2025-06-23T08:25:01.122-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Documentation</category><category domain="http://www.blogger.com/atom/ns#">Product</category><title>Product Post</title><description>&lt;!--[ Explicitly sets post thumbnail ]--&gt;
&lt;!--[
  &lt;div class=&#39;separator&#39;&gt;&lt;img src=&#39;&#39;/&gt;&lt;/div&gt;
]--&gt;

&lt;!--[ Image with caption ]--&gt;
&lt;table class=&#39;tr-caption-container&#39;&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;
        &lt;img alt=&#39;HP Pavilion Laptop 15-eh1101AU&#39; width=&#39;1280&#39; height=&#39;720&#39; src=&#39;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhlmxjjEVsUtVQBywwPr71Kaub2SWDF9S_vm5vBJzh5q3u-Whz_rIg6jABe2mP9wGkMTxUxvFMHORB_7K9MSpif8ogjaGRxjf3_gMJnwaO9-FdX_M-adxvFadG10QKbHMvlSUVi2V9pyKQIiMCaErp5USIN1v4L16MdrIUji8B9YBHcxVLwm19pU8IMQ/s1280/HP_Pavilion.webp&#39;/&gt;
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td class=&#39;tr-caption&#39; data-text=&#39;HP Pavilion Laptop 15-eh1101AU&#39;&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;!--[ Price to show in homepage ]--&gt;
&lt;div class=&#39;pPric pPad&#39; data-text=&#39;Price&#39;&gt;₹55,990.00&lt;/div&gt;

&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;

&lt;!--[ Post snippet ]--&gt;
&lt;div class=&#39;hidden&#39;&gt;Specifications, Design, Performance, Battery&lt;/div&gt;

&lt;div class=&#39;pInfo pPad&#39;&gt;
  &lt;div class=&#39;L&#39;&gt;&lt;small&gt;Series&lt;/small&gt;&lt;span&gt;HP Pavilion Laptop 15-eh1101AU&lt;/span&gt;&lt;/div&gt;
  &lt;div class=&#39;R&#39;&gt;&lt;small&gt;Brand&lt;/small&gt;&lt;span&gt;HP&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&#39;pInfo pPad&#39;&gt;
  &lt;div class=&#39;L&#39;&gt;&lt;small&gt;Specific Uses For Product&lt;/small&gt;&lt;span&gt;Multimedia&lt;/span&gt;&lt;/div&gt;
  &lt;div class=&#39;R&#39;&gt;&lt;small&gt;Screen Size&lt;/small&gt;&lt;span&gt;15.6 Inches&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&#39;pInfo pPad&#39;&gt;
  &lt;div class=&#39;L&#39;&gt;&lt;small&gt;Operating System&lt;/small&gt;&lt;span&gt;Windows 10 Home&lt;/span&gt;&lt;/div&gt;
  &lt;div class=&#39;R&#39;&gt;&lt;small&gt;Human Interface Input&lt;/small&gt;&lt;span&gt;Touchscreen&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&#39;pInfo pPad&#39;&gt;
  &lt;div class=&#39;L&#39;&gt;&lt;small&gt;CPU Manufacturer&lt;/small&gt;&lt;span&gt;AMD&lt;/span&gt;&lt;/div&gt;
  &lt;div class=&#39;R&#39;&gt;&lt;small&gt;Graphics Card Description&lt;/small&gt;&lt;span&gt;Integrated&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&#39;pInfo pPad&#39;&gt;
  &lt;div class=&#39;L&#39;&gt;&lt;small&gt;Processor&lt;/small&gt;&lt;span&gt;AMD Ryzen 5 5500U&lt;/span&gt;&lt;/div&gt;
  &lt;div class=&#39;R&#39;&gt;&lt;small&gt;Storage&lt;/small&gt;&lt;span&gt;512 GB SSD&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&#39;pInfo pPad&#39;&gt;
  &lt;div class=&#39;L&#39;&gt;&lt;small&gt;Memory&lt;/small&gt;&lt;span&gt;8 GB DDR4-3200 MHz&lt;/span&gt;&lt;/div&gt;
  &lt;div class=&#39;L&#39;&gt;&lt;small&gt;Special Feature&lt;/small&gt;&lt;span&gt;Micro-Edge Display, Thin&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&#39;pInfo pPad&#39;&gt;
  &lt;div class=&#39;R&#39;&gt;&lt;small&gt;Colour&lt;/small&gt;&lt;span&gt;Silver&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&#39;pInfo pPad o&#39;&gt;&lt;small&gt;What is in the Box?&lt;/small&gt;&lt;span&gt;HP Laptop, 65 W Smart AC power adapter, user manuals&lt;/span&gt;&lt;/div&gt;

&lt;div class=&#39;pMart&#39;&gt;
  &lt;small&gt;or Shop through your favorite &#39;&lt;b&gt;Market Place&lt;/b&gt;&#39; :&lt;/small&gt;
  
  &lt;!--[ Change attribute href=&#39;#&#39; to add url ]--&gt;
  &lt;a title=&#39;Market 1&#39; href=&#39;#&#39; target=&#39;_blank&#39; rel=&#39;noopener&#39;&gt;
    &lt;img alt=&#39;Market 1&#39; src=&#39;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisldTSPR5qQSsrqZDyfYV81HFSq4Pko5u8xpbzKJ7V05CZAaCkfxG550uqbp2xlCxukxcVL4i2so2XxNri-wqqUO0yuVLLznfFes1rdmg7Ywq8pWE8FXwWQfcyrNiAPlyI3_ngX12x7-KGzAVPfjiTWPMP3HdwelG4pn729xMfH05-hdWVbQyaIsgMkQg/s100/favicon.png&#39;/&gt;
  &lt;/a&gt;
  &lt;a title=&#39;Market 2&#39; href=&#39;#&#39; target=&#39;_blank&#39; rel=&#39;noopener&#39;&gt;
    &lt;img alt=&#39;Market 2&#39; src=&#39;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisldTSPR5qQSsrqZDyfYV81HFSq4Pko5u8xpbzKJ7V05CZAaCkfxG550uqbp2xlCxukxcVL4i2so2XxNri-wqqUO0yuVLLznfFes1rdmg7Ywq8pWE8FXwWQfcyrNiAPlyI3_ngX12x7-KGzAVPfjiTWPMP3HdwelG4pn729xMfH05-hdWVbQyaIsgMkQg/s100/favicon.png&#39;/&gt;
  &lt;/a&gt;
&lt;/div&gt;

&lt;p class=&#39;alert info outline&#39;&gt;
  &lt;span&gt;Switch to &lt;b&gt;Documentation&lt;/b&gt; tab for guides.&lt;/span&gt;
&lt;/p&gt;

&lt;div class=&#39;tabs stick&#39;&gt;
  &lt;!--[ Active function ]--&gt;
  &lt;input id=&#39;tabT-1&#39; type=&#39;radio&#39; name=&#39;postProduct&#39; checked=&#39;&#39;&gt;
  &lt;input id=&#39;tabT-2&#39; type=&#39;radio&#39; name=&#39;postProduct&#39;&gt;
  &lt;input id=&#39;tabT-3&#39; type=&#39;radio&#39; name=&#39;postProduct&#39;&gt;
  &lt;input id=&#39;tabT-4&#39; type=&#39;radio&#39; name=&#39;postProduct&#39;&gt;
  &lt;input id=&#39;tabT-5&#39; type=&#39;radio&#39; name=&#39;postProduct&#39;&gt;

  &lt;!--[ Tabs header/title ]--&gt;
  &lt;div&gt;
    &lt;!--[ Change atribute data-text=&#39;...&#39; to replace tabs title ]--&gt;
    &lt;label for=&#39;tabT-1&#39; data-text=&#39;Processor&#39;&gt;&lt;/label&gt;
    &lt;label for=&#39;tabT-2&#39; data-text=&#39;Display&#39;&gt;&lt;/label&gt;
    &lt;label for=&#39;tabT-3&#39; data-text=&#39;Audio&#39;&gt;&lt;/label&gt;
    &lt;label for=&#39;tabT-4&#39; data-text=&#39;Battery&#39;&gt;&lt;/label&gt;
    &lt;label for=&#39;tabT-5&#39; data-text=&#39;Documentation&#39;&gt;&lt;/label&gt;
  &lt;/div&gt;
  
  &lt;!--[ Tabs content ]--&gt;
  &lt;div class=&#39;tabC-1&#39;&gt;

    &lt;p&gt;AMD Ryzen 5 5500U (up to 4.0 GHz max boost clock, 8 MB L3 cache, 6 cores, 12 threads)&lt;/p&gt;
    &lt;p&gt;Live life without limits with a laptop that gets things done. Be more productive and prove your worth when you have the latest AMD Ryzen Processors, up to 16GB Dual channel 3200 DDR4 memory, and AMD Raedon graphics to embraces your switches between games, entertainment, and creative work, so seamlessly. Experience powerful performance and seamless computing for your everyday tasks. That includes improved productivity, smooth streaming, and brilliant Full HD entertainment with immersive, anti-glare display. Also, get a huge performance advantage with SSDs — they’re faster to start up, faster to shut down, and faster to transfer data.&lt;/p&gt;
    
  &lt;/div&gt;

  &lt;!--[ Tabs content ]--&gt;
  &lt;div class=&#39;tabC-2&#39;&gt;

    &lt;p&gt;39.6 cm (15.6&#39;) diagonal, FHD (1920 x 1080), IPS, micro-edge, BrightView, 250 nits, 45% NTSC&lt;/p&gt;
    &lt;p&gt;With its superior color ranging capabilities, this laptop ensures stunning display of colors on its FHD IPS display. Ease of access and a completely comfortable design allows you to maximize your machine’s potential. A compact laptop that brings life the visual experience with FHD, and Micro Edge bezel. A laptop with larger screen-to-body ratio, and Micro-edge bezels that maximize your view and make sure that you have crystal clear graphics and also a larger screen to enjoy your favourite videos.&lt;/p&gt;

  &lt;/div&gt;

  &lt;!--[ Tabs content ]--&gt;
  &lt;div class=&#39;tabC-3&#39;&gt;

    &lt;p&gt;Experience rich and authentic audio through the Bang &amp;amp; Olufsen Play. Each sound enriched to immerse you in a sound that takes you away. Combining it with the Dual HP Speakers &amp;amp; HP Audio Boost, brings to life each note and sound, be it when you’re listening to music or watching a movie.&lt;/p&gt;

  &lt;/div&gt;
  
  &lt;!--[ Tabs content ]--&gt;
  &lt;div class=&#39;tabC-4&#39;&gt;

    &lt;p&gt;Worried about your power going down while travelling for long hours? Keep your worries aside and get the HP Pavilion laptop that comes with super-fast battery charging. Enjoy a faster, smoother, and amazingly responsive computing experience that lets you do all your tasks on-the-go without any worries. Built with a battery that smartly adapts to the system demands, you are sure to be offered the best possible performance. HP Adaptive Battery Fast Charges in less time w/ 43WH adapter- 50% in 30 min will allows you to get more hours back in less time.&lt;/p&gt;

  &lt;/div&gt;
  
  &lt;!--[ Tabs content ]--&gt;
  &lt;div class=&#39;tabC-5&#39;&gt;
    
    &lt;ol class=&#39;steps&#39;&gt;
      &lt;li&gt;In post editor view, click &lt;span style=&#39;display:inline-block;vertical-align:top&#39;&gt;&lt;svg viewBox=&#39;0 0 48 48&#39;&gt;&lt;path d=&#39;M6 34.5V42h7.5l22.13-22.13-7.5-7.5L6 34.5zm35.41-20.41c.78-.78.78-2.05 0-2.83l-4.67-4.67c-.78-.78-2.05-.78-2.83 0l-3.66 3.66 7.5 7.5 3.66-3.66z&#39;/&gt;&lt;/svg&gt;&lt;/span&gt; icon at the bottom right of the title.&lt;/li&gt;
      &lt;li&gt;Two options will appear: &lt;b&gt;HTML view&lt;/b&gt; and &lt;b&gt;Writing view&lt;/b&gt;.&lt;/li&gt;
      &lt;li&gt;Select &#39;&lt;span style=&#39;display:inline-flex;align-items:baseline&#39;&gt;&lt;svg viewBox=&#39;0 0 48 48&#39; style=&#39;align-self:center&#39;&gt;&lt;path d=&#39;M0 0h48v48H0V0z&#39; fill=&#39;none&#39;/&gt;&lt;path d=&#39;M18.8 33.2L9.7 24l9.2-9.2L16 12 4 24l12 12 2.8-2.8zm10.4 0l9.2-9.2-9.2-9.2L32 12l12 12-12 12-2.8-2.8z&#39;/&gt;&lt;/svg&gt;&lt;b style=&#39;text-indent:4px&#39;&gt;HTML View&lt;/b&gt;&lt;/span&gt;&#39;.&lt;/li&gt;
      &lt;li&gt;
        Copy and paste the following code and make appropriate changes.
        &lt;pre&gt;&lt;code&gt;&amp;lt;!--[ Image with caption ]--&amp;gt;
&amp;lt;table class=&#39;tr-caption-container&#39;&amp;gt;
  &amp;lt;tbody&amp;gt;
    &amp;lt;tr&amp;gt;
      &amp;lt;td&amp;gt;
        &amp;lt;img alt=&#39;HP Pavilion Laptop 15-eh1101AU&#39; width=&#39;1280&#39; height=&#39;720&#39; src=&#39;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhlmxjjEVsUtVQBywwPr71Kaub2SWDF9S_vm5vBJzh5q3u-Whz_rIg6jABe2mP9wGkMTxUxvFMHORB_7K9MSpif8ogjaGRxjf3_gMJnwaO9-FdX_M-adxvFadG10QKbHMvlSUVi2V9pyKQIiMCaErp5USIN1v4L16MdrIUji8B9YBHcxVLwm19pU8IMQ/s1280/HP_Pavilion.webp&#39;/&amp;gt;
      &amp;lt;/td&amp;gt;
    &amp;lt;/tr&amp;gt;
    &amp;lt;tr&amp;gt;
      &amp;lt;td class=&#39;tr-caption&#39; data-text=&#39;HP Pavilion Laptop 15-eh1101AU&#39;&amp;gt;&amp;lt;/td&amp;gt;
    &amp;lt;/tr&amp;gt;
  &amp;lt;/tbody&amp;gt;
&amp;lt;/table&amp;gt;

&amp;lt;!--[ Price to show in homepage ]--&amp;gt;
&amp;lt;div class=&#39;pPric pPad&#39; data-text=&#39;Price&#39;&amp;gt;₹55,990.00&amp;lt;/div&amp;gt;

&amp;lt;!--more--&amp;gt;

&amp;lt;!--[ Post snippet ]--&amp;gt;
&amp;lt;div class=&#39;hidden&#39;&amp;gt;Specifications, Design, Performance, Battery&amp;lt;/div&amp;gt;

&amp;lt;div class=&#39;pInfo pPad&#39;&amp;gt;
  &amp;lt;div class=&#39;L&#39;&amp;gt;&amp;lt;small&amp;gt;Series&amp;lt;/small&amp;gt;&amp;lt;span&amp;gt;HP Pavilion Laptop 15-eh1101AU&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;
  &amp;lt;div class=&#39;R&#39;&amp;gt;&amp;lt;small&amp;gt;Brand&amp;lt;/small&amp;gt;&amp;lt;span&amp;gt;HP&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;

&amp;lt;div class=&#39;pInfo pPad&#39;&amp;gt;
  &amp;lt;div class=&#39;L&#39;&amp;gt;&amp;lt;small&amp;gt;Specific Uses For Product&amp;lt;/small&amp;gt;&amp;lt;span&amp;gt;Multimedia&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;
  &amp;lt;div class=&#39;R&#39;&amp;gt;&amp;lt;small&amp;gt;Screen Size&amp;lt;/small&amp;gt;&amp;lt;span&amp;gt;15.6 Inches&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;

&amp;lt;div class=&#39;pInfo pPad&#39;&amp;gt;
  &amp;lt;div class=&#39;L&#39;&amp;gt;&amp;lt;small&amp;gt;Operating System&amp;lt;/small&amp;gt;&amp;lt;span&amp;gt;Windows 10 Home&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;
  &amp;lt;div class=&#39;R&#39;&amp;gt;&amp;lt;small&amp;gt;Human Interface Input&amp;lt;/small&amp;gt;&amp;lt;span&amp;gt;Touchscreen&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;

&amp;lt;div class=&#39;pInfo pPad&#39;&amp;gt;
  &amp;lt;div class=&#39;L&#39;&amp;gt;&amp;lt;small&amp;gt;CPU Manufacturer&amp;lt;/small&amp;gt;&amp;lt;span&amp;gt;AMD&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;
  &amp;lt;div class=&#39;R&#39;&amp;gt;&amp;lt;small&amp;gt;Graphics Card Description&amp;lt;/small&amp;gt;&amp;lt;span&amp;gt;Integrated&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;

&amp;lt;div class=&#39;pInfo pPad&#39;&amp;gt;
  &amp;lt;div class=&#39;L&#39;&amp;gt;&amp;lt;small&amp;gt;Processor&amp;lt;/small&amp;gt;&amp;lt;span&amp;gt;AMD Ryzen 5 5500U&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;
  &amp;lt;div class=&#39;R&#39;&amp;gt;&amp;lt;small&amp;gt;Storage&amp;lt;/small&amp;gt;&amp;lt;span&amp;gt;512 GB SSD&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;

&amp;lt;div class=&#39;pInfo pPad&#39;&amp;gt;
  &amp;lt;div class=&#39;L&#39;&amp;gt;&amp;lt;small&amp;gt;Memory&amp;lt;/small&amp;gt;&amp;lt;span&amp;gt;8 GB DDR4-3200 MHz&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;
  &amp;lt;div class=&#39;L&#39;&amp;gt;&amp;lt;small&amp;gt;Special Feature&amp;lt;/small&amp;gt;&amp;lt;span&amp;gt;Micro-Edge Display, Thin&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;

&amp;lt;div class=&#39;pInfo pPad&#39;&amp;gt;
  &amp;lt;div class=&#39;R&#39;&amp;gt;&amp;lt;small&amp;gt;Colour&amp;lt;/small&amp;gt;&amp;lt;span&amp;gt;Silver&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;

&amp;lt;div class=&#39;pInfo pPad o&#39;&amp;gt;&amp;lt;small&amp;gt;What is in the Box?&amp;lt;/small&amp;gt;&amp;lt;span&amp;gt;HP Laptop, 65 W Smart AC power adapter, user manuals&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;

&amp;lt;div class=&#39;pMart&#39;&amp;gt;
  &amp;lt;small&amp;gt;or Shop through your favorite &#39;&amp;lt;b&amp;gt;Market Place&amp;lt;/b&amp;gt;&#39; :&amp;lt;/small&amp;gt;
  
  &amp;lt;!--[ Change attribute href=&#39;#&#39; to add url ]--&amp;gt;
  &amp;lt;a title=&#39;Market 1&#39; href=&#39;#&#39; target=&#39;_blank&#39; rel=&#39;noopener&#39;&amp;gt;
    &amp;lt;img alt=&#39;Market 1&#39; src=&#39;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisldTSPR5qQSsrqZDyfYV81HFSq4Pko5u8xpbzKJ7V05CZAaCkfxG550uqbp2xlCxukxcVL4i2so2XxNri-wqqUO0yuVLLznfFes1rdmg7Ywq8pWE8FXwWQfcyrNiAPlyI3_ngX12x7-KGzAVPfjiTWPMP3HdwelG4pn729xMfH05-hdWVbQyaIsgMkQg/s100/favicon.png&#39;/&amp;gt;
  &amp;lt;/a&amp;gt;
  &amp;lt;a title=&#39;Market 2&#39; href=&#39;#&#39; target=&#39;_blank&#39; rel=&#39;noopener&#39;&amp;gt;
    &amp;lt;img alt=&#39;Market 2&#39; src=&#39;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisldTSPR5qQSsrqZDyfYV81HFSq4Pko5u8xpbzKJ7V05CZAaCkfxG550uqbp2xlCxukxcVL4i2so2XxNri-wqqUO0yuVLLznfFes1rdmg7Ywq8pWE8FXwWQfcyrNiAPlyI3_ngX12x7-KGzAVPfjiTWPMP3HdwelG4pn729xMfH05-hdWVbQyaIsgMkQg/s100/favicon.png&#39;/&amp;gt;
  &amp;lt;/a&amp;gt;
&amp;lt;/div&amp;gt;

&amp;lt;div class=&#39;tabs stick&#39;&amp;gt;
  &amp;lt;!--[ Active function ]--&amp;gt;
  &amp;lt;input id=&#39;tabT-1&#39; type=&#39;radio&#39; name=&#39;postProduct&#39; checked=&#39;&#39;&amp;gt;
  &amp;lt;input id=&#39;tabT-2&#39; type=&#39;radio&#39; name=&#39;postProduct&#39;&amp;gt;
  &amp;lt;input id=&#39;tabT-3&#39; type=&#39;radio&#39; name=&#39;postProduct&#39;&amp;gt;
  &amp;lt;input id=&#39;tabT-4&#39; type=&#39;radio&#39; name=&#39;postProduct&#39;&amp;gt;

  &amp;lt;!--[ Tabs header/title ]--&amp;gt;
  &amp;lt;div&amp;gt;
    &amp;lt;!--[ Change atribute data-text=&#39;...&#39; to replace tabs title ]--&amp;gt;
    &amp;lt;label for=&#39;tabT-1&#39; data-text=&#39;Processor&#39;&amp;gt;&amp;lt;/label&amp;gt;
    &amp;lt;label for=&#39;tabT-2&#39; data-text=&#39;Display&#39;&amp;gt;&amp;lt;/label&amp;gt;
    &amp;lt;label for=&#39;tabT-3&#39; data-text=&#39;Audio&#39;&amp;gt;&amp;lt;/label&amp;gt;
    &amp;lt;label for=&#39;tabT-4&#39; data-text=&#39;Battery&#39;&amp;gt;&amp;lt;/label&amp;gt;
  &amp;lt;/div&amp;gt;
  
  &amp;lt;!--[ Tabs content ]--&amp;gt;
  &amp;lt;div class=&#39;tabC-1&#39;&amp;gt;

    &amp;lt;p&amp;gt;AMD Ryzen 5 5500U (up to 4.0 GHz max boost clock, 8 MB L3 cache, 6 cores, 12 threads)&amp;lt;/p&amp;gt;
    &amp;lt;p&amp;gt;Live life without limits with a laptop that gets things done. Be more productive and prove your worth when you have the latest AMD Ryzen Processors, up to 16GB Dual channel 3200 DDR4 memory, and AMD Raedon graphics to embraces your switches between games, entertainment, and creative work, so seamlessly. Experience powerful performance and seamless computing for your everyday tasks. That includes improved productivity, smooth streaming, and brilliant Full HD entertainment with immersive, anti-glare display. Also, get a huge performance advantage with SSDs — they’re faster to start up, faster to shut down, and faster to transfer data.&amp;lt;/p&amp;gt;

  &amp;lt;/div&amp;gt;

  &amp;lt;!--[ Tabs content ]--&amp;gt;
  &amp;lt;div class=&#39;tabC-2&#39;&amp;gt;

    &amp;lt;p&amp;gt;39.6 cm (15.6&#39;) diagonal, FHD (1920 x 1080), IPS, micro-edge, BrightView, 250 nits, 45% NTSC&amp;lt;/p&amp;gt;
    &amp;lt;p&amp;gt;With its superior color ranging capabilities, this laptop ensures stunning display of colors on its FHD IPS display. Ease of access and a completely comfortable design allows you to maximize your machine’s potential. A compact laptop that brings life the visual experience with FHD, and Micro Edge bezel. A laptop with larger screen-to-body ratio, and Micro-edge bezels that maximize your view and make sure that you have crystal clear graphics and also a larger screen to enjoy your favourite videos.&amp;lt;/p&amp;gt;

  &amp;lt;/div&amp;gt;

  &amp;lt;!--[ Tabs content ]--&amp;gt;
  &amp;lt;div class=&#39;tabC-3&#39;&amp;gt;

    &amp;lt;p&amp;gt;Experience rich and authentic audio through the Bang &amp;amp;amp; Olufsen Play. Each sound enriched to immerse you in a sound that takes you away. Combining it with the Dual HP Speakers &amp;amp;amp; HP Audio Boost, brings to life each note and sound, be it when you’re listening to music or watching a movie.&amp;lt;/p&amp;gt;

  &amp;lt;/div&amp;gt;
  
  &amp;lt;!--[ Tabs content ]--&amp;gt;
  &amp;lt;div class=&#39;tabC-4&#39;&amp;gt;

    &amp;lt;p&amp;gt;Worried about your power going down while travelling for long hours? Keep your worries aside and get the HP Pavilion laptop that comes with super-fast battery charging. Enjoy a faster, smoother, and amazingly responsive computing experience that lets you do all your tasks on-the-go without any worries. Built with a battery that smartly adapts to the system demands, you are sure to be offered the best possible performance. HP Adaptive Battery Fast Charges in less time w/ 43WH adapter- 50% in 30 min will allows you to get more hours back in less time.&amp;lt;/p&amp;gt;

  &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
      &lt;/li&gt;
      &lt;li&gt;Add a label &lt;code&gt;Product&lt;/code&gt; to the post.&lt;/li&gt;
    &lt;/ol&gt;
    
  &lt;/div&gt;
&lt;/div&gt;
</description><link>https://www.plus-ui.blog/2024/10/product-post.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhlmxjjEVsUtVQBywwPr71Kaub2SWDF9S_vm5vBJzh5q3u-Whz_rIg6jABe2mP9wGkMTxUxvFMHORB_7K9MSpif8ogjaGRxjf3_gMJnwaO9-FdX_M-adxvFadG10QKbHMvlSUVi2V9pyKQIiMCaErp5USIN1v4L16MdrIUji8B9YBHcxVLwm19pU8IMQ/s72-c/HP_Pavilion.webp" height="72" width="72"/><thr:total>0</thr:total></item></channel></rss>