这几天,在折腾Micolog的主题和功能,当然了现在只是在本地测试,Micolog的版本是0.7 Release,先说说这今天的成果,就是如标题所示的:让Micolog在发布或修改文章时自动为该文章生成摘要信息。至于为什么要这样做,我想如果你是用搜索引擎进来的话,你应该知道这个原因了。
如果一篇文章太长,那么在首页就会把一整个页面都拉长了,为了不出现这种情况,你可能会在设置中调节文章在首页的显示数量,但这并不是根本的解决方法,毕竟如果你这几篇文章又刚好不长呢?那不是把首页的整个页面缩水了?所以这里你会选择发布或编辑文章时,在摘要栏手动添加进文章的摘要。但,既然如此,为什么不试试自动生成文章的摘要信息呢?下文仅针对Micolog 0.7 Release版本,其他版本请作自行参考。
(注意:以下所提到的行数,均为原文件在未修改前的显示行数)
进入Micolog的目录,打开"admin.py",在第480行的"entry.excerpt=entry_excerpt"和第520行的"entry.excerpt=entry_excerpt"上面插入如下代码:
if (entry_excerpt=='' and len(entry.content)>500):
entry_excerpt=entry.content[0:500].strip('\n')
文件两处修改后所显示的内容均为:
entry.menu_order=menu_order
if (entry_excerpt=='' and len(entry.content)>500):
entry_excerpt=entry.content[0:500].strip('\n')
entry.excerpt=entry_excerpt
然后再进入"views/admin"目录下,打开"entry.html"文件,修改第312行的
"<textarea name="excerpt" style="width:98%"/>{%if entry.excerpt%}{{entry.excerpt|escape}}{%endif%}</textarea><br/>"
为下面代码:
"<textarea name="excerpt" style="width:98%"/>{%if not entry.excerpt%}{{entry.excerpt|escape}}{%endif%}</textarea><br/>"
好了,大家如果不满意,我也没辙了,因为后面修改"entry.html"文件的方法真的很另类,不喜欢我这个方法的话可以用"张正伟"童鞋的正版方法[点这里](不过我还是觉得我的方法更好一些~)。
对了,补充一下,上面所修改的"admin.py"文件内容也可以用下面的代码,不过如果你看不懂的话就不要用了,仅作参考:(实质是以"换行符"为结尾~)
if (entry_excerpt=='' and len(entry.content)>500):
excerpt_last_lf = entry.content[0:500].rfind('<br />')
if excerpt_last_lf == -1:
excerpt_last_lf = 500
entry_excerpt=entry.content[0:excerpt_last_lf].strip('\n')
del excerpt_last_lf
再补充一下:500是String类型所能保存的最大长度,当摘要内容长度超过500时保存就会出错,下面是错误提示:
BadValueError: Property excerpt is 789 bytes long; it must be 500 or less. Consider Text instead, which can store strings of any length.
转载请注明,文章转载自:
博客: iCyOMiK 链接: http://blog.icyomik.tk/2010-11-9/73001