magento如何根据sku显示产品销售量

magento根据sku显示产品销售量,这个功能最好放在产品页中显示
如果放在产品目录及列表页中显示,估计需要动用较多的数据库资源,没加速缓冲时谨慎使用。
以下是示范代码

 
 $sku = nl2br($_product->getSku());
                $_productCollection = Mage::getResourceModel('reports/product_collection')
             ->addOrderedQty()
             ->addAttributeToFilter('sku', $sku)
             ->setOrder('ordered_qty', 'desc')
             ->getFirstItem();
             $product = $_productCollection;
 
             echo 'Already Bought: '.(int)$product->ordered_qty; 



或者是以下方式,大同小异

function  getQuantityOrderedBySku($sku)
{
    try {
     $_product = Mage::getResourceModel('reports/product_collection')
       ->addOrderedQty()
       ->addAttributeToFilter('sku', $sku)
       ->setOrder('ordered_qty', 'desc')
       ->getFirstItem();
     if (!$_product) {
       throw new Exception('No product matches the given SKU');
     }
     return (int)$_product->getOrderedQty();
     }
     catch (Exception $e) {
     return 0;
     }
}

magento支持的paypal站内iframe支付模式

网站的站内支付,能大量提升支付的成功率,由于跳转支付存在的信任的问题,经常用户到第三方支付页后放弃支付。
其实paypal做为最大的第三方支付商,提供了各种支付手段,其中就有站内支付,由于各个国家信用程度的不同,支持站内支付方式也不一样,在magento后台选择paypal国家区域时,系统会自动进行支付方式过滤。
站内主要支付以下几个国家:
United States
United Kingdom
Australia
Canada
France
Italy
Spain
Hong Kong
Japan
paypa的支付方式基本上是叫Website Payments Pro ,各个国家名称可能会不一样。

其中United States和United Kingdom支持,在选择支付模式时直接输入信用卡资料,这种是最理想的,如下图。

其它国家支持支付在完成后通过iframe方式跳出支付信息,如下图:

其中各个国家的帐户显示的不同的语言,如香港帐户显示中文,日本帐户显示日文,这个文字由帐户所在国家决定。

大家可能通过在developer.paypal.com开 发环境中选择建立开发帐户,然后设置各个国家的测试帐户进行测试
Name on Card: Any Name
Type: VISA
Card #: 4485362859528762
CVV #: 528
在测试环境中,可用上述信用卡资料时行试支付,日期随便填,大于当前月份即可。

magento忘记密码取回从1.6后改变机制,旧版升级可能会有问题

magento忘记密码取回从1.6后改变机制,由1.6之前,在登录下选择忘记密码时,由邮件直接发送新生成的随机密码,
改成在邮件中一个重置密码的链接。
由于新旧版上的区别中,如果在模板中使用了customer.xml,由于定义上的问题,升级可能会有问题。
1.6版以前,密码的语法是: {{htmlescape var=$customer.password}}
1.6版以后,密码的链接语法是:
<a href="{{store url="customer/account/resetpassword/"_query_id=$customer.id _query_token=$customer.rp_token}}" style="color:#1E7EC8;">{{store url="customer/account/resetpassword/"_query_id=$customer.id _query_token=$customer.rp_token}}</a>
由于在customer.xml中缺少定义,会造成些链接无法访问
修在的作法是在customer.xml,增加如下:

<customer_account_resetpassword translate="label">
    <label>Reset a Password</label>
    <remove name="right"/>
    <remove name="left"/>

    <reference name="head">
        <action method="setTitle" translate="title" module="customer">
            <title>Reset a Password</title>
        </action>
    </reference>
    <reference name="root">
        <action method="setTemplate">
            <template>page/1column.phtml</template>
        </action>
        <action method="setHeaderTitle" translate="title" module="customer">
            <title>Reset a Password</title>
        </action>
    </reference>
    <reference name="content">
        <block type="customer/account_resetpassword" name="resetPassword" template="customer/form/resetforgottenpassword.phtml"/>
    </reference>
