Lektorのプラグイン機能を使ってウェブサイトのルートから親ページまでのナビゲーションを書いてみた。
とりあえずソースコードは以下のような感じ
まだAlternativeが上手く扱えないとか問題がいっぱい。
# -*- coding: utf-8 -*-
from urlparse import urljoin
import urllib
from lektor.pluginsystem import Plugin
from furl import furl
class RootRelativePathPlugin(Plugin):
name = u'root-relative-path'
description = u'Returns root relative path'
def on_setup_env(self, **extra):
def root_relative_path_list(url):
if url == '/':
return []
lis = furl(url).path.segments
url='/'
name='Top Page'
root_relative_path_lis = [(url, name)]
for i in lis:
url = urllib.quote(urljoin(url, '%s' % i))
name = i
root_relative_path_lis.append((url, name))
url = url + '/'
return root_relative_path_lis[:-1]
self.env.jinja_env.filters['root_relative_path_list'] = root_relative_path_list
久々にprivateなgitリポジトリでも作ろうかと思いBitbucketを開いたらConfluenceやJIRAのようなAtlassianの製品によく見られるUIスタイルに変わっていた。
Wikipediaを見るとButbucketは2010年にはAtlassianに買収されていたのか、知らなかった。
2016-02-23 修正できました
{% set pages = site.query('./blog', alt=alt).all() %}
と書くところを
{% set pages = site.query('./blog').all() %}
のように書いていたのが原因でした。
{% set pages = site.query('./blog').all() %}
{% for page in pages[0:5] %}
<li>
<a href="./blog/{{ page._id }}"> {{ page.title }}</a>
</li>
{% endif %}
{% endfor %}
Lektorにデフォルトで入っているCSSがスマホなど画面サイズの異なるデバイスに対応していないのでFoundation6を使ってResponsiveデザインにしてみました。
文字サイズの指定とか、markdownで生成されるリストのマージンやパディングの設定などでかなりはまった。疲れた。
このサイトはLektorというスタティックサイトジェネレーターを使って作っています。
Lektorの作者Armin Ronacherの最初のGitHubのコミットが2015年の12/19日なのでまだまだ若いプロジェクトですが、コンセプトの良さが感じられます。JinjaやFlaskの作者でもあるらしいのですごい才能ですね。
今後もこのサイトやブログの中でLektorのことを紹介していきたいと思います。
数時間使用して気づいた点いくつか
小さいことだけどSub Pageを作る際に、最初にタイトル入力の画面が出てAdd Sub Pageをしてから初めてSub Pageの編集ができるというのが最初戸惑った。会社で使っているCMSではタイトルと内容の入力が同時にできるので。
Admin のページにサイドバーにSubpagesがあるがParentページが無いのはわかり難い(トップバーからは移動できる)。自分で改善すればいいのだけど。
PageやWikiの中は設定によってマークダウンフォーマットがデフォルトで指定されているのだけど初め何のフォーマットなのかわからずに戸惑った。あとマークダウンフォーマットの説明ページもデフォルトで欲しい。
Lektor のサイト(https://www.getlektor.com/docs/deployment/)では以下のコマンドを記載しているが
lektor build && s3cmd --region=ap-northeast-1 sync "$(lektor project-info --output-path)" "s3://bucketname"
以下のように
lektor build && s3cmd --region=ap-northeast-1 sync "$(lektor project-info --output-path)"/* "s3://bucketname"
として、$(lektor project-info --output-path) の後ろにアスタリスク("*")をつけないとサイトが格納されているディレクトリ自体がアップロードされてしまい思った通りにできなかった。
なおlektor-s3プラグインはregionを指定する方法がわからず使用を断念。
北海道から本州に来てすでに10数年が経つが、本州に来て驚いたことの一つは田舎の意味が北海道と本州では全くちがうということだった。
一言で言うと北海道の田舎は広くて歴史が浅いが本州の田舎は狭くて歴史が深い。
北海道の場合歴史が浅いのでそもそも山奥には集落がなく
山->裾野の森->町or村と自然の境界部
というようになっているのだけど
本州の場合数百年前から山の麓まで山林を利用するために集落ができているので
山->谷間にある山奥の村->川を下ったところにある平野との接続部にある村->街道->大きな街
となっていることに住んでしばらくたってから気がついた。
この違いは大きくて、北海道だと村社会といったときに人数的に付き合いの範囲が狭いことは想像がつくのだけど、空間的に使える範囲が狭いことがどうにも想像できない。
過疎化で消滅間近な集落と聞いたときにも北海道の集落よりもはるかに長い期間の歴史や文化まで消えてしまうことが理解できない