UP | HOME

CreateBlogWithOrg

Table of Contents

CreateBlogWithOrg note.

<!– more –>

org 导出配置

(setq org-publish-project-alist
        '(
          ("blog-notes"
           :base-directory "~/Documents/MyProject/Public/wolfand11/_post/"
           :base-extension "org"
           :publishing-directory "~/Documents/MyProject/Public/wolfand11/_site/"
           :recursive t
           :publishing-function org-html-publish-to-html
           :html-link-home "https://wolfand11.coding.me"
           :html-link-org-files-as-html org-html-link-org-files-as-html
           :headline-levels 5
           :with-author nil
           :with-email nil
           :with-creator nil
           :with-timestamps nil
           :htmlized-source t
           :section-numbers nil

           ;; --------------------
           ;; remove default html-head, use custom html-head
           ;;
           :html-head-include-default-style nil
           :html-head "<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />
           <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />
           <link rel=\"stylesheet\" title=\"Standard\" href=\"https://wolfand11.coding.me/res/css/worg.css\" type=\"text/css\" />
           <link rel=\"alternate stylesheet\" title=\"Zenburn\" href=\"https://wolfand11.coding.me/res/css/worg-zenburn.css\" type=\"text/css\" />
           <link rel=\"alternate stylesheet\" title=\"Classic\" href=\"https://wolfand11.coding.me/res/css/worg-classic.css\" type=\"text/css\" />
           <link rel=\"icon\" href=\"http://wolfand11.coding.me/res/favicon.ico\" type=\"image/ico\" />"
           ;;https://wolfand11.coding.me/res/css/org.css
           ;;res/css/org.css

           ;; --------------------
           ;; use coding.me as comment system
           ;;
           :html-postamble "<div id=\"gitment-ctn\"></div>
           <link rel=\"stylesheet\" href=\"https://dn-coding-net-public-file.qbox.me/Coding-Comments/v0.0.3/default.css\">
           <script src=\"https://dn-coding-net-public-file.qbox.me/Coding-Comments/v0.0.3/gitment.min.js\"></script>
           <script>
           var gitment = new Gitment({
               owner: 'wolfand11',
               repo: 'blog_comments',
               oauth: {
                   client_id: '25bc4077d166c8858dca999bcd070cca',
                   client_secret: 'c9a758cc154771b25162f537ad711c96ae5ac87c',
               },
           });
           gitment.render('gitment-ctn')
           </script>"

           :auto-preamble t
           :auto-sitemap t                  ; Generate sitemap.org automagically...
           :sitemap-filename "sitemap.org"  ; ... call it sitemap.org (it's the default)...
           :sitemap-title    "Sitemap"      ; ... with title 'Sitemap'.
           :sitemap-file-entry-format "%d %t"
           )
          ("blog-static"
           :base-directory "~/Documents/MyProject/Public/wolfand11/_post/"
           :base-extension "css\\|js\\|png\\|jpg\\|gif\\|pdf\\|mp3\\|ogg\\|swf\\|lua\\|py\\|ico"
           :publishing-directory "~/Documents/MyProject/Public/wolfand11/_site/"
           :recursive t
           :publishing-function org-publish-attachment
           )
          ("blog" :components ("blog-notes" "blog-static"))
          ;;
          ))

参考资料

使用方法

快捷键

快捷键 说明
, e e P a 导出所有文件
, e e P f 导出当前文件

在导出界面,C-f 可以开启强制重新导出。

misc

org 文件之间的 include

参考 index.org 文件中引用 sitemap.org 文件的方法。

#+INCLUDE: "./sitemap.org"

支持 sitmap 文章排序

#D:\Documents\MyCore\Tools\PyTools\main.py
# 执行下面命令可以查看命令帮助
py ./main.py -h 
# 下面命令会利用默认的priority_config.json文件导出 sitemap.org
# priority_config.json 文件放置在 wolfand11/_post 目录下
py ./main.py --OrgExportSitemap
# 下面命令会生成默认的 priority_config.json文件,并且会将原始的priority_config.json备份为 priority_config_%m%d_%H%M%S.json 例如(.priority_config_1213_165619)
py ./main.py --OrgExportSitemap --InitConfig
# 将新增加的文件链接添加到.priority_config_1213_165619.json文件中,并使用其代替priority_config.json

# 支持隐藏文件和文件夹
# 该工具会忽略以.开头的隐藏文件,也会忽略文件夹名称中包含.的文件夹(如 dot.private)

支持插入图片组和视频

Image Group

#+begin_export html
<div id="imgGroup${1:groupIdx}">
<img id="imgGroup" src="./`(file-name-nondirectory (file-name-sans-extension (buffer-file-name)))`/$0.png" style="display:block"/>
<img id="imgGroup" src="./`(file-name-nondirectory (file-name-sans-extension (buffer-file-name)))`/.png" style="display:none"/>
<img id="imgGroup" src="./`(file-name-nondirectory (file-name-sans-extension (buffer-file-name)))`/.png" style="display:none"/>
</div>

