删除ECSHOP商品名称或文章标题后的省略号...-站长杂谈下载

删除ECSHOP商品名称或文章标题后的省略号...

开通本站Svip会员,全站资源免费下
使用ECSHOP 的人都知道,在商品列表页或文章列表页,如果商品名称或文章标题比较长的话,后面会出现一个 省略号 ...,6 S1 @! X# N% m3 [6 c8 u
即使你在模板文件里 修改为 {$goods.goods_name|truncate:10:''} ,标题后面还是一样会跟着省略号 ... ,这到底是为什么呢?
6 M- C- o! X" g: h1 u1 P又该如何删除这个省略号呢???
/ q) V# ^5 K0 h5 J9 A$ D* l# I1 Q* Q/ M- F: f! E
最近发现 ec的模板引擎不完全是smarty, 所以在truncate函数上是有区别的* H1 G- g8 Z3 q4 L
1 \) F. L, Y0 Z. N) H
找到 cls_template.php 搜索truncate 你会发现以下代码
; `( e& E7 |% f$ k. K& ]( ?0 T( Tcase 'truncate':7 G9 h) G" U: R5 H, T. V7 b
$p = 'sub_str(' . $p . ",$s[1])";
2 V1 |" B, o6 ~7 h( D, u$ D9 Rbreak;
7 M/ G9 ^% J  d8 O, q1 f* ~; T6 L$ ^6 |1 }- v" N7 T' V6 D. r0 P
这里的 sub_str是ec的一个自定义函数, 位置在 lib_base.php文件
& o( R1 W+ f9 G- H( U( e6 K4 y0 Y代码如下:% E' B3 o/ B2 I" e# `) W0 s
function sub_str($str, $length = 0, $append = true)
1 f  n/ l$ L) t) @{- E0 M$ ~# a9 J9 _" j
$str = trim($str);
, P5 W1 q1 Z. f7 p5 G- D% m5 r' w$strlength = strlen($str);' f+ U& ^7 r" b4 X/ D3 I  b7 f: V' m
if ($length == 0 || $length >= $strlength)0 m6 u$ i& |- R
{9 \! A6 Z/ A( ~" G
       return $str;6 w, U- b8 Q6 i& |# K  O
}( ?: }% U+ S' E$ }- o0 \0 Z
elseif ($length < 0)1 ^9 K4 A3 C3 }7 B" M% S2 O' R
{2 h$ j9 N4 V. Q6 o6 H
       $length = $strlength + $length;
) w; q4 U8 j, e6 x) p7 u/ ]& M) v       if ($length < 0)5 E7 l1 f/ I: R! j( k6 i
       {
; Y# O# a2 ]2 n6 b1 H+ S7 R         $length = $strlength;
% T7 _8 j, x9 L, x/ W4 w  U7 T       }8 s1 n; b% v* }# L$ M! [$ z
}/ ~" z) u+ u# v% x: Z
if (function_exists('mb_substr')). }7 j: n$ R, p6 }; B8 c% Q
{. r1 H0 ]3 w/ Y+ p
       $newstr = mb_substr($str, 0, $length, EC_CHARSET);
! }2 d/ m/ E+ A1 T/ ?3 a4 C! h: |}
! a& m0 B! J; ^/ }elseif (function_exists('iconv_substr'))
# V/ x6 i0 a6 Q' K$ W+ N2 {* ]{6 g7 t5 d. `% h/ q
       $newstr = iconv_substr($str, 0, $length, EC_CHARSET);* B: x2 J; t9 F$ N5 ]9 k  J
}% ^# K9 o2 O9 N. t' B5 C
else( K* n7 t1 T7 v! k- e
{' w) W9 S: U1 d/ A% b6 h
       //$newstr = trim_right(substr($str, 0, $length));
+ i5 x! Q: {0 C/ n       $newstr = substr($str, 0, $length);! z) v8 K/ H3 `9 |
}2 D3 X( o3 \- ?7 i, d
if ($append && $str != $newstr). f2 G; z6 y7 u* {2 \9 S1 V
{7 J( g4 @1 ~# Y3 K6 i% P; u( I
       $newstr .= '...';
$ ^9 e, x; p9 O% f2 N}
9 h; p) M9 N8 L4 R! b: Areturn $newstr;
* M2 i' d- Q4 d% x0 F}1 E& B4 E- |8 _- M/ O" U
其中 仔细看
6 ^7 L4 P  S1 n5 d1 O: L. f2 t这个函数有3个参数 但是在模板引擎文件中只代了2个参数9 I7 J$ `7 S5 ~! f+ }$ j# U3 R1 P
5 n2 Q% J3 u. C" H5 B% F2 X
方法一
/ N% m5 e( b$ l/ m找到 cls_template.php 搜索truncate
+ E& \( g1 Z# Ucase 'truncate':6 k5 E3 Q/ v; Z2 [3 q7 p
$p = 'sub_str(' . $p . ",$s[1],$s[2])";
4 ?( H. M, o6 Y5 F, M" V; O( D9 ]break;, n" G; z& ]* a

$ X% r- [) K' f3 @  i0 [然后在你的后台清除一下缓存) f' |9 q8 n& s9 N5 P  M9 e
{$goods.goods_name|truncate:10:false}
! ?0 m& _, a. Z$ C& N; c就只显示5个字 也不会出现...4 V# i: v% a; ?3 B: T
% b' L& m  s# T% e# C5 T. [" e
3 ]0 d% U2 H( O4 W: L1 L- R7 H! \1 C

+ u% e! X0 E7 J; |方法二 . p5 x0 y+ B* {$ P1 t
直接干掉lib_base.php中的下面代码4 G) H+ F$ n* g% y) R0 ^

7 X0 A0 q+ u8 pif ($append && $str != $newstr)
' v; n3 S# n9 O- o+ E: m0 ]{
5 s+ N/ L5 o4 W; @; u       $newstr .= '...';
0 o# n& p8 h2 ~7 s5 {}& N! I6 N9 U8 k$ N0 z6 O) ~" Y; T

( C1 Y; d- o7 r1 x0 }7 z4 x' R8 m3 O/ v7 D/ w
这样{$goods.goods_style_name}也不会显示1 D$ S8 ^3 z1 B- q0 A

  Z- @$ C8 y9 m3 F1 z/ H以上两种方法,都可以删除掉商品名称或文章标题后的省略号
0 G6 Z# h& K7 p, x8 M  z

全部评论 0

您需要登录后才可以回帖 立即登录
登录
0
0
0
返回顶部