BoxCore

Start


  • 首页

  • 分类

  • 关于

  • 归档

  • 标签

  • 站点地图

  • 搜索

CentOS lnmp环境搭建SVN服务

发表于 2013-11-24 | 分类于 linux | | 阅读次数

安装svn相关基础环境说明:
环境:CentOS 6.3
原有服务环境:lnmpa 1.0 full

安装svn的版本: subversion 1.8.3
由于lnmpa编译的时候没有安上–enable-dav 故svn使用不了httpd的服务,我们只用svn协议来访问
同步好后再执行钩子程序同步到虚拟空间下做网站服务。

安装步骤:

各个安装包说明:
1.self 1.2.1 推荐版本,1.3.0后面会出现报错。
Subversion 1.8中http客户端基于neon已经被移除如果要支持http方式需要在安装svn前安装serf,安装serf推荐用serf-1.2.1
2.apr、apr-unit
安装apr、apr-unit

# cd /root/lamp/source

wget http://archive.apache.org/dist/apr/apr-1.4.8.tar.gz #LAMP中已经下载

wget http://archive.apache.org/dist/apr/apr-util-1.5.2.tar.gz

tar xzf apr-1.4.8.tar.gz

cd apr-1.4.8

./configure –prefix=/usr/local/apache

make && make install

cd ../

tar xzf apr-util-1.5.2.tar.gz

cd apr-util-1.5.2

./configure –prefix=/usr/local/apache

make && make install

cd ../

2.安装serf-1.2.1 (需要httpd服务才安装,下面只是参考,将不进行安装)

# yum -y install expat-devel

wget http://serf.googlecode.com/files/serf-1.2.1.tar.bz2 #serf-1.2.1.zip是win版有问题

tar xjf serf-1.2.1.tar.bz2

cd serf-1.2.1

./configure –prefix=/usr/local/serf –with-apr=/usr/local/apache –with-apr-util=/usr/local/apache

make && make install

cd ..

 

3.安装svn

# wget http://mirror.bit.edu.cn/apache/subversion/subversion-1.8.3.tar.gz

tar xzf subversion-1.8.3.tar.gz

cd subversion-1.8.1

./get-deps.sh //此步骤会等比较久,是配置svn服务库的脚步,完成后会出现如下提醒


If you require mod_dav_svn, the recommended version of httpd is:
http://archive.apache.org/dist/httpd/httpd-2.4.6.tar.bz2

If you require apr-iconv, its recommended version is:
http://archive.apache.org/dist/apr/apr-iconv-1.2.1.tar.bz2


./configure –prefix=/usr/local/subversion –with-apxs=/usr/local/apache/bin/apxs –with-apr=/usr/local/apache –with-apr-util=/usr/local/apache –with-zlib –with-openssl –enable-maintainer-mode –with-serf=/usr/local/serf –enable-mod-activation

make && make install

cd ..

 

4. 检测svn是否安装成功

# vim /usr/local/apache/conf/httpd.conf

LoadModule dav_svn_module /usr/local/subversion/libexec/mod_dav_svn.so

LoadModule authz_svn_module /usr/local/subversion/libexec/mod_authz_svn.so

 

5.把svn相关的命令添加到环境变量中

/ 方法一 /

ln -s /usr/local/subversion/bin/svn /usr/local/bin

//这样在ssh中直接输入 svn –version就可以看到svn的版本等信息了
/ 方法二 (未测试) /

echo “export PATH=$PATH:/usr/local/subversion/bin/“ >> /etc/profile

source /etc/profile

* svn项目配置 建立仓库

# mkdir -p /opt/svn/

mkdir -p /opt/svn/svntest/

svnadmin create /opt/svn/svntest/

或 /usr/local/subversion/bin/svnadmin create /opt/svn/mall/

/修改配置文件/

cd /opt/svn/svntest/conf/

vi svnserve.conf


[general]
anon-access = none
auth-access = write
password-db = passwd

authz-db = authz

