为prestashop选择一个主域名
五 21
prestashop prestashop, 主域名 No Comments
wordpress都有这样的功能,可以选择一个主域名,比如我选择www.znjack.com,如果有人用znjack.com访问,就会自动301到www.znjack.com。
地址在这里:http://code.google.com/p/maindomin
prestashop 1.2.5测试通过。
下载并安装就可以了,不过别点那个homepage,因为还没有做好。
The software architect is the technical driving force behind the project, not a visionary or dreamer.
五 21
prestashop prestashop, 主域名 No Comments
wordpress都有这样的功能,可以选择一个主域名,比如我选择www.znjack.com,如果有人用znjack.com访问,就会自动301到www.znjack.com。
地址在这里:http://code.google.com/p/maindomin
prestashop 1.2.5测试通过。
下载并安装就可以了,不过别点那个homepage,因为还没有做好。
五 17
prestashop prestashop, shipping, 运费 No Comments
打开shipping选项卡,初始界面上有2个区域,上面的Handling是一些全局设置,下面的是运费。先别去管运费,因为通常运费是跟区域还有重量有关的。
Handling里面,第一个Handling charges是包装费用,会附加在每个订单里面。如果你想整体提高运费,可以设置这里,但是一般包装费用都是算在运费里面,所以一般应该都是0
第二第三个是免运费的设置Free shipping starts at,Free shipping starts at多少钱或者多重就免运费,可以根据你的情况设置。
最后一个Billing要设置为According to total weight,因为这样才可以按照订单的重量来算运费,一般的运费价格都是0-30kg多少钱,后面每0.5kg多少钱,所以这里按照重量来算运费方便后面对于各个快递商的设置。
子选项卡中,Carriers是物流服务商的设置,这里的设置很简单,直接添加服务商就可以了。
logo后面的文字,会显示在客户选择服务商的时候,所以可以填你想让顾客看到的文字。
下面是默认物流商,被选择的会在客户选择的时候默认选中。
比较重要的是States,Countries和Zones这3个选项卡,这里的工作量也会比较大。
Zones的默认设置是洲,但是实际上,各个物流商都有自己的区域划分,什么1区2区的,而这些区域往往不是按照洲来划分的。比如在ems中,港澳台就是一个区域,这时候你需要在zones里面新建一个组叫“港澳台”,然后在counties中把港澳台加在这个组里面。
counties中的国家和地区比较多,可以使用filter来查找以提高速度。
counties中基本上收集里全球所有的国家和地区,不要奢望你能用到所有的地区,基本上欧洲一个区,日本一个区,美国一个区,港澳台、东南亚、南美、大洋和非洲分开就差不多了。
对于重点的国家或地区,还要设置states,因为有的快递对于美国不同州的价格是不一样的,这时候可以用states的设置来区分这种省级别的设置。
Price ranges和Weight ranges对应shipping首页的According to total price和According to total weight,
0-30kg是一个组,如果你卖的东西有可能会高于30kg,要另外设置其他的组,这会是一个痛苦的过程。
现在可以返回shipping首页,进行运费设置了。
prestashop的运费设置有点复杂,而且功能并不是很完美。虽然小型商业来说够用了,但是如果要作为大型平台使用,prestashop任然有很长的路要走。
四 12
prestashop prestashop No Comments
我在国内做prestashop开发是从2008年初开始的,那时在国内根本找不到prestashop的资料,有几篇简介还是用google translate翻译的。那时候就是在google.com上面也找不到很多资料,prestashop才刚起步,官方的论坛只有英文和法文2种版本。
那时候做了一个对于prestashop二次开发的项目,一直想写点关于prestashop的资料,但是一直没有付诸实施,实在是太懒了。而且那时候的prestashop bug很多,后台添加商品这样基本的功能都有bug。
去年又开始关注prestashop,很欣喜的看到国内也有了对于这套系统的一些关注。我想应该是写点东西了,所以从去年9月到现在,大概写了一点东西吧。
刚才在看google analytics的时候,看到了几个关键字流量比较大,随手一搜,发现了一些有趣的东西。有一些网站转载了我的文章,但是没有注明出处。我不反对转载,因为我自己的这个网站同样是非盈利性质的,如果写点东西能帮助到更多的人,我很高兴。不过我觉得或许应该写明出处,尊重下我的劳动。以前我也转载过很多别人的文章,但是现在觉得这样不好。所以多多少少写点自己的东西。
我发现转载的代码分析的文章比较多,如果有时间,我会多写点这样的东西。
很感谢大家访问我的网站。如果某些内容对你有所帮助,我很高兴。
三 22
php, prestashop google sitemap, php, prestashop No Comments
我不知道官方在1.3.x修复了这个问题没有,不过至少1.2.5是一个使用比较多的版本,所以可能会有许多人不愿意升级。
google sitemap在prestashop中的模块叫做gsitemap,在这个版本中,存在生成其他语言地址的时候会增加2次域名的问题。
比如默认语言http://znjack.com/abc这个地址是正常的,但是我还增加了第二甚至更多种语言,这时候会生成类似http://znjack.com/lang-zh/znjack.com/abc这样的地址,明显是错误的。
打开modules/gsitemap/gsitemap.php,修改86、113、147、165行,把最后的$tmplink换成str_ireplace(‘/’.$_SERVER['HTTP_HOST'].’/', ”, $tmpLink)。
无论你启用了url friendly与否,这里都会出现这样的问题,而且问题是一样的。
三 17
php, prestashop prestashop No Comments
首页的模块是homefeatured,法国人经常乱命名各种模块,找一个模块要找很久。
1.2以前的版本是不支持这个功能的,我很惊奇的发现1.2.5的category类里面的getProduct增加了读取随机产品的选项,所以我们不需要自己写sql语句了。
这算是1.2版本一个不小的改动吧,prestashop从07年末开始被广泛使用以来,进步还是很大的。
把homefeatured.php的69行改成这样,就支持随机商品了。
$products = $category->getProducts(intval($params['cookie']->id_lang), 1, ($nb ? $nb : 10), NULL, NULL, false, true, true, ($nb ? $nb : 10));
三 05
php, prestashop prestashop 5 Comments
这种情况一般发生在网站整体迁移之后。国外的空间在域名生效前一般会给你一个临时的地址,像http://99.99.99.99/~example这样的地址,如果你是用这种地址安装的prestashop,在正式应用域名后,就会出现后台不能访问的现象。
解决办法也很简单,打开config/settings.inc.php,编辑__PS_BASE_URI__后面的值,如果是独立域名,像http://example.com/,写’/'就可以了;如果后面还有文件夹,像http://example.com/folder_name/,写’/folder_name/’就可以了。
十一 25
prestashop prestashop, 标题 1 Comment
标题属于核心内容,模板和模块均无法控制。
在classes/tools.php里面改493、505、471行
Configuration::get(‘PS_SHOP_NAME’)就是标题,把它放在后面就好了
$row['meta_title'] = $row['meta_title']. ‘ – ‘ . Configuration::get(‘PS_SHOP_NAME’);//就是这样
九 10
prestashop prestashop 1 Comment
最近有一些朋友来问我prestashop的结构问题,我在这里大概向大家讲一下。
像joomla这样的程序,大部分操作全是由index.php代理的,就是说大部分的url都是传值到这个页面里面,再由这个页面按照不同的路由组织方式进行分发,调用不同的控制器和功能。所以这里程序,基本都是全面向对象的开发。
程序使用面向对象的开发,代码简洁明了、适合团队合作开发,并且很适合制作这种插件式的结果,很方便扩展更多的功能。但是prestashop并不是全面向对象的,在第一级的访问,是面向过程的开发,然后再调用各种类来完成各种任务。
那么这样有什么好处呢,大家知道php是用解析器来解析的脚本语言,并且每次访问都会进行解析和执行,并不编译。这样每次的初始化就会有很大的负担(好处是绝对没有垃圾),尽管php的解析器性能非常优良,但是大量的对象依然会减慢执行的速度。所以有一些人认为php应该总是面向过程的。
比如我访问一个产品信息,访问的地址会是product.php?id_product=1,这样,只需要初始化与产品相关的各种模块就可以了,因为这样的访问方式,至少就减少了处理url路由再dispatch(分发)的时间。
以product.php举例,一个完整的执行过程如下
这样,产品详细页面就执行完了,数据库的读取(包括对应语言和货币)和验证等这样的大量代码,被包含在类中进行维护;输出控制和计算,是外部的面向过程来进行精确的计算,因为这些都是只针对产品信息的,所以修改等操作是不会对其他页面造成影响的。这样集成了2方面最大的优势,发挥出php这种既可以面向对象又可以面向过程的语言的真正实力。
九 10
九 08
prestashop prestashop No Comments
第一步先打开index.php,可以看到引入了3个文件:config/config.inc.php,header.php,footer.php。
最重要的就是config/config.inc.php了,打开看看。
@ini_set('display_errors', 'off'); @ini_set('upload_max_filesize', '100M'); @ini_set('default_charset', 'utf-8');
//这些部分修改了php.ini里的一些默认设置
header('Content-Type: text/html; charset=utf-8'); //强调是utf8的编码 function __autoload($className) { if (!class_exists($className, false)) require_once(dirname(__FILE__).'/../classes/'.$className.'.php'); }
//很神奇的自动载入函数,不知道的童鞋看看手册,其实很简单
if (!file_exists(dirname(__FILE__).'/settings.inc.php')) { $dir = ((is_dir($_SERVER['REQUEST_URI']) OR substr($_SERVER['REQUEST_URI'], -1) == '/') ? $_SERVER['REQUEST_URI'] : dirname($_SERVER['REQUEST_URI']).'/'); if(!file_exists(dirname(__FILE__).'/../install')) die('Error: \'install\' directory is missing'); Tools::redirect('install', $dir); } include(dirname(__FILE__).'/settings.inc.php');
//如果没有settings.inc.php,就开始安装进程
if (!isset($_SERVER['REQUEST_URI']) OR empty($_SERVER['REQUEST_URI'])) { $_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME']; if (isset($_SERVER['QUERY_STRING']) AND !empty($_SERVER['QUERY_STRING'])) $_SERVER['REQUEST_URI'] .= '?'.$_SERVER['QUERY_STRING']; }
//有些web服务器会没有这个REQUEST_URI,所以要处理一下
$currentDir = dirname(__FILE__);//这个目录,是config目录,因为__FILE__是当前文件
这下面就是定义常量的了。有些童鞋要问了,为什么不定义成变量呢?一是这些内容不需要改动,二是在smarty中,可以使用$smarty.const.xxx来直接调用常量。
Configuration::loadConfiguration();//prestashop把所有的配置都存在一个表里面 Language::loadLanguages();//载入语言 Tax::loadTaxZones();//税,国内就很少有这样的设置 $defaultCountry = new Country(intval(Configuration::get('PS_COUNTRY_DEFAULT')));//读取地区id,设置 $timezone = Tools::getTimezones(Configuration::get('PS_TIMEZONE'));//设定时区 if (function_exists('date_default_timezone_set')) date_default_timezone_set($timezone);//如果是php5,有date_default_timezone_set函数,则设定时区
近期评论