</customer_account_resetpassword>


即可恢复正常!

centos 6环境下安装mcrypt方法

centos 6环境下正常没有mcrypt的yum安装包
网站各种方法中,都是引用epel-release-6-5.noarch.rpm,这个文件现在是不存在的
经操作操作,以下方法可行:
rpm -ivh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-7.noarch.rpm
yum -y install mcrypt php-mcrypt mbstring php-mbstring
 service httpd restart

php -m 检查

(转)Mangento速度优化(加速)完整攻略,完整大全,总结的经验

1.开启Gzip,去掉网站根目录下.htaccess部分代码注释,修改成如下形式:(这个不是很理解)
第一部分:

############################################
## enable apache served files compression
## http://developer.yahoo.com/performance/rules.html#gzip
# Insert filter on all content
SetOutputFilter DEFLATE
# Insert filter on selected content types only
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript
# Netscape 4.x has some problems…
BrowserMatch ^Mozilla/4 gzip-only-text/html
# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip
# MSIE masquerades as Netscape, but it is fine
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# Don’t compress images
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
# Make sure proxies don’t deliver the wrong content
Header append Vary User-Agent env=!dont-vary
</IfModule>
<IfModule mod_ssl.c>
############################################

第二部分:

## enable resulting html compression
php_flag zlib.output_compression on

第三部分:
在php.ini中将zlib.output_compression = Off改为zlib.output_compression = On

2.在my.cnf中修改或添加如下代码:(修改Mysql服务器的配置好好利用服务器的内存)

key_buffer = 512M
max_allowed_packet = 64M
table_cache = 512
sort_buffer_size = 4m
read_buffer_size = 4m
read_rnd_buffer_size = 2m
myisam_sort_buffer_size = 64m
tmp_table_size = 128m
query_cache_size = 96m
query_cache_type = 1
thread_cache_size = 8
max_connections = 400
wait_timeout = 300

3.给文件指定有效期
网站根目录.htaccess最后添加:

<ifmodule mod_headers.c>
<filesmatch “\.(html|htm|txt)$”>
header set cache-control “max-age=3600″
</filesmatch>
<filesmatch “\.(css|js|swf)$”>
header set cache-control “max-age=86400″
</filesmatch>
<filesmatch “\.(ico|gif|png|flv|pdf)$”>
header set cache-control “max-age=86400″
</filesmatch>
<filesmatch “\.(jpeg|jpg)$”>
header set cache-control “max-age=86400″
</filesmatch>
</ifmodule>

4.关闭Etag
网站根目录.htaccess添加:

FileETag none

5.-bash: pecl: command not found的解决方法
-bash: pecl: command not found
出现这个问题是因为没有安装php的扩展开发导致的,建议将php以及apache的开发都安装上,使用如下的命令。
yum install php-devel php-pear httpd-devel

6.Centos6.0安装APC
安装: 命令行输入:
pecl install apc
如果报错-bash: pecl: command not found,参看上面一条,第5条
安装完毕后在/usr/lib/php/modules中出现apc.so
然后在/etc/php.ini中加入:
extension=apc.so
重启Apache
phpinfo出来APC的相关内容
在php.ini 中重新配置如下:

[apc]
extension = apc.so
apc.cache_by_default = On
apc.coredump_unmap = Off
apc.enable_cli = 0
apc.enabled = 1
apc.file_update_protection = 2
apc.filters = “”
apc.gc_ttl = 3600
apc.include_once_override = Off
apc.max_file_size = 5M
apc.mmap_file_mask = “”
apc.num_files_hint = 1000
apc.report_autofilter = Off
apc.shm_segments = 2
apc.shm_size = 512
apc.slam_defense = 0
apc.stat = On
apc.stat_ctime = Off
apc.ttl = 0
apc.user_entries_hint = 4096
apc.user_ttl = 0
apc.write_lock = On