vim authz //给svntest仓库添加一个用户,权限为可写。


[svntest:/]

testuser = rw

vi passwd

//由于是测试,密码设置为123456

testuser = 123456

//设置好后启用svn服务

svnserve -d -r /opt/svn/

或

/usr/local/subversion/bin/svnserve -d -r /opt/svn/

//添加到开机启动

vim /etc/rc.d/rc.local

然后写入上面的代码

//查看是否启用了

netstat -tunlp | grep svn

ps -aux|grep svn

//杀死进程

kill -9 node

* SVN钩子程序设置

说明:
首先要在网站目录下检出文件

svn checkout svn://42.51.133.35/zoy/ /home/wwwroot/zoy.ch.boxcore.org/

svn update /home/wwwroot/zoy.ch.boxcore.org/

vim /opt/svn/zoy/hooks/post-commit


#!/bin/sh
SVN=/usr/local/subversion/bin/svn
WEB=/home/wwwroot/zoy.ch.boxcore.org
$SVN update $WEB –username 用户名 –password 密码

chown -R www:www $WEB

chmod 777 /opt/svn/zoy/hooks/post-commit

 

参考文档:
http://blog.csdn.net/xiaodanpeng/article/details/8898794
http://lookdfw.blog.163.com/blog/static/58249742201010652235834/
http://chenxiao18.blog.51cto.com/1144683/1196264 《对apache做./configure 增加参数支持svn
http://freeloda.blog.51cto.com/2033581/1189145 《SVN 安装与配置

http://www.open.collab.net/scdocs/ddUsingSVN_command-line.html.zh-cn 《linux下svn命令

ecshop模板smarty foreach详解

发表于 2013-11-22 | 分类于 ECshop | | 阅读次数

 

 

