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上看,看完了就删,只要谷歌帐号不泄露,秘密的信息就不会泄漏。

::: {.previous_content} « 上一篇 深圳多人因海淘健康码变黄码 :::
::: {.next_content} 下一篇 title: 谷歌免费版G Suite将被终止 :::
相关文章
Category: 月光博客2022