有时,我们的博客需要经常更新一些模块的内容,如广告栏,以及一些其他不同的人设置不一样的工具。为了方便管理,这些模块最好都要移到后台,这样就可以经常更改模块内容而不用更改博客源码重新上传。之前,我在colin-young的博客上看到了一篇如何后台管理侧边栏模块的文章,受此启发,我想也可以把任何位置的模块都实现后台管理,经过尝试发现可行,具体效果直接看本文的中间和下面,左边的广告条以及aboutme就行了。在此简述一下实现方法(和colin-young的方法几乎一样,只是将其推广了)。
- 在“\micolog\model.py”搜索“blognotice=db.TextProperty(default='')”,在其后加入:
YouModelName=db.TextProperty(default='')
- 在“\micolog\views\admin\setup.html”搜索“blog.blognotice”,在30行处关于设置blognotice的代码,仿照其语法,添加如下代码:
<tr valign="top">
<th scope="row">{% trans "YouModelName:"%}</th>
<td><textarea id="YouModelName" style="width:95%" cols="45" rows="2" name="YouModelName">{{blog.YouModelName|escape}}</textarea>
</td>
</tr>
继续搜索notice,大概170行有如下代码
<input value="title,subtitle,...,default_link_format,blognotice" type="hidden" name="str_options" />
在blognotice附近添加你的模块名 - 在需要调用该模块的地方,如sidebar.html,single.html等模板文件中,加入调用代码:
<div id="YouModelName" class="widget widget_YouModelName">
<h3>YouModelName</h3>
<ul>
{{blog.YouModelName}}
</ul>
</div>
- 上传部署,在后台即可以看到模块设置了,支持任何html标签(注意,不能够转义,默认的blognotice转义了,即上面那步为{{blog.YouModelName}}而不是{{blog.YouModelName|escape}})
Done & enjoy~
No comments:
Post a Comment