看了看一个07年一直问到现在的帖子,昨天又有电子商务开发朋友发信息给我,和我探讨如何ecshop修改文章标题,让其显现出红色。自己仔细想了想,这个功能确实是有点用处,也不是一点都没用。

1:如何让置顶的文章显红色

首先,在首页咨讯类当中。你可以看到

function index_get_new_articles()
{
$sql = 'SELECT a.article_id, a.title, ac.cat_name, a.add_time, a.file_url, a.open_type, ac.cat_id ' .
' FROM ' . $GLOBALS['ecs']->table('article') . ' AS a, ' .
$GLOBALS['ecs']->table('article_cat') . ' AS ac' .
' WHERE a.is_open = 1 AND a.cat_id = ac.cat_id AND ac.cat_type = 1' .
' ORDER BY a.article_type DESC, a.add_time DESC LIMIT ' . $GLOBALS['_CFG']['article_number'];
$res = $GLOBALS['db']->getAll($sql);

$arr = array();
foreach ($res AS $idx => $row)
{
$arr[$idx]['id']          = $row['article_id'];
$arr[$idx]['title']       = $row['title'];
$arr[$idx]['short_title'] = $GLOBALS['_CFG']['article_title_length'] > 0 ?
sub_str($row['title'], $GLOBALS['_CFG']['article_title_length']) : $row['title'];
$arr[$idx]['cat_name']    = $row['cat_name'];
$arr[$idx]['add_time']    = local_date($GLOBALS['_CFG']['date_format'], $row['add_time']);
$arr[$idx]['url']         = $row['open_type'] != 1 ?
build_uri('article', array('aid' => $row['article_id']), $row['title']) : trim($row['file_url']);
$arr[$idx]['cat_url']     = build_uri('article_cat', array('acid' => $row['cat_id']));
}

return $arr;
}

分析ecs_article你可以发现,article_type就是用来控制置顶的。如果为1,就表示该文章置顶。那么,你可以修改函数成为这样。

function index_get_new_articles()
{
$sql = 'SELECT a.article_type, a.article_id, a.title, ac.cat_name, a.add_time, a.file_url, a.open_type, ac.cat_id ' .
' FROM ' . $GLOBALS['ecs']->table('article') . ' AS a, ' .
$GLOBALS['ecs']->table('article_cat') . ' AS ac' .
' WHERE a.is_open = 1 AND a.cat_id = ac.cat_id AND ac.cat_type = 1' .
' ORDER BY a.article_type DESC, a.add_time DESC LIMIT ' . $GLOBALS['_CFG']['article_number'];
$res = $GLOBALS['db']->getAll($sql);

$arr = array();
foreach ($res AS $idx => $row)
{
$arr[$idx]['id']          = $row['article_id'];
$arr[$idx]['title']       = $row['title'];
$arr[$idx]['short_title'] = $GLOBALS['_CFG']['article_title_length'] > 0 ?
sub_str($row['title'], $GLOBALS['_CFG']['article_title_length']) : $row['title'];

if($row['article_type'] == 1) {  $arr[$idx]['short_title']  = "<font color=red>". $arr[$idx]['short_title'] ."</font>";} //置顶的文章显示红色

$arr[$idx]['cat_name']    = $row['cat_name'];
$arr[$idx]['add_time']    = local_date($GLOBALS['_CFG']['date_format'], $row['add_time']);
$arr[$idx]['url']         = $row['open_type'] != 1 ?
build_uri('article', array('aid' => $row['article_id']), $row['title']) : trim($row['file_url']);
$arr[$idx]['cat_url']     = build_uri('article_cat', array('acid' => $row['cat_id']));
}

return $arr;
}

2:ecshop修改文章列表中的将标题为红色的处理方式,主要是置顶文章显示红色

打开article_cat.php,你会发现,这里有个函数 get_cat_articles,他就是用来显示该类别下所有文章的。该函数在includes/lib_article.php中

function get_cat_articles($cat_id, $page = 1, $size = 20 ,$requirement)
{
//取出所有非0的文章
if ($cat_id == '-1')
{
$cat_str = 'cat_id > 0';
}
else
{
$cat_str = get_article_children($cat_id);
}
//增加搜索条件,如果有搜索内容就进行搜索
if ($requirement != '')
{
$sql = 'SELECT article_type,article_id, title, author, add_time, file_url, open_type' .
' FROM ' .$GLOBALS['ecs']->table('article') .
' WHERE is_open = 1 AND ' . $cat_str . ' AND  title like \'%' . $requirement . '%\' ' .
' ORDER BY article_type DESC, article_id DESC';
}
else
{

$sql = 'SELECT article_type, article_id, title, author, add_time, file_url, open_type' .
' FROM ' .$GLOBALS['ecs']->table('article') .
' WHERE is_open = 1 AND ' . $cat_str .
' ORDER BY article_type DESC, article_id DESC';
}

$res = $GLOBALS['db']->selectLimit($sql, $size, ($page-1) * $size);

$arr = array();
if ($res)
{
while ($row = $GLOBALS['db']->fetchRow($res))
{
$article_id = $row['article_id'];

$arr[$article_id]['id']          = $article_id;
$arr[$article_id]['title']       = $row['title'];
$arr[$article_id]['short_title'] = $GLOBALS['_CFG']['article_title_length'] > 0 ? sub_str($row['title'], $GLOBALS['_CFG']['article_title_length']) : $row['title'];

if($row['article_type'] == 1) {

$arr[$article_id]['short_title']  = "<font color=red>".$arr[$article_id]['short_title']."</font>";        //显示红色,该类别下面文章

}
$arr[$article_id]['author']      = empty($row['author']) || $row['author'] == '_SHOPHELP' ? $GLOBALS['_CFG']['shop_name'] : $row['author'];
$arr[$article_id]['url']         = $row['open_type'] != 1 ? build_uri('article', array('aid'=>$article_id), $row['title']) : trim($row['file_url']);
$arr[$article_id]['add_time']    = date($GLOBALS['_CFG']['date_format'], $row['add_time']);
}
}

return $arr;
}
 

3:如果需要某指定文章显示红色

那么你需要用文章编号article_id来判断,这里的判断语句将写成如下

if($row['article_id'] == 需要指定的文章ID) {

$arr[$article_id]['short_title']  = "<font color=red>".$arr[$article_id]['short_title']."</font>";        //显示红色,该类别下面文章

}