怎样为prestashop做翻译

2010年03月9日

现在prestashop已经有了中文翻译,感谢为此付出的各位同胞。
如果你新建了一个模块,或者在模板中添加了一个新的显示文字,这时候就需要做新的翻译了。
模块的翻译在modules每个模块单独的目录下面,模板的翻译在theme模板名称文件夹下lang文件夹下。
我们以themes\prestashop\lang的cn.php为例,如果你安装了中文语言,就会有这个文件。
打开文件,我们可以看到类似这样的
$_LANG['address_3908e1afa0ff22fbf112aff3c5ba55c1'] = ‘您的地址’;
这里数组的key中的address表示这是模板address页面的翻译,下划线后面的是一组md5字符,是对于模板中关键字的md5加密后的值。
比如你新建了一个关键字{l s=’Your addresses’},这里的值就是md5(‘Your addresses’) = 3908e1afa0ff22fbf112aff3c5ba55c1
希望这篇文章能对需要的人有所帮助。谢谢。

关于“web聊天”的一些问题

2010年03月9日

经常可以看到某些网站上留下的qq在线聊天这样的字样,点一下,就可以打开一个qq临时窗口,访问者就可以和网站的客服人员聊天了。但是有很多站长考虑到了访客没有安装qq或者没有开启qq这样的问题,所以就有了web在线聊天这样的业务的诞生。
我记得见过提供这样服务的网站,价格似乎还挺高,一个月几百快钱。他们给一些代码,只要把这些代码粘贴在你的网站上,就会有一个按钮。当访客按了按钮,就会弹出一个聊天窗口,这样就可以聊天了。
如果你不想掏这些钱,又不会或者不想自己制作一个这样的功能,只要使用gtalk就可以了。
首先,你得有一个google的帐号,可以随便申请的,很简单。
然后安装gtalk,虽然在gmail邮箱里面也可以聊天,但是谁也不会一整天开着一个浏览器窗口。
http://www.google.com/talk/service/badge/New 这里可以生成你的gtalk聊天的代码,粘贴代码到你的网页里就可以了。
现在你的访客就可以通过这个自动生成的按钮和你的gtalk聊天了。聊天的结果会被记录在gmail邮箱里面,这是世界上唯一一个可以记录IM聊天记录的地方。

prestashop后台不能登陆的解决办法

2010年03月5日

这种情况一般发生在网站整体迁移之后。国外的空间在域名生效前一般会给你一个临时的地址,像http://99.99.99.99/~example这样的地址,如果你是用这种地址安装的prestashop,在正式应用域名后,就会出现后台不能访问的现象。
解决办法也很简单,打开config/settings.inc.php,编辑__PS_BASE_URI__后面的值,如果是独立域名,像http://example.com/,写’/’就可以了;如果后面还有文件夹,像http://example.com/folder_name/,写’/folder_name/’就可以了。

phpMyAdmin多服务器选择

2009年12月10日

为使登陆框中多出Server选项。

如何更改prestashop标题中的网站名顺序?

2009年11月25日

标题属于核心内容,模板和模块均无法控制。
在classes/tools.php里面改493、505、471行
Configuration::get(‘PS_SHOP_NAME’)就是标题,把它放在后面就好了
$row['meta_title'] = $row['meta_title']. ‘ – ‘ . Configuration::get(‘PS_SHOP_NAME’);//就是这样

prestashop代码讲解之class/module.php,还有新模块示例

2009年09月14日

很多童鞋要开始自己尝试写一个新的module了,但是发现所有的module都是从这个module类上面扩展的,这里就给大家讲解一下class/module.php这个module的基类
这个类是一个基类,自己不能被初始化,必须被扩展

abstract class Module

ORM的理论,一个类就是一个当前module对象,有自己的id等参数,也有自己的install、uninstall等方法

public $id = NULL;

构造函数,有一个参数就是本module的名字,这个函数功能就是初始化,把一个名字变成一个真正的对象

public function __construct()

仅仅是数据库操作而已,童鞋在写新module的时候,可以在这里面调用添加数据库等语句完成个性的安装和卸载操作

public function install()
public function uninstall()

hook在哪里?也仅仅是数据库操作而已,这些一般不在自定义module中使用

public function registerHook($hook_name)
public function unregisterHook($hook_id)

表单上的小旗,为了多语言准备的

public function displayFlags

这是错误信息,就像要求你输入paypal或者google的帐号的那种,显示在modules首页的那个,这些一般不在自定义module中使用

public function unregisterExceptions($hook_id)
public function registerExceptions($id_hook, $excepts)
public function editExceptions($id_hook, $excepts)
public function displayError($error)//这个和displayConfirmation是格式化配置里面返回的信息的,比如设置成功之类的
public function displayConfirmation($string)
public function getExceptions($id_hook)

设计模式中的单例模式,返回一个单例

static public function getInstanceByName($moduleName)
static public function getInstanceById($id_module)

这是显示后台那个列表的

public static function getModulesOnDisk()
public static function getModulesDirOnDisk()
public static function getModulesInstalled($position = 0)

在前台经常可以看到这个,执行hook在某部份的所有module,其实就是从数据库里读取一下然后执行而已