Smarty目录:
/libs Smarty的功能类目录
/tempalates 模板文件目录
/templates_c 模板缓存文件目录
/configs 配置文件目录
/cache 缓存文件目录
载入Smarty功能类:
require(’路径/Smarty.class.php’);
$smarty = new Smarty;
自定义Smarty工作目录:
$smarty->template_dir = ‘路径/templates/’;
$smarty->compile_dir = ‘路径/templates_c/’;
$smarty->config_dir = ‘路径/configs/’;
$smarty->cache_dir = ‘路径/cache/’;
常用语法:
$smarty->assign(’模板中的变量名’, 值); //给模板中的变量赋值(可以是数组或对象)
$smarty->display(’模板文件名’); //输出模板
常用标签语法:
所有的smarty模板标签都被加上了定界符, 默认情况下是 { 和 }
注释:{ 注释内容 }
函数:{函数名称[ 参数名1=值1[ 参数名2=值2]]}
变量: {$变量名}
数组: {$数组名.元素名} 或 {$数组名.[元素索引]}
对象:{$对象名->属性名}
从配置文件引用的变量:
配置文件名为: .conf
在模板中引入:{config_load file=”配置文件名.conf”}
在模板中的变理标签:
变量调节器:
{$变量名|调节器名} //用于变量
{”字符串”|调节器名} //用于字符串
{函数名|调节器名 函数的参数名=值} //用于函数
{$变量名|调节器名1[|调节器名2|…]} //使用多个调节器
‘{’字符: {ldelim}
‘}’字符: {rdelim}
原文输出:{literal}{/literal} 里面的文本内容将不会被模板引擎解析,原样输出
在模板中直接写PHP语句: {php}php语句;{/php}
条件:
为了简单,条件表达式与PHP中相同即可.
{if 条件表达式1}
内容1
[{elseif 条件表达式2}
内容2
{else}
内容3]
{/if}
循环:
{foreach from=$数组名 item=当前处理元素的变量名称[ key=当前处理元素的键名][ name=用于嵌套中的名称必须唯一]}
循环体…
{$当前处理元素的变量名称} {
//遍历数组时元素的引用 *}
{/foreach}
缓存:
$smarty = new Smarty;
$smarty->caching = 2; //缓存设置,值为: 0,关闭缓存(默认) 1,开启缓存(缓存默认时间为3600秒) 2,指定缓存的时间
$smarty->cache_lifetime = 3600; //设置缓存时间,单位秒。
$smarty->display(’index.tpl’);

ecshop模板smarty foreach详解
{foreach},{foreachelse}
{foreach} 用于像循环访问一个数字索引数组一样循环访问一个关联数组,与仅能访问数字索引数组的{section}不同,{foreach}的语法比 {section}的语法简单得多,但是作为一个折衷方案也仅能用于单个数组。每个{foreach}标记必须与关闭标记{/foreach}成对出现。
属性
1、from 类型:array数组 必要性:Yes必要 默认值:n/a 描述:循环访问的数组
2、item 类型:string字符串 必要性:Yes必要 默认值:n/a 描述:当前元素的变量名
3、key 类型:string字符串 必要性:No可选 默认值:n/a 描述:当前键名的变量名
4、name 类型:string字符串 必要性:No可选 默认值:n/a 描述:用于访问foreach属性的foreach循环的名称
from和item是必要属性
{foreach}循环的name可以是任何字母,数组,下划线的组合,参考PHP变量。
{foreach}循环可以嵌套,嵌套的{foreach}的名称应当互不相同。
from属性通常是值数组,被用于判断{foreach}的循环次数。
在from变量中没有值时,将执行{foreachelse}。
{foreach}循环也有自身属性的变量,可以通过{$smarty.foreach.name.property}访问,其中”name”是name属性。
注意:name属性仅在需要访问{foreach}属性时有效,与{section}不同。访问未定义name的{foreach}属性不会抛出一个错误,但将导致不可预知的结果。
{foreach}属性有index, iteration, first, last, show, total.
示例:
例一. item属性
<?php
$arr = array(1000, 1001, 1002);
$smarty->assign(‘myArray’, $arr);
?>
用模板以无序列表输出$myArray
<ul>
{foreach from=$myArray item=foo}
<li>{$foo}</li>
{/foreach}
</ul>
上例将输出:
<ul>
<li>1000</li>
<li>1001</li>
<li>1002</li>
</ul>
例二. 演示item和key属性
<?php
$arr = array(9 => ‘Tennis’, 3 => ‘Swimming’, 8 => ‘Coding’);
$smarty->assign(‘myArray’, $arr);
?>
用模板按键名/键值对的形式输出$myArray, 类似于PHP的foreach。
<ul>
{foreach from=$myArray key=k item=v}
<li>{$k}: {$v}</li>
{/foreach}
</ul>
上例将输出:
<ul>
<li>9: Tennis</li>
<li>3: Swimming</li>
<li>8: Coding</li>
</ul>
例三. {foreach}的item属性是关联数组
<?php
$items_list = array(23 => array(‘no’ => 2456, ‘label’ => ‘Salad’),
96 => array(‘no’ => 4889, ‘label’ => ‘Cream’)
);
$smarty->assign(‘items’, $items_list);
?>
模板中,url通过$myId输出$items
<ul>
{foreach from=$items key=myId item=i}
<li><a href=”item.php?id={$myId}”>{$i.no}: {$i.label}</li>
{/foreach}
</ul>
上例将输出:
<ul>
<li><a href=”item.php?id=23”>2456: Salad</li>
<li><a href=”item.php?id=96”>4889: Cream</li>
</ul>
例四. {foreach}使用嵌套的item和key
向Smarty设置一个数组,对于每个键名对应的每个循环值都包括键。
<?php
$smarty->assign(‘contacts’, array(
array(‘phone’ => ‘1’,
‘fax’ => ‘2’,
‘cell’ => ‘3’),
array(‘phone’ => ‘555-4444’,
‘fax’ => ‘555-3333’,
‘cell’ => ‘760-1234’)
));
?>
用于输出$contact的模板。
{foreach name=outer item=contact from=$contacts}
<hr />
{foreach key=key item=item from=$contact}
{$key}: {$item}<br />
{/foreach}
{/foreach}
上例将输出:
<hr />
phone: 1<br />
fax: 2<br />
cell: 3<br />
<hr />
phone: 555-4444<br />
fax: 555-3333<br />
cell: 760-1234<br />
例五. 使用{foreachelse}的数据库示例
一个数据库(例如PEAR或ADODB)的搜索脚本示例,
<?php
$search_condition = “where name like ‘$foo%’ “;
$sql = ‘select contact_id, name, nick from contacts ‘.$search_condition.’ order by name’;
$smarty->assign(‘results’, $db->getAssoc($sql) );
?>
借助{foreachelse}标记在没有结果时模板输出”None found”字样。
{foreach key=cid item=con from=$results}
<a href=”contact.php?contact_id={$cid}”>{$con.name} - {$con.nick}</a><br />
{foreachelse}
No items were found in the search
{/foreach}
.index包含当前数组索引,从零开始。
例六. index示例
{ 每五行输出一次头部区块 }
<table>
{foreach from=$items key=myId item=i name=foo}
{if $smarty.foreach.foo.index % 5 == 0}
<tr><th>Title</th></tr>
{/if}
<tr><td>{$i.label}</td></tr>
{/foreach}
</table>
iteration包含当前循环次数,与index不同,从1开始,每次循环增长1。
例七. iteration和index示例
{ this will output 0|1, 1|2, 2|3, … etc }
{ 该例将输出0|1, 1|2, 2|3, … 等等 }
{foreach from=$myArray item=i name=foo}
{$smarty.foreach.foo.index}|{$smarty.foreach.foo.iteration},
{/foreach}
first在当前{foreach}循环处于初始位置时值为TRUE。
例八. first属性示例
{ 对于第一个条目显示LATEST而不是id }
<table>
{foreach from=$items key=myId item=i name=foo}
<tr>
<td>{if $smarty.foreach.foo.first}LATEST{else}{$myId}{/if}</td>
<td>{$i.label}</td>
</tr>
{/foreach}
</table>
last在当前{foreach}循环处于最终位置是值为TRUE。
例九. last属性示例
{ 在列表结束时增加一个水平标记 })
{foreach from=$items key=part_id item=prod name=products}
<a href=”#{$part_id}”>{$prod}</a>{if $smarty.foreach.products.last}<hr>{else},{/if}
{foreachelse}
… content …
{/foreach}
show是{foreach}的参数. show是一个布尔值。如果值为FALSE,{foreach}将不被显示。如果有对应的{foreachelse},将被显示。
total包括{foreach}将循环的次数,既可以在{foreach}中使用,也可以在之后使用。
例十. total属性示例
{ 在结束位置显示行数 }
{foreach from=$items key=part_id item=prod name=foo}
{$prod.name><hr/>
{if $smarty.foreach.foo.last}
<div id=”total”>{$smarty.foreach.foo.total} items</div>
{/if}
{foreachelse}
… something else ecshop模板smarty foreach详解
{/foreach}
问题
{foreach from=$custid item=curr_id key=num}
{if num is odd}
干啥
{else}
干其他的
{/if}
{/foreach}
与以下的代码的区别,odd和enen的意义?
{foreach from=$custid item=curr_id key=num}
{if num%2==0}
干啥
{else}
干其他的
{/if}
{/foreach}

使用ecshop比较核心的其实就是变量的使用,因为这些就是数据的根本,想从数据库里获取数据并显示在界面就必须使用smarty来展示,下面是关于smarty的介绍和使用。
Smarty是一个php模板引擎,它分开了逻辑程序和外在的内容,提供了一种易于管理的方法.
Smarty要求web服务器运行php4.0.6和以上版本.
smarty安装需要smarty库文件。可以去官方网站http://smarty.php.net下载。
网上讲了很多安装的教程,但是我都没有成功,所以直接把整个目录名改为smarty直接复制到了网站所在的目录下,然后打开
http://网站路径/smarty/demo/index.php,显示正常,应该算是安装成功了。
基本语法
所有的smarty标签都被加上了定界符.在smarty里,所有定界符以外的内容都是静态的,当smarty遇到了模板标签,将尝试解释他们,然后再以恰当的方式输出.
默认情况下是 {和},但它们是可定制的.定制方法是:
$smarty->left_delimiter = ‘<!–{‘;
$smarty->right_delimiter = ‘}–>’;
1.注释
模板注释被号包围,例如 { this is a comment *}
smarty注释将不被输出.它是模板内在的注释.
2.变量
模板变量以$开头,可以包含数字,字母和下划线。
config_file变量是例外要用#变量名#的方法引用
3.函数
smarty标签输出一个变量或者调用某种函数.
在定界符内函数和其属性将被处理和输出.例如:
{funcname attr1=”val” attr2=”val”}.
funcname为函数的名称比如:include等,attr1,attr2为属性名,val为属性相应的值。
在模板里无论是内建函数还是自定义函数都有相同的语法.
内建函数将在smarty内部工作,例如 {if}, {section} 和{strip}.他们不能被修改.
自定义函数通过插件机制起作用,它们是附加函数,可以随意修改,自行添加.
例如 {html_options} and {html_select_date}
4.属性
静态数值不需要加引号,布尔值(真或假)也不需要引号,可以是true,on,yes或者false,off,no. 但是字符串例外.变量同样被用到了,它们也不能加引号.
5.在字符串中插入变量
只能识别数字,字母,下划线和[]的组合,如果为复杂的形式需要用`将变量隔起来。比如{func var="test $foo.bar test"} 中只能识别变量$foo,要识别$foo.bar,需要写成{func var="test$foo.bartest"}的格式。 6.一些保留字的显示方法 在模板中如果要将smarty的一些保留字作为语言的内容显示出来,比如显示分隔符,默认为{}的方法是: {ldelim},{rdelim} 或者{$smarty.ldelim},{$smarty.rdelim} 或者可以把{}放在{literal} .. {/literal} 中间输出。 smarty的保留变量 {$smarty}保留变量可以被用于访问一些特殊的模板变量. 以下是全部. 页面请求变量 以下是访问页面请求变量诸如get,post,cookies,server,enviroment和session变量的例子. 例如{$smarty.server.SERVER_NAME}取得服务器变量,{$smarty.env.PATH}取得系统环境变量path, {$smarty.request.username}取得get/post/cookies/server/env的复合变量。 {$smarty.now}变量用于访问当前时间戳. 可以用 date_format调节器格式化输出. 例如{$smarty.now|date_format:"%Y-%m-%d %H:%M:%S"} {$smarty.const} 你可以直接访问PHP常量. 例如{$smarty.const._MY_CONST_VAL} {$smarty.capture} 可以通过 {capture}..{/capture}结构 截取的输出可以使用{$smarty} 变量访问. {$smarty.config} {$smarty}变量 可以访问已经加载的config变量. 例如 {$smarty.config.foo}就可以表示 . {$smarty.section}, {$smarty.foreach} {$smarty} 变量可以访问'section'和'foreach'循环的属性. {$smarty.template} 显示当前被处理的模板的名字. {$smarty.version} 显示smarty模板的版本 {$smarty.ldelim} 显示左分隔符 {$smarty.rdelim} 显示右分隔符 变量调节器 变量调节器用于变量,自定义函数和字符串. 可以使用'|'符号和调节器名称应用调节器. 变量调节器由赋予的参数值决定其行为. 参数由':'符号分开. 如果你用变量调节器调节数组变量,结果是数组的每个值都被调节.如果你想要调节器调节整个数组,你必须在调节器名字前加上@符号. 例如: {$articleTitle|@count}(这将会在输出 $articleTitle 数组里的数目) capitalize 将变量里的所有单词首字大写. 参数值boolean型决定带数字的词是否首字大写。默认不大写 count_characters 计算变量值里的字符数.参数值boolean型决定是否计算空格数。默认不计算空格 cat 将cat里的参数值连接到给定的变量后面.默认为空。 count_paragraphs 计算变量里的段落数量 count_sentences 计算变量里句子的数量 count_words 计算变量里的词数 date_format 日期格式 第一个参数控制日期格式. 如果传给date_format的数据是空的,将使用第二个参数作为默认时间 %a - 星期几的简写 %A - 星期几的全写 %b - 月份的简写 %B - 月份的全写 %c - 日期时间06/12/05 11:15:10 %C - 世纪时间 %d - 一个月的第几号(从 01 到 31) %D - 同 %m/%d/%y %e - 一个月的第几号,号为单数则前面加一空格 (从 1 到 31) %g - 世纪 %G - 世纪 [0000,9999] %h - 同%b %H - 24小时形式的小时(从00到23) %I - 12小时形式的小时(从01到 12) %j - 一年中的第几天(从 001 到 366) %k - 24小时形式的小时,单数字前面加空格. (从 0 到 23) %l - 12小时形式的小时,单数字前面加空格.(range 1 to 12) %m - 月份 (range 01 to 12) %M - 分 %n - 换行符 %p - 显示早上还是下午am’ 或 `pm’
%r - a.m. 或 p.m.形式的时间
%R - 24小时形式的时间
%S - 秒
%t - tab符号
%T - 同%H:%M:%S
%u - 用 [1,7],表示星期几
%U - 计算是该年的第几个星期,从该年的第一个星期天开始计算
%V - 计算是该年的第几个星期, 从 01 到 53, 第一个星期必须至少有4天在这一年, 星期天作为这个星期的第一天

 

参考网站:

http://www.zxlive.net/detailed-template-smarty-foreach-ecshop.html

http://hi.baidu.com/wupinghou/item/3a6e4ff955f4c41984d2788b

http://blog.csdn.net/21aspnet/article/details/7590422

Ecshop 后台添加图片上传

发表于 2013-11-22 | 分类于 ECshop | | 阅读次数

1.后台模版文件添加:

<tr>
<td class=”label”>文章图标1</td>
<td>
<input type=”file” name=”article_icon_1” size=”35” />
{if $article.article_icon_1}
<a href=”article.php?act=show_image&img_url={$article.article_icon_1}” target=”_blank”><img src=”images/yes.gif” border=”0” /></a>
{else}
<img src=”images/no.gif” />
{/if}
</td>
</tr>

 

2.后台程序修改:

insert区域:

/ 文章图标处理 begin /
$article_icon_1 = ‘’;
$article_icon_2 = ‘’;
$save_path = ‘icon/‘.date(‘Ym’,time());
if ( ($_FILES[‘article_icon_1’][‘tmp_name’] != ‘’ && $_FILES[‘article_icon_1’][‘tmp_name’] != ‘none’) ){
$original_article_icon_1 = $image->upload_image($_FILES[‘article_icon_1’], $save_path); // 原始图片
if ($original_article_icon_1 === false)
{
sys_msg($image->error_msg(), 1, array(), false);
}
$article_icon_1 = $original_article_icon_1; // 商品图片
}
if ( ($_FILES[‘article_icon_2’][‘tmp_name’] != ‘’ && $_FILES[‘article_icon_2’][‘tmp_name’] != ‘none’) ){
$original_article_icon_2 = $image->upload_image($_FILES[‘article_icon_2’], $save_path); // 原始图片
if ($original_article_icon_2 === false)
{
sys_msg($image->error_msg(), 1, array(), false);
}
$article_icon_2 = $original_article_icon_2; // 商品图片
}

 

 

update区域:

 

delete区域:

 

 

最新解决Ecshop2.73与Jquery的冲突

发表于 2013-11-21 | 分类于 ECshop | | 阅读次数

早些年就有人在ecshop论坛反映,为何ecshop不兼容jquery?可是ecshop官网却一直未解决这个问题。由插件联盟网亲自测试并验证过的解决jquery冲突的方法如下:
1.复制一份 transport.js 改名为 transport.org.js 提供给后台使用

2.注释掉js/transport.js里的toJSON功能 行数为497-737行之间。其中将 legalParams = “JSON=” + $.toJSON(params); 替换为result = $.evalJSON(result);

3.修改js/index.js里的第44行,将其改为:var res = $.evalJSON(result);

4.修改js/改common.js,将第34行改为:Ajax.call(‘flow.php?step=add_to_cart’, ‘goods=’ + $.toJSON(goods), addToCartResponse, ‘POST’, ‘JSON’);然后将850行改为:Ajax.call(‘flow.php?step=add_package_to_cart’, ‘package_info=’ + $.toJSON(package_info), addPackageToCartResponse, ‘POST’, ‘JSON’);最后将1056行改为:Ajax.call(‘flow.php?step=add_to_cart’, ‘goods=’ + $.toJSON(goods), addToCartResponse, ‘POST’, ‘JSON’);

5.修改compare.js文件
第49行改为:this.data = $.evalJSON(cookieValue);第67行改为:var obj = $.evalJSON(cookieValue);第133行改为:document.setCookie(“compareItems”, $.toJSON(this.data));

6.修改js/global.js文件,其中将第16行改函数名 :function $e()。然后第114和126行都改为: var element = $e(element);

7.修改后台头部引入transport.js路径 admin/templates/pageheader.htm 第9行改为: {insert_scripts files=”../js/transport.org.js,common.js”}

8.修改themes/default/library/page_header.lbi文件在{insert_scripts files=’transport.js,utils.js’}上面加上如下代码
{insert_scripts files=’jquery.js,jquery.json.js’}

9.修改你的模板下的library/comment_list.lbi。将第188行 替换为:Ajax.call(‘comment.php’, ‘cmt=’ + $.toJSON(cmt), commentResponse, ‘POST’, ‘JSON’);

10.修改模板compare.dwt。将第20行 改为:var obj = $.evalJSON(document.getCookie(“compareItems”));然后第24行 替换为:document.setCookie(“compareItems”, $.toJSON(obj));

11.修改模板flow.dwt,将第138行 替换为:Ajax.call(‘flow.php?step=add_to_cart’, ‘goods=’ + $.toJSON(goods), collect_to_flow_response, ‘POST’, ‘JSON’);然后将第199行 改为:Ajax.call(‘flow.php?step=add_to_cart’, ‘goods=’ + $.toJSON(goods), fittings_to_flow_response, ‘POST’, ‘JSON’);

12.over

ECshop插件功能汇总

发表于 2013-11-21 | 分类于 ECshop | | 阅读次数

1. ecshop功能

2.

3. 参考网站
http://www.topchajian.com

ecshop原生态js实现登录和注册弹窗

发表于 2013-11-21 | 分类于 ECshop | | 阅读次数

 

详细教程如下:
1.打开你的模版下library/member_info.lbi 文件,在里面添加如下的代码。

<script type=”text/javascript”>
function login_module(){//点击登录时,调用的函数
var mengban=document.getElementById(“mengban”);
mengban.className=”mengban”;
var divs=document.getElementById(“login_module”);
divs.style.display=”block”;
}
function close_login(){//关闭弹窗时,调用的函数
var mengban=document.getElementById(“mengban”);
mengban.className=” “;
document.getElementById(“login_module”).style.display = “none”;
document.getElementById(“register_module”).style.display = “none”;
}
function register_module(){//注册时,调用的函数
var mengban=document.getElementById(“mengban”);
mengban.className=”mengban”;
var divs=document.getElementById(“register_module”);
divs.style.display=”block”;
}
</script>

大家看注释都明白,上面的函数分别定义了,点击登录,注册等链接时,所调用的函数。

 

2.打开你的模版下library/page_header.lbi 文件,在里面添一个div层,如下:

<div class=”” id=”mengban”></div>

 

3.打开你的模版下style.css,在最后面添加这样一行:

.mengban {position:absolute; top:0; background-color: rgba(227,227,227,.9); background: #E3E3E3; *background-color: #E3E3E3; filter: alpha(opacity=70); opacity:0.7; left:0; width:100%; height:9000px; z-index:10000;}

 

该行定义了div 层mengban的样式,即弹窗弹出后的背景色样式。
4.接下来定义一个div,用来展示弹出窗的内容,例如:用户登录信息。将该div放在page_footer.lbi的最下面。该div内容如下:(这里只贴出ecshop用户登录信息,注册的与之类似)。

<div id=”login_module” style=”display:none;height:300px;width:430px;margin:0 auto;border:7px solid #808080;position:absolute;
left:30%;top:130px;z-index:100001;background-color:#ffffff”>
<div style=”text-align:right;margin:4px”><a href=”javascript:void(0);” onclick=”close_login()”><img src=”images/closelabel.gif”/></a></div>
<div style=”margin-top:20px;margin-left:80px;height:30px; background:url(images/ur_bg.gif) no-repeat 0px 0px;”></div>
<form name=”formLogin” action=”user.php” method=”post” **ubmit=”return userLogin()”>
<table width=”100%” border=”0” align=”center”>
<tr>
<td width=”30%” align=”right”>email:</td>
<td width=”70%”><input name=”username” type=”text” size=”30” id=”username” /></td>
</tr>
<tr>
<td align=”right”>assword:</td>
<td><input name=”password” type=”password” size=”30” id=”password” /></td>
</tr>
<!– {if $enabled_captcha} 判断是否启用验证码 –>
<tr>
<th align=”right”>{$lang.comment_captcha}:</th>
<td>
<input type=”text” size=”8” name=”captcha” />
<img src=”captcha.php?is_login=1&{$rand}” onClick=”this.src=’captcha.php?is_login=1&’+Math.random()” alt=”captcha” style=”cursor:pointer;” />
</td>
</tr>
<!– {/if} –>
<tr>
<td colspan=”2” align=”center”>
<input type=”submit” name=”login” value=”Enter” />
<input type=”button” name=”register” value=”Submit” onclick=”window.location.href=’user.php?act=register’”/>
<input type=”hidden” name=”act” value=”act_login” />
<input type=”hidden” name=”back_act” value=”{$back_act}” /> </td>
</tr>
<tr>
<td colspan=”2” align=”center”>
<a href=”user.php?act=get_password”>{$lang.get_password_by_mail}</a></td>
</tr>
</table>
</form>
<center> <a href=”javascript:void(0);” onclick=”fbLogin()”><img src=””/></a></center>
</div>

 
总结下,上面代码整个流程如下:用户点击ecshop登录,接着调用login_module()函数,该函数立即弹窗一个弹窗,弹窗div的ID即为login_module,而弹窗的背景色即为我们所定义的mengban div 层。当点击弹窗关闭之后,立即调用close_login()函数,该函数作用:把登录弹窗隐藏掉,背景色恢复。

 

 

参考网站:

ecshop纯js实现会员注册与登录弹窗 http://www.topchajian.com/?p=420

 

jquery插件研究列表

发表于 2013-11-21 | 分类于 jQuery | | 阅读次数

1. Fancybox官网: http://fancybox.net

测试时间:

现实中的例子: 一个简单的实现: 参考万网会员对商品评论的登陆区域.

 

2. cloudzoom 图片相册放大插件

  • http://www.starplugins.com/cloudzoom
  • http://www.professorcloud.com/mainsite/index.htm
1…2526
Zack Hwang

Zack Hwang

Go

257 日志
42 分类
76 标签
RSS
Links
  • 小白博客
  • 我的书单
© 2018 Zack Hwang
由 Hexo 强力驱动
主题 - NexT.Muse
又拍云