使用ECSHOP 的人都知道,在商品列表页或文章列表页,如果商品名称或文章标题比较长的话,后面会出现一个 省略号 ...,' V" T6 ~9 N/ ~% o* F% q9 s2 ^1 y8 c
即使你在模板文件里 修改为 {$goods.goods_name|truncate:10:''} ,标题后面还是一样会跟着省略号 ... ,这到底是为什么呢?; @1 A; y0 ~! _) q9 F5 Z/ m7 W
又该如何删除这个省略号呢???
4 F4 G4 {. {) A3 b. q! ?3 p
/ S: k$ a& Z+ L+ `- i最近发现 ec的模板引擎不完全是smarty, 所以在truncate函数上是有区别的/ @2 T% y6 b9 h6 d, e
0 p& R4 }6 E! d6 T
找到 cls_template.php 搜索truncate 你会发现以下代码$ s6 W- J) l. g8 O
case 'truncate':: h8 K* C) H) _. k8 k8 o. z
$p = 'sub_str(' . $p . ",$s[1])";
- g8 X+ L! D& S3 H6 j4 {# w' f# X$ |break;/ z6 i: _8 F( a* F0 X1 C
V; d _7 m) M4 k- E6 n5 Q
这里的 sub_str是ec的一个自定义函数, 位置在 lib_base.php文件中
5 [ P) a* z E0 u0 J3 @9 Q3 _代码如下:
7 M2 f9 x% N$ \/ R' ufunction sub_str($str, $length = 0, $append = true)
3 v( E* r7 {3 Q/ `+ [/ O{
9 R# t7 I, Z5 W) }5 _+ B$str = trim($str);* h! W6 y( O) c. F4 e0 z5 Q
$strlength = strlen($str);
# |: L5 O6 x% G( a5 jif ($length == 0 || $length >= $strlength)
+ ~1 ^! `0 `6 X: f2 R3 V{! u- R1 `" s6 S0 w2 y& u C- a L
return $str;
4 V* T0 R5 x" ~9 A) b" ]6 q}
7 X/ p! u1 }2 n! [, q; E1 Gelseif ($length < 0)0 o% x, X5 S; Q; [
{
- n8 g% |' x6 S6 A* _5 e $length = $strlength + $length;8 G% H' S Z6 I9 V8 p {
if ($length < 0)
9 H* n; @/ q( C9 m( J$ z. k {4 A$ v( ?' D# C2 P' K% j
$length = $strlength; A# v7 n! d, g2 y6 x' `& J
}
! b1 P, `7 |6 H" H}
* }" X" Y+ c8 n) L# l* B" Kif (function_exists('mb_substr'))
) A+ u. V; l4 `3 K3 P- u7 m7 ^{
6 |+ }# y2 M2 G; c' r( h- C. e $newstr = mb_substr($str, 0, $length, EC_CHARSET);+ Z5 b2 ?, ~* f, {* V
}
; s& z7 P# H+ a felseif (function_exists('iconv_substr')); d! [% `5 b- }8 U) b1 a" C
{8 ^4 k2 C4 s5 A8 f2 a7 Z3 j
$newstr = iconv_substr($str, 0, $length, EC_CHARSET);
! l$ b6 a8 l- X+ F, T- @+ F' x1 H, M}
' C o3 y# C9 g& A% x# ?else
- \9 j# r/ I3 j0 {. Q# R. b2 E* v4 K{
/ J$ W6 N* L. ~" S9 U }- Z //$newstr = trim_right(substr($str, 0, $length));
3 ]' S/ o% n# n8 q5 g) ] q$ P. f# R& h $newstr = substr($str, 0, $length);
1 s( M# U9 ]& ]' ~+ r}4 t2 a0 V J9 E# F% ?& I: t1 h. M+ M
if ($append && $str != $newstr)
G+ A. X) m# _7 s{& O) h, j2 r+ G/ u# J
$newstr .= '...';
) {$ G/ v* O) e& {+ F3 F}0 R+ u/ G, s. s9 z0 D
return $newstr;
1 m9 z: X$ A3 L; F, N6 U}
& D7 n T$ J5 N. t其中 仔细看3 O/ A5 c( Z5 F% u8 O, w
这个函数有3个参数 但是在模板引擎文件中只代了2个参数
/ l, P9 R9 t( C, g5 m' R. g6 M
- g( B, L: N+ f; R9 G8 ^1 i方法一& [$ H6 m; k9 I4 f- `7 P& [' ]9 L
找到 cls_template.php 搜索truncate
2 n8 p& u0 t9 n/ j. `case 'truncate':* [5 l, d. H5 c+ A E0 w, Z7 K
$p = 'sub_str(' . $p . ",$s[1],$s[2])";
{# n) `1 v9 x# b7 pbreak;
0 |# n' r# P, W+ D) [4 o
2 q5 Y& K4 \: D# P# ]4 ?然后在你的后台清除一下缓存6 k n& {/ Q5 c+ q3 I
{$goods.goods_name|truncate:10:false}
9 z C# M& `% C2 t/ i就只显示5个字 也不会出现..., L1 c) J( H9 g! L J$ A9 t/ ^9 u
0 R1 A" q3 E" J+ X; A
# t% _8 H# j) O6 u4 f3 Y
$ S0 A0 U) c/ L" Q3 g$ y: K
方法二
2 j: I/ I& g8 c9 Q. g直接干掉lib_base.php中的下面代码
' D3 T9 o% q3 R' k( A5 v. W
) l# I9 u8 R3 ]; {- Qif ($append && $str != $newstr)% |7 s) e* N7 _9 L7 a0 m
{* b1 P; Q+ i- m( r7 K
$newstr .= '...';) ], t2 M1 s7 q' \
}
( V5 \5 P3 u9 B8 Y$ o' f t, Y4 q( d- ]8 A) M* u
9 S- p6 z: N( {1 ?, u这样{$goods.goods_style_name}也不会显示
2 N: T1 k' I0 Q6 p/ V |- [
; |; J) h, h/ G. M8 t4 E以上两种方法,都可以删除掉商品名称或文章标题后的省略号
& X8 e1 E5 P* o3 }5 E. r/ A+ { |