使用ECSHOP 的人都知道,在商品列表页或文章列表页,如果商品名称或文章标题比较长的话,后面会出现一个 省略号 ...,
, V, n. Q8 I& a! W3 O即使你在模板文件里 修改为 {$goods.goods_name|truncate:10:''} ,标题后面还是一样会跟着省略号 ... ,这到底是为什么呢?4 l( y/ i0 M# C; i
又该如何删除这个省略号呢???; k! p% _9 ?# F! S
7 d& y6 D- o1 ?% V/ g3 z最近发现 ec的模板引擎不完全是smarty, 所以在truncate函数上是有区别的) b5 t& y- Q& v. W L9 z
; c1 h4 C2 T( }/ a! G8 a2 @
找到 cls_template.php 搜索truncate 你会发现以下代码
; G, V0 W) W1 _% `+ T' ucase 'truncate':
: Z8 T( f9 m. [9 Y- T$p = 'sub_str(' . $p . ",$s[1])";; n% F2 _7 i; L, N
break;
" _% `: ?! a: T1 {7 q1 Z8 |3 H/ c" e T
这里的 sub_str是ec的一个自定义函数, 位置在 lib_base.php文件中2 a6 C$ q8 C$ B
代码如下:
D! a4 @5 K5 v- o% v u3 l; Y, Zfunction sub_str($str, $length = 0, $append = true)9 ] k! p+ J; a2 Z
{
) d& `8 W8 q d3 g& _8 _, f$str = trim($str);
$ S# n5 p8 R. U. {# e$strlength = strlen($str);! T( X# c7 h" {! Y K4 G- o
if ($length == 0 || $length >= $strlength)& W. [9 _: U* h: h
{1 x( c8 r# ]2 H) K- ~
return $str;2 |9 `# G$ H! x) L
}, c! m' C3 m' z% u& O
elseif ($length < 0)
" ?, w$ k$ x0 Z, X! ^{
, l: [4 g! p; r$ Z $length = $strlength + $length;) s9 X* d/ n% m% ^! G0 t; Z9 L+ b
if ($length < 0)( g$ W- v/ t4 u
{
3 k2 Q+ z% W& }9 j% F: I7 V8 T $length = $strlength;: A5 N/ X2 C7 ~5 \( W
}: ]% t# v& V" D% U. E3 W3 W* z
}
" V# f$ B+ X& C, |1 Qif (function_exists('mb_substr'))
" Q: }1 _: T: Y8 r. c" Q' g{
; L' q* {% l7 Z9 d $newstr = mb_substr($str, 0, $length, EC_CHARSET);) Q* v( x& _2 ?# O9 y
}8 T* W2 |0 A* A. w
elseif (function_exists('iconv_substr'))
7 o( }7 J4 X8 @( @# e{
& z7 ~& @8 v% l$ A" i8 r $newstr = iconv_substr($str, 0, $length, EC_CHARSET);4 D& H, f C% N4 |) ~5 r
}
! c; K& {" o( G% _, F9 [9 z belse
" z1 L. A0 K1 M{# Z4 a3 }+ h7 A; Q* {/ H
//$newstr = trim_right(substr($str, 0, $length));0 c# u. _) x) }! Q# `2 y
$newstr = substr($str, 0, $length);
1 Z* o3 {6 m( W}
, O6 v y$ }; z. [/ y/ Gif ($append && $str != $newstr)
3 S9 w6 ?# O& f, M8 Y1 F6 D! L4 E{
+ s0 C! k3 _$ j6 I $newstr .= '...';: n, z; ]3 `( I/ @
}8 M, a% P$ q+ O4 g
return $newstr;. c- B. M/ [/ O- j( E& W0 V0 s
}- B) H- ~2 w) d, F: S- E# a( U% H$ d
其中 仔细看
" D! W: ]8 c$ X4 N3 M这个函数有3个参数 但是在模板引擎文件中只代了2个参数& ?$ ?) P5 Y# `( k( O7 `" b
) F5 n# E' {3 i4 k6 R d
方法一
6 H }. i$ { H6 \6 l, \5 F. Q; `2 `找到 cls_template.php 搜索truncate
- w3 n8 s( j- V! X5 [; Qcase 'truncate':0 j1 r- i& K4 \2 { |+ R6 }
$p = 'sub_str(' . $p . ",$s[1],$s[2])";
# m p" ?6 O. I: vbreak;( Q8 q7 h" {! g$ B J& T" b7 y
: h: X6 t4 p( N0 _0 s, i ?然后在你的后台清除一下缓存
% I6 Y' T8 P. e/ u, S{$goods.goods_name|truncate:10:false}
5 e6 W* B+ r% r8 o! G. z1 Q就只显示5个字 也不会出现...
) y0 K2 n: J& a, R/ T1 z: t# c% F
' r. G% _- n! C( \% s8 z
9 T! x9 `: o! A% y" r" p& l2 O
+ C) I" g$ @) x( Y方法二 + A! P7 s, s4 }, `/ E
直接干掉lib_base.php中的下面代码" s; r6 \2 k* ?9 z5 W) a
2 a1 C( T7 X" `( ]8 J
if ($append && $str != $newstr)
?" \- D0 j) r5 ~+ s& z+ ~{ \+ A) ~2 ?0 Q+ u
$newstr .= '...';
+ i0 B/ u% Y6 X2 I}% x1 k# [) c3 a6 e5 \. M- S* t
- j2 r' a) h2 J" O" V* j- G- w6 C
' R- H* [8 o' z* V# H8 s2 s这样{$goods.goods_style_name}也不会显示
1 j$ T! T; t( J2 F- Y& L. ^, g: `/ R9 a' J
以上两种方法,都可以删除掉商品名称或文章标题后的省略号9 q8 W( S' f9 ]7 J6 n i; T5 o
|