public static function hookExec($hook_name, $hookArgs = array(), [...]

prestashop代码分析之init.php

2009年09月11日

inti.php这个文件,是由head.php每次引入的,先来分析一下head.php
第一行是一个p3p的声明,作用是cookie的跨域使用,比如你iframe一个页面,这个页面是其他网站,这时候iframe里面的页面的cookie是不能随着头部发送回去的,所以cookie也无效,但是加了这个就可以了。原因我会写文章单独讲解

header(’P3P: CP="IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA"’);

接下来就引入init.php文件了
接下来就是初始化hook在头部、左边和的所有module
‘HOOK_HEADER’ => Module::hookExec(‘header’),
‘HOOK_LEFT_COLUMN’ => Module::hookExec(‘leftColumn’),
‘HOOK_TOP’ => Module::hookExec(‘top’),
css和js文件
如果网店关闭就给503状态码
现在来分析init.php
确定模板是否存在,网店是否关闭

if (!is_dir(dirname(__FILE__).’/themes/’._THEME_NAME_))
die(Tools::displayError(’Current theme unavailable. Please check your theme directory name and permissions.’));
elseif (basename($_SERVER[’PHP_SELF’]) != ‘disabled.php’ AND !intval(Configuration::get(’PS_SHOP_ENABLE’)))
$maintenance = true;

缓存控制打开了,所有的输出都会被缓存,直到页面结束或者给与明确输出指令。prestashop没有用gzip压缩

ob_start();

页面信息,这些东西php没有准备好,总是要写一些东西来自己准备,虽然都不是很难,但是总是很烦

$pathinfo = pathinfo(__FILE__);
$page_name = basename($_SERVER[’PHP_SELF’], ‘.’.$pathinfo[’extension’]);
$page_name = (preg_match(’/^[0-9]/’, $page_name)) ? ‘page_’.$page_name : $page_name;//这个的值自己echo看看

设定语言

Tools::switchLanguage();
Tools::setCookieLanguage();

每一页都可能会有的登出

if (isset($_GET[’logout’]) OR ($cookie->logged AND Customer::isBanned(intval($cookie->id_customer))))
{
$cookie->logout();
Tools::redirect(isset($_SERVER[’HTTP_REFERER’]) ? $_SERVER[’HTTP_REFERER’] [...]

PHP SPL

2009年09月11日

PHP SPL笔记
目录
第一部分 简介
1. 什么是SPL?
2. 什么是Iterator?
第二部分 SPL Interfaces
3. Iterator界面
4. ArrayAccess界面
5. IteratorAggregate界面
6. RecursiveIterator界面
7. SeekableIterator界面
8. Countable界面
第三部分 SPL Classes
9. SPL的内置类
10. DirectoryIterator类
11. ArrayObject类
12. ArrayIterator类
13. RecursiveArrayIterator类和RecursiveIteratorIterator类
14. FilterIterator类
15. SimpleXMLIterator类
16. CachingIterator类
17. LimitIterator类
18. SplFileObject类
第一部 简介
1. 什么是SPL?
SPL是Standard PHP Library(PHP标准库)的缩写。
根据官方定义,它是“a collection of interfaces and classes that are meant to solve standard problems”。但是,目前在使用中,SPL更多地被看作是一种使object(物体)模仿array(数组)行为的interfaces和 classes。
2. 什么是Iterator?
SPL的核心概念就是Iterator。这指的是一种Design Pattern,根据《Design Patterns》一书的定义,Iterator的作用是“provide an object which traverses some aggregate structure, abstracting away assumptions [...]

prestashop的插件式结构综述

2009年09月10日

 最近有一些朋友来问我prestashop的结构问题,我在这里大概向大家讲一下。
像joomla这样的程序,大部分操作全是由index.php代理的,就是说大部分的url都是传值到这个页面里面,再由这个页面按照不同的路由组织方式进行分发,调用不同的控制器和功能。所以这里程序,基本都是全面向对象的开发。
程序使用面向对象的开发,代码简洁明了、适合团队合作开发,并且很适合制作这种插件式的结果,很方便扩展更多的功能。但是prestashop并不是全面向对象的,在第一级的访问,是面向过程的开发,然后再调用各种类来完成各种任务。
那么这样有什么好处呢,大家知道php是用解析器来解析的脚本语言,并且每次访问都会进行解析和执行,并不编译。这样每次的初始化就会有很大的负担(好处是绝对没有垃圾),尽管php的解析器性能非常优良,但是大量的对象依然会减慢执行的速度。所以有一些人认为php应该总是面向过程的。
比如我访问一个产品信息,访问的地址会是product.php?id_product=1,这样,只需要初始化与产品相关的各种模块就可以了,因为这样的访问方式,至少就减少了处理url路由再dispatch(分发)的时间。
以product.php举例,一个完整的执行过程如下

config.inc.php初始化各种常量
init.php初始化各种设置
定义了几个只用在该页面的方法
要载入的css和js,这样就可以精确的控制流量,增强用户体验
初始化头部,每个页面的头部都是一样的
调用product类来读取产品信息
处理各种产品信息,包括图片、价格、当前分类下的其他产品等
从数据库中读取hook在这个页面的插件,执行
所有的结果assign在smarty里面,输出
初始化脚部,和头部一样

这样,产品详细页面就执行完了,数据库的读取(包括对应语言和货币)和验证等这样的大量代码,被包含在类中进行维护;输出控制和计算,是外部的面向过程来进行精确的计算,因为这些都是只针对产品信息的,所以修改等操作是不会对其他页面造成影响的。这样集成了2方面最大的优势,发挥出php这种既可以面向对象又可以面向过程的语言的真正实力。

prestashop 免费模板下载

2009年09月10日

prestashop 免费模板下载
black and white simplicity简单的黑白
black-diamond黑钻石
creation-shop-theme创意模板
orange-boutique橘色
theme informatica
ultimate-webshop