Saturday, October 23, 2010

Micolog添加自定义模块

有时,我们的博客需要经常更新一些模块的内容,如广告栏,以及一些其他不同的人设置不一样的工具。为了方便管理,这些模块最好都要移到后台,这样就可以经常更改模块内容而不用更改博客源码重新上传。之前,我在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