ECSHOP实现多城市分站功能详解
2024-07-09 22:56:39
供稿:网友
长期以来,ecshop论坛里,很多朋友在问:“ECSHOP如何实现地方分站? ”,“EC可以实现分站网店吗?? ”,“能不能增加“城市分站”的功能? ”,“增加各城市分页(非分站非IP,只是一个页面),大大优化搜索! ”等诸如此类的问题,但是都没能找到一个好的答案。下面这段代码是笔者在网上找到,希望EC高手们继续补充完善,ecshop如果能实现像58同城哪样的功能肯定是使用ECSHOP的所有朋友的福音。
下面是笔都用以下代码做出来的效果图:
给ECSHOP添加全国分站:
首们在ECSHOP数据库ecs_region表中,可以发现字段parent_id为1的值就是咱们想要的全国各地分站名(region_name)
通过在ECSHOP商城根目下的index.php文件中增加1个函数:
//-- ecshop用品商城获取城市分站插件
function get_city () {
$sql = "SELECT * FROM ".$GLOBALS['ecs']->table('region')." WHERE `parent_id` =1 ";
$list = $GLOBALS['db']->getAll($sql);
if ($list) {
return $list;
}
return false;
}
复制代码
继续在index.php中搜索:
//-- 判断是否存在缓存,如果存在则调用缓存,反之读取相应内容
复制代码
在以上内容的下方增加:
$smarty->assign('citys', get_city ()); // 城市分站
复制代码
最后在ECSHOP模板themes/defau/ltindex.dwt文件中相应的地方增加:
<p>全国分站:
{foreach from=$citys item=c}
<a href="http://www.vevb.com/">{$c.region_name }</a>
{/foreach}
</p>
复制代码
聚红伙玩具商城是在红色部份代码处增加的,当然你也可以根据实际需要增加在别的位置。
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
<script type="text/javascript">
var process_request = "{$lang.process_request}";
</script>
<div class="block clearfix">
<div class="f_l"><a href=http://www.vevb.com name="top"><img src="http://www.vevb.com/images/logo.gif" /></a></div>
//-- ecshop商城城市分站
<p>玩具商城全国各地分站:
{foreach from=$citys item=c}
<a href="http://www.vevb.com/">{$c.region_name }</a>
{/foreach}
</p>
<div class="f_r log">
<ul>
<li class="userInfo">
{insert_scripts files='transport.js,utils.js'}
<font id="ECS_MEMBERZONE">{* ECSHOP 提醒您:根据用户id来调用member_info.lbi显示不同的界面 *}{insert name='member_info'} </font>
</li>
<!--{if $navigator_list.top}-->
<li id="topNav" class="clearfix">
<!-- {foreach name=nav_top_list from=$navigator_list.top item=nav} -->
<a href="{$nav.url}" <!-- {if $nav.opennew eq 1} --> target="_blank" <!-- {/if} -->>{$nav.name}</a>
<!-- {if !$smarty.foreach.nav_top_list.last} -->
|
<!-- {/if} -->
<!-- {/foreach} -->
<div class="topNavR"></div>
</li>
<!-- {/if} -->
</ul>
</div>
</div>
<div class="blank"></div>
<div id="mainNav" class="clearfix">
<a href="../index.php"{if $navigator_list.config.index eq 1} class="cur"{/if}>{$lang.home}<span></span></a>
<!-- {foreach name=nav_middle_list from=$navigator_list.middle item=nav} -->
<a href="{$nav.url}" {if $nav.opennew eq 1}target="_blank" {/if} {if $nav.active eq 1} class="cur"{/if}>{$nav.name}<span></span></a>
<!-- {/foreach} -->
</div>
<!--search start-->
<div id="search" class="clearfix">
<div class="keys f_l">
<script type="text/javascript">
{literal}
<!--
function checkSearchForm()
{
if(document.getElementByIdx_xx_x_x('keyword').value)
{
return true;
}
else
{
alert("{$lang.no_keywords}");
return false;
}
}
-->
{/literal}
</script>
{if $searchkeywords}
{$lang.hot_search} :
{foreach from=$searchkeywords item=val}
<a href="search.php?keywords={$val|escape:url}">{$val}</a>
{/foreach}
{/if}
</div>
<form id="searchForm" name="searchForm" method="get" action="search.php" **ubmit="return checkSearchForm()" class="f_r" style="_position:relative; top:5px;">
<select name="category" id="category" class="B_input">
<option value="0">{$lang.all_category}</option>
{$category_list}
</select>
<input name="keywords" type="text" id="keyword" value="{$search_keywords|escape}" class="B_input" style="width:110px;"/>
<input name="imageField" type="submit" value="" class="go" style="cursor:pointer;" />
<a href="search.php?act=advanced_search">{$lang.advanced_search}</a>
</form>
</div>
<!--search end-->
复制代码
通过修改以上2个文件,ECSHOP全国分站就可以在首页上显示出来了,但是要想让ecshop实现58同城哪样的功能,还有待各位大虾们的进一步完善。
在ECSHOP数据库ecs_region表中,可以发现字段parent_id为1的值就是咱们想要的全国各地分站名(region_name)
通过在ECSHOP商城根目下的index.php文件中增加1个函数:
//-- ecshop商城获取城市分站插件
function get_city () {
$sql = "SELECT * FROM ".$GLOBALS['ecs']->table('region')." WHERE `parent_id` =1 ";
$list = $GLOBALS['db']->getAll($sql);
if ($list) {
return $list;
}
return false;
}
复制代码
继续在index.php中搜索:
//-- 判断是否存在缓存,如果存在则调用缓存,反之读取相应内容
复制代码
在以上内容的下方增加:
$smarty->assign('citys', get_city ()); // 城市分站
复制代码
最后在ECSHOP模板themes/defau/ltindex.dwt文件中相应的地方增加:
<p>全国分站:
{foreach from=$citys item=c}
<a href="http://www.vevb.com/">{$c.region_name }</a>
{/foreach}
</p>