Blogger和WordPress的倒序显示

Sat 22 January 2022

Blogger和WordPress的倒序显示

作者: 月光 网站建设

:::

Blogger和WordPress都可以通过一定的设置,变成一个只供自己查看的私人博客,相当于私人日记本,具体方法是,在博客设置里将其设置为只有作者才能查看,然后将博客设置为在一页内全部显示(比如设置单页文章1千篇),在博客安装一个倒序显示脚本,即可完成日记本的功能,可供导出和打印。

除了打印,还可以将内容复制到TXT文件里,在邮箱里发送到Kindle邮箱,然后在自己的Kindle上看,相当于看书的体验。

这里面的一个技术问题是如何在Blogger和WordPress里实现按照日期倒序显示(Reverse Post Order)。这里分别给出Blogger和WordPress实现倒序的方法。

在Blogger中,页脚点击"添加小工具",添加"HTML/JavaScript"微件,之后在微件内容里插入如下代码:

\<!-- Start Post Reversal Code -->\ \<script type=\'text/javascript\'>\ //\<![CDATA[\   // -----------------------------------------------------------------------------------------\   // Name   : PRS - Post Reversal Script for Blogger - Version 1.0\   // Author : David Yockey\   // URL    :   techsquirrels.blogspot.com/2012/04/swapping-to-reverse-post-order-on.html\   // -----------------------------------------------------------------------------------------\   // Temp variable used to shorten classname references\   var cn;\   // This function is called as needed in the main program below.\   function ReversePosts(BlogPostContainer,PostClass) {\     // Arguments:\     //    BlogPostContainer -- The node containing the posts to be reversed.\     //    PostClass -- The className of each of the posts in the container to be reversed.\     //                 (may be a single name from among names in the class attribute of the posts)\     // Flag for checking whether any posts are found\     var found=false;\     var BlogPosts = BlogPostContainer.childNodes;  // May include text-nodes containing\                                                    // whitespace in addition to post-nodes\     // Set index variables to top and bottom of BlogPosts list\     var i=0;\     var j=BlogPosts.length-1;\     for( ; ; ) {     // Start Endless Loop\       // Find next Post from the top\       while( (i \< j) && (!(cn=BlogPosts[i].className) || !(cn.match(PostClass))) )\         ++i;\       // Find next Post from the bottom\       while( (i \< j) && (!(cn=BlogPosts[j].className) || !(found=cn.match(PostClass))) ) // (see Footnote 1)\         --j;\       if( found && i \< j ) {\         // Swap Posts (see Footnote 2)\         var tempi = BlogPosts[i].cloneNode(true);           // Store a copy of Post i in tempi\         var tempj = BlogPosts[j].cloneNode(true);           // Store a copy of Post j in tempj\         BlogPostContainer.replaceChild(tempi,BlogPosts[j]); // Replace Post j with Post i in tempi\         BlogPostContainer.replaceChild(tempj,BlogPosts[i]); // Replace Post i with Post j in tempj\       } else {\         // Done\         break;        // Break out of Endless Loop\       }\       ++i; --j;\     }\   }\   // Footnote 1:\   //   If a post is found from one end, then a post must necessarily be found from the other.\   //   So, recording and later checking for a post from one end is sufficient to ensure that\   //   one was found from both.\   //\   // Footnote 2:\   //   At least in Firefox 11.0 on Fedora Linux, replacing a child directly with another child\   //   causes some text-nodes containing whitespace to be deleted. That node deletion messes up\   //   the positions of the posts in the BlogPosts list. This is avoided by cloning both posts\   //   rather than just one and replacing both posts from the cloned copies.\   // *** MAIN POST REVERSAL PROGRAM ***\   // Magic Words\   var BlogWidget             = \'Blog1\';\   var BlogPostContainerClass = \'blog-posts\';\   var BlogPostClass          = \'date-outer\';\   var DatePostContainerClass = \'date-posts\';\   var DatePostClass          = \'post-outer\';\   var Blog1 = document.getElementById(BlogWidget);\   // Find the node containing the blog posts\   var BlogPostContainer;\   var x=0;\   do {\     BlogPostContainer = Blog1.childNodes[x++];\   } while ( !(cn=BlogPostContainer.className) || !(cn.match(BlogPostContainerClass)) );\   // Reverse different day posts\   ReversePosts(BlogPostContainer,BlogPostClass);\   // Reverse same day posts - Loop thru contents of BlogPostContainer to find each day\'s posts\   var BlogPosts = BlogPostContainer.childNodes;\   for ( i = 0; i \< BlogPosts.length; ++i ) {\     // Check for an actual post-node rather than a text-node or such\     if ( (cn=BlogPosts[i].className) && cn.match(BlogPostClass) ) {\       var DatePostContainer;\       x=0;\       // Find the node containing the posts to be reversed for the current day being processed\       do {\         DatePostContainer = BlogPosts[i].childNodes[x++];\       } while ( !(cn=DatePostContainer.className) || !(cn.match(DatePostContainerClass)) );\       ReversePosts(DatePostContainer,DatePostClass);\     }\   }\ //]]>\ \</script>\ \<!-- End Post Reversal Code -->

之后保存,设置"主页上显示的博文数量上限"的数量,然后打开页面即可看到倒序的文章。

对于WordPress来说,操作起来比较简单,安装一个名为"Chronological Posts"的Plugin即可实现倒序文章。

从安全性来说,Blogger更为安全一些,谷歌帐号设置两步验证,在谷歌Blogger中写内容,然后设置只有自己只读,安装一个倒序显示脚本,然后复制到TXT文件里,在邮箱里发送到Kindle邮箱,然后在自己的Kindle上看,看完了就删,只要谷歌帐号不泄露,秘密的信息就不会泄漏。

Blogger和WordPress的倒序显示

::: {.previous_content} « 上一篇 深圳多人因海淘健康码变黄码 :::

::: {.next_content} 下一篇 title: 谷歌免费版G Suite将被终止 :::

相关文章

Category: 月光博客2022