読者です 読者をやめる 読者になる 読者になる

Sphinxでサイドバーの検索ボックスをOFFにする

オンラインヘルプとかHTMLドキュメントを書くのに、すごく便利ですよね、Sphinx

某アレに提出するためのドキュメントを書いてたんですが、一つだけ困りました。
サイドバーの検索ボックスがあるんですが、なんかうまく動かない。検索が全然返ってこない。

というか、今回の用途としては検索ボックス自体いらないのでOFFにしたいんですが、conf.pyみてもそういう設定はないんですよね。コピーライトとかそういうのは非表示にできるのに。

というわけで、Sphinx本体にちょっと手を入れて検索ボックスを非表示にするようにしてみました。

 builders/html.py         |    1 +
 config.py                |    1 +
 themes/basic/layout.html |    8 +++++---
 3 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/builders/html.py b/builders/html.py
index 8ff628c..bea5185 100644
--- a/builders/html.py
+++ b/builders/html.py
@@ -321,6 +321,7 @@ class StandaloneHTMLBuilder(Builder):
             parents = [],
             logo = logo,
             favicon = favicon,
+            show_searchbox = self.config.html_show_searchbox,
         )
         if self.theme:
             self.globalcontext.update(
diff --git a/config.py b/config.py
index 19e2991..c744449 100644
--- a/config.py
+++ b/config.py
@@ -99,6 +99,7 @@ class Config(object):
         html_output_encoding = ('utf-8', 'html'),
         html_compact_lists = (True, 'html'),
         html_secnumber_suffix = ('. ', 'html'),
+        html_show_searchbox = (True, 'html'),
 
         # HTML help only options
         htmlhelp_basename = (lambda self: make_filename(self.project), None),
diff --git a/themes/basic/layout.html b/themes/basic/layout.html
index 204efb7..cd25f84 100644
--- a/themes/basic/layout.html
+++ b/themes/basic/layout.html
@@ -71,9 +71,11 @@
             {%- if customsidebar %}
             {%- include customsidebar %}
             {%- endif %}
-            {%- block sidebarsearch %}
-            {%- include "searchbox.html" %}
-            {%- endblock %}
+            {%- if show_searchbox %}
+              {%- block sidebarsearch %}
+              {%- include "searchbox.html" %}
+              {%- endblock %}
+            {%- endif %}
           {%- endif %}
         </div>
       </div>
-- 
1.7.3.4

上の改造を反映したら、conf.pyで html_show_searchbox = False とするだけで検索ボックスを非表示にできます。

やったね!

検索ページHTMLとかJSとかはビルドディレクトリにまだ出力されてるので、配布するときはその辺を削除してから出した方がより素敵です。

2011/02/25追記

コメント欄でid:kompiroさんに教えていただいた

検索ボックス自体を消すのであれば、パッチを当てなくてもsource/_templatesに空のsearchbox.htmlを置けばいいです。テンプレートエンジンが空のファイルを認識して上書きしてくれますよ。

ということで、普通に超簡単に対応できるのでよい子のみんなはこのパッチあてるなよ!絶対だぞ!

....orz