安装好APC后,在Magento中app/etc/local.xml中加入下面的代码:

 <global>
………….
     <cache>
          <backend>apc</backend>
          <prefix>MAGE01_</prefix>
     </cache>
 </global>
…………………………….

7.将magento的缓存挂载到内存, 提高读取速度
将magento的cache和session文件夹mount到内存里, 提高读取cache和session的速度
mount -t tmpfs -o size=256M,mode=0777 tmpfs /你网站存放文件夹/var/cache/
mount -t tmpfs -o size=64M,mode=0777 tmpfs /你网站存放文件夹/var/session/
#注意修改为你的文件夹路径,为了能够重启后生效,请在/etc/fstab文件里加入
tmpfs  /你网站存放文件夹/var/cache/ tmpfs size=256,mode=0777 0 0
tmpfs /你网站存放文件夹/var/session/ tmpfs size=64,mode=0777 0 0

8.设置apache 开启 KeepAlive
KeepAlive = On
LoadModule deflate_module modules/mod_deflate.so #开启mod_deflate

来源:http://www.wujinlin.com/mangento%E9%80%9F%E5%BA%A6%E4%BC%98%E5%8C%96-%E5%8A%A0%E9%80%9F-%E5%AE%8C%E6%95%B4%E6%94%BB%E7%95%A5/

Magento:新模块的xml配置中设置title,keywords,description内容

当使用插件,或许会新建一个页,这时如何在方便的页中设置指定的title,keywords,description呢,一种当然是在代码中直接进行设置,但有一个更方便的方法,就是在xml中进行设置
代码如下:

<reference name="head">
    <action method="setTitle"><title>新模块标题</title></action>
    <action method="setKeywords"><title>your, module, keywords</title></action>
    <action method="setDescription"><title>Your Module Description</title></action>
</reference>

magento安装组件时出现Fatal error: Allowed memory size错误的解决

magento安装组件时出现类似如下的错误,
Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 84 bytes) in /public_html/app/code/core/Mage/Core/Model/Config.php on line 1254

这种情况基本上是php的配置有问题造成的,
php.ini修改memory_limit值即可以解决问题
php_value memory_limit 64M
php_value max_execution_time 18000
然后记得重启apache服务,即可生效.

国际E邮宝批发分销生产系统,支持多客户端统一验证处理

国际E邮宝是一个针对美国市场的小包,通过专门的API提交寄递数据进行审核、提取邮件号和打印标签,并支持用户自定义内部的订单号,这个系统模型,支持大批发客户,通过收集各个用户的邮件,进行统一的生产寄递处理。
整体流程如下:
1、具体用户通过客户端批量录入要处理的邮件数据,并编写自已内部订单号,系统会自动加上此客户的前缀标识,防止编号冲突,完成后确认寄递,同时更新状态,并打印内部订单号的条型码贴到包裹上。
2、用户确认寄递,后台处理代码会自动批量将用户提交的数据到api进行审核,如有错误,会自动显示在前台
3、后台处理管理人员,定期将已审核好的各用户的数据自动汇总提交后台代码进行申请正式的邮件号码,同时更新状态
4、后台处理管理人员,定期将已申请收到正式的邮件号码的订单汇总给后台代码进行批量标签的申请,代码处理后会自动将批量标签下载文件放到生产系统中。
5、生产人员将批量标签文件下载到指定的目录,形成准备接收的资源
6、等用户的邮件到来,扫描内部订单号的条型码,系统会自动找出对应的正式邮件号,并指定标签文件位置打开并打印。
通过上述6个步骤形成完整的国际E邮宝批发分销生产系统。
前台操作及后面界面如下:

此系统前端是用勤哲系统做的,后台处理用C#处理的。

magento网站开启ssl功能在https环境下浏览器提示安全问题

