haystack Highlighter搜索高亮度标题省略号代替

原创 赤水  2016年11月1日 18:49 阅读 42 次

使用haystack Highlighter搜索结果高亮时,默认会把关键字前面的字符用...代替,如图所示:   

             

但是博客标题是重之中当然不行了,通过修改源码可以解决这个问题
haystack Highlighter搜索高亮度标题省略号代替

#备份原文件
# cp /usr/local/lib/python2.7/dist-packages/haystack/utils/highlighting.py /usr/local/lib/python2.7/dist-packages/haystack/utils/highlighting.py_backup
在class Highlighter 下面的def __init__ 下面新增变量
self.subject = kwargs.get('subject',False)
在render_html方法中找到如下代码   
if start_offset > 0:
	highlighted_chunk = '...%s' % highlighted_chunk
if end_offset < len(self.text_block):
	highlighted_chunk = '%s...' % highlighted_chunk

将其修改为:    
if self.subject:
    if start_offset > 0:
        highlighted_chunk = self.text_block[0:start_offset] + highlighted_chunk
    if end_offset < len(self.text_block):
        highlighted_chunk = self.text_block[end_offset:] + highlighted_chunk
else:
    if start_offset > 0:
        highlighted_chunk = '...%s' % highlighted_chunk

    if end_offset < len(self.text_block):
        highlighted_chunk = '%s...' % highlighted_chunk 
#tags:
@register.simple_tag(name='SearchHight')
def SearchHight(*args,**kwargs):
    try:
        return Highlighter(args[0], html_tag='b', css_class='found',subject=kwargs.get('s',False)).highlight(args[1])
    except Exception,e:
        Loging().error(traceback.format_exc())
    return "Null"

模板用法:
<p>{% SearchHight subject conntent s='ture'%}</p>

  更改之后的效果图:

                 

 

本文地址: http://blog.lssin.com/readblog/121.html
版权声明:本文为原创文章,版权归  赤水 所有,欢迎分享本文,转载请保留出处!

发表评论


表情