<br>
<b id="curImgIdx${1}">0</b>
<button onclick="slideShow(${1}, 0)">0</button>
<button onclick="slideShow(${1}, 1)">1</button>
<button onclick="slideShow(${1}, 2)">2</button>
#+end_export

Video

方案 1:

#+begin_export html
<figure>
  <video class="wp-video-shortcode" width="640" height="360" preload="metadata" controls="controls">
  <source type="video/mp4" src="./`(file-name-nondirectory (file-name-sans-extension (buffer-file-name)))`/$0.mp4" />
  </video>
  <figcaption>caption for video</figcaption>
</figure>
#+end_export

方案 2: 目前采用该方案

#+begin_export html
<figure>
  <iframe src='https://gfycat.com/ifr/TightRelievedGoa' frameborder='0' scrolling='no' allowfullscreen width='640' height='328'></iframe>
  <figcaption>caption for video</figcaption>
</figure>
#+end_export

修改 blog 主题

主页和 AboutMe 界面主题: 直接在 index.org 和 about.org 文件中设置使用的 css 主题文件就可以了
blog 内容主题: wolfand11/config.el 文件中 修改变量 wolfand11-org-html-head 即可。如下:

;; readtheorg 主题
(setq wolfand11-org-html-head wolfand11-org-html-head-readtheorg-theme)
;; worg 主题
(setq wolfand11-org-html-head wolfand11-org-html-head-worg-theme)

下面是一个专门搜集 org-html 主题的项目:

评论插件

org-mode 评论插件配置

在 wolfand11/config.el 文件中进行配置,具体配置如下:

;; 添加新的评论系统,可以参考下面vssue的配置
(setq wolfand11-org-html-postamble-format-vssue "<div id=\"vssue\"></div>
        <script src=\"https://unpkg.com/vue@2.7.10/dist/vue.runtime.min.js\"></script>
        <script src=\"https://unpkg.com/vssue/dist/vssue.github.min.js\"></script>
        <script>
          new Vue({
            el: '#vssue',
            render: h => h('Vssue', {
              props: {
                // 在这里设置当前页面对应的 Issue 标题
                title: '%t',

                // 在这里设置你使用的平台的 OAuth App 配置
                options: {
                    owner: 'wolfand11',
                    repo: 'blog_comments',
                    clientId: 'a02b49185d85859cb92c',
                    clientSecret: '6f123085c6f1ce339e2517d24e5b099fa1dc9c85', // 只有在使用某些平台时需要
                },
              }
            })
          })
        </script>
        ")
;; choose comment system
(setq wolfand11-org-html-postamble-format `(("en" ,wolfand11-org-html-postamble-format-vssue)))

若需要在 index.org 关闭评论,只需要修改如下:

#+OPTIONS: html-postamble:nil

gitalk

<!DOCTYPE html>
<html>
    <head>
    </head>

    <body>
        <div id="gitalk-container"></div>
        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.css">
        <script src="https://unpkg.com/gitalk@latest/dist/gitalk.min.js"></script>
        <script>
         const gitalk = new Gitalk({
             clientID: 'a02b49185d85859cb92c',
             clientSecret: '6f123085c6f1ce339e2517d24e5b099fa1dc9c85',
             repo: 'blog_comments',      // The repository of store comments,
             owner: 'wolfand11',
             admin: ['wolfand11'],
             distractionFreeMode: false  // Facebook-like distraction free mode
         })

         gitalk.render('gitalk-container')
        </script>
    </body>
</html>

vssue commits

ERROR

使用静态页面测试发现不可用

通过浏览器报错信息可以发现,由于浏览器加载 vue 的版本不正确导致,只需要在 vue 链接中指定 2.7.10 版本就可以了。(vue3 版本没有 vue.runtime.min.js 文件了)

<!DOCTYPE html>
<head>
  <!-- Vssue 的样式文件 -->
  <link rel="stylesheet" href="https://unpkg.com/vssue/dist/vssue.min.css">
</head>

<body>
  <div id="vssue"></div>

  <!-- 先引入 Vue -->

  <!-- Vue 运行时版 (runtime only)  -->
  <script src="https://unpkg.com/vue@2.7.10/dist/vue.runtime.min.js"></script>

  <!-- 在 Vue 之后引入 Vssue -->

  <!-- Vssue Github 版  -->
  <script src="https://unpkg.com/vssue/dist/vssue.github.min.js"></script>

  <!-- 将 Vssue 作为 Vue 组件使用 -->

  <!-- 对于 Vue 运行时版,使用渲染函数(render function) -->
  <script>
    new Vue({
      el: '#vssue',

      render: h => h('Vssue', {
        props: {
          // 在这里设置当前页面对应的 Issue 标题
          title: 'Vssue Dev',

          // 在这里设置你使用的平台的 OAuth App 配置
          options: {
              owner: 'wolfand11',
              repo: 'blog_comments',
              clientId: 'a02b49185d85859cb92c',
              clientSecret: '6f123085c6f1ce339e2517d24e5b099fa1dc9c85', // 只有在使用某些平台时需要
          },
        }
      })
    })
  </script>
</body>

参考资料