magento网站开启ssl功能,在https环境下浏览器提示安全问题
如混合脚本错误等
我的实际解决方法
1、对于在https环境下,检查一下引用本站的css,js,图片的形式是否是https,如不是请更改
2、大家在http环境中,可能会用到第三方流量跟踪代码,如cnzz,51la等,这些代码也会造成安全问题提示
解决了这两个部分的问题,我在magento使用ssl时就不再存在安全警告的现象了。
另外,magento在开户ssl时,只是在网站的与用户注册、登录、帐户管理及支付页面有自动使用https功能
如果想要让网站使用第三方跟踪代码,就要取消上述页面代码的植入。
示范如下:

<customer_account_login>
        <reference name="footer">
			<remove name="cnzz"/>
        </reference>
</customer_account_login>
<customer_account_create>
        <reference name="footer">
			<remove name="cnzz"/>
        </reference>
</customer_account_create>
<checkout_onepage_index>
        <reference name="footer">
			<remove name="cnzz"/>
        </reference>
</checkout_onepage_index>
<customer_account_logoutsuccess>
        <reference name="footer">
			<remove name="cnzz"/>
        </reference>
</customer_account_logoutsuccess>
<checkout_onepage_success>
        <reference name="footer">
			<remove name="cnzz"/>
        </reference>
</checkout_onepage_success>
<checkout_onepage_failure>
        <reference name="footer">
			<remove name="cnzz"/>
        </reference>
</checkout_onepage_failure>
<checkout_onepage_progress>
        <reference name="footer">
			<remove name="cnzz"/>
        </reference>
</checkout_onepage_progress>
<customer_account_index>
        <reference name="footer">
			<remove name="cnzz"/>
        </reference>
</customer_account_index>
<customer_account_edit>
        <reference name="footer">
			<remove name="cnzz"/>
        </reference>
</customer_account_edit>
<customer_address_index>
        <reference name="footer">
			<remove name="cnzz"/>
        </reference>
</customer_address_index>
<customer_address_form>
        <reference name="footer">
			<remove name="cnzz"/>
        </reference>
</customer_address_form>

<sales_order_history>
        <reference name="footer">
			<remove name="cnzz"/>
        </reference>
</sales_order_history>
<sales_billing_agreement_index>
        <reference name="footer">
			<remove name="cnzz"/>
        </reference>
</sales_billing_agreement_index>
<sales_recurring_profile_index>
        <reference name="footer">
			<remove name="cnzz"/>
        </reference>
</sales_recurring_profile_index>
<review_customer_index>
        <reference name="footer">
			<remove name="cnzz"/>
        </reference>
</review_customer_index>
<tag_customer_index>
        <reference name="footer">
			<remove name="cnzz"/>
        </reference>
</tag_customer_index>
<wishlist_index_index>
        <reference name="footer">
			<remove name="cnzz"/>
        </reference>
</wishlist_index_index>
<newsletter_manage_index>
        <reference name="footer">
			<remove name="cnzz"/>
        </reference>
</newsletter_manage_index>
<sales_order_view>
        <reference name="footer">
			<remove name="cnzz"/>
        </reference>
</sales_order_view>

可以在上述页面取消跟踪代码
或者在上述页面中专用定义用于https的跟踪代码,因为我们普通的跟踪代码在申请时,都是使用http.

如何在magento注册时开启地址资料填写功能

magento注册时,默认是只要填写简单的资料,即可,地址资料在支付或后期进行补充的,
但如果想在在magento注册时开启地址资料卦写功能,要如何操作呢,
其实在模板中是判断
$this->getShowAddressFields() 是否为真

两种办法:
1、xml设置

<customer_account_create>
        <reference name="customer_form_register">
            <action method="setShowAddressFields"><value>true</value></action>
        </reference>
</customer_account_create>

在customer.xml或local.xml中增加上述资料即可

2、代码设置
在提供注册的模板中,植入
<?php $this->setShowAddressFields(true); ?>
即可实现。