Magento 添加订单通知

Posted on November 09, 2011

Magento在用户产生一个订单后会给用户发送邮件通知(order notification),但是店家需要自行查看后台时才能看到新的订单,这样有点被动,网上也有订单通知的插件。但是有很简单的通知方法,就是同样的用邮件提醒卖家。设置方式如下:

1.进入System->Configuration 点击左侧的Sales emails

2.点开第一个order。在Send Order Email Copy To中设置你需要的邮箱,Send Order Email Copy Method中选择separate email。

3.大功告成。

Codeigniter send email with Gmail

Posted on November 08, 2011

Codeigniter版本:2.0.3

直接使用Codeigniter中的email类就能发送邮件,但是需要配置。

1.在config目录中新建文件email.php
里面写上邮件发送的配置信息:

  $config['protocol'] = 'smtp';
  $config['smtp_host'] = 'ssl://smtp.gmail.com';
  $config['smtp_user'] = 'email@gmail.com';
  $config['smtp_pass'] = 'password';
  $config['smtp_port'] = '465';
  $config['smtp_timeout'] = '5';

2.在发送邮件之前调用$this->load->library(‘email’);

3.使用emial类里的函数

  $this->email->from($email , $name);
  $this->email->to('xxx@qq.com');
  $this->email->message($message);
  $this->email->subject($subject);
           
  $this->email->send();

4.成功。

PS:主机要支持ssl才可以发gmail

Magento Invalid model for shipping method: msmultiflat

Posted on November 07, 2011

今天客户告诉我在后台的oder中点击invoice后系统报错了。基本上就是Invalid model for shipping method: msmultiflat 的问题。Google了一下发现只有几个网页提到了,貌似是装了某个shpping的插件后卸载了遇到的问题。解决方法是删除数据库里的一些数据,但是不知道有没有副作用,测试后这个功能是好了。代码如下

DELETE FROM `core_config_data` WHERE path LIKE '%carriers/msmultiflat%'

magento得到产品的attribute

Posted on November 03, 2011

今天做项目的时候遇到要在产品详细页显示产品的sku,color,Material。sku后台默认有,没有的属性可以在后台的Attributes->Manage Attributes添加,然后在Manage Attribute Sets里面拖到default中。在产品详细页得到这些属性很简单,首先使用以下代码得到产品:

<?php $_product = $this->getProduct();?>

在view.phtml中这段代码本来就有的,然后sku在后台是文本框,使用以下代码获得:

<?php echo $_product->getSku();?>

就是get加上属性名,首字母大写。

像color在后台是dropdown的如果用上面的代码返回的会是一个数字,要用下面的代码去获取:

<?php echo $_product->getAttributeText('color')?>

大功告成!

Magento如何定制不同的产品详细页

Posted on October 27, 2011

一般Magento的产品详细页都是一样的,都在template->catalog->product->view.phtml中修改。但是偶尔会遇到需求,需要几个特殊的产品显示不同的效果,比如显示不同的图片。实现的原理很简单,就是根据这几个产品的id或者sku去判断。

现在假设要在这张图片下面加一张针对这个产品特有的图片。

找到这段代码

<img src="<?php echo $this->getSkinUrl("images/yq/free_shipping.jpg") ?>" width="100%"/>

我们的代码就加在这个后面。
首先我们得到这个产品的id,在view.phtml中可以直接使用$_product->getId();获得。然后根据这个id来输出一张图片,

<?php
    $id = $_product->getId();
    if($id == 493):
?>
    <img src="<?php echo $this->getSkinUrl('images/yq/xxx.png');?>" >
<?php
    endif;
?>

不同的id就可以根据不同的判断去显示了。

Magento 更改contact页面url

Posted on October 18, 2011

Magento里面默认的contact页面的url是contacts,这个url有些奇怪,如果你想把它改为contact-us,以下方法就可以实现。

打开app > code > Core > Mage > Contacts > etc > config.xml
找到下面的代码

<module>Mage_Contacts</module>
<frontName>contacts</frontName>

只要把frontName标签里面的内容换成contact-us就ok了。

给Magento Contacts页面添加SEO信息

Posted on October 18, 2011

一般在CMS里面新建的页面都可以直接在后台填写该页面的SEO信息,如title,keywords等,但是如果你使用Magento自带的Contact 页面的话,默认的title是store name。而且不能直接在后台修改成你要的那样。但给contact页面加上自己的SEO信息也是很方便的。

首先找到app > design > frontend > default > yourtheme > layout > contacts.xml
在contacts_index_index tag 里面添加上以下代码

<reference name="head">
<action method="setTitle"><title>Contact Us - Your Store Name</title></action>
<action method="setDescription"><description>Welcome to our contact us page.</description>     </action>
<action method="setKeywords"><keywords>contact information</keywords></action>
</reference>

自己修改一下里面的信息就ok了!

转载请注明原文地址谢谢!

在Magento contact form中添加字段

Posted on October 14, 2011

Magento自带了contacts页面,但是里面只有几个固定的字段,有时候需要在里面加上新的字段,比如今天遇到的需求就是加上一个School/Organization字段。下面就是增加的方法。

首先要修改的文件是template/contacts/form.phtml
找到下面的一段代码:

    <div class="field">
    <label for="name" class="required"><em>*</em>
    <?php echo Mage::helper('contacts')->__('Name') ?>
    </label>
    <div class="input-box">
        <input name="name" id="name" title="<?php echo Mage::helper('contacts')->__('Name') ?>" value="<?php echo $this->htmlEscape($this->helper('contacts')->getUserName()) ?>" class="input-text required-entry" type="text" />
    </div>
    </div>

在后面加上我们新建的字段的代码

    <div class="field">
        <label for="school" class="required"><em>*</em><?php echo Mage::helper('contacts')->__('School/Organization') ?></label>
        <div class="input-box">
        <input name="school" id="school" title="<?php echo Mage::helper('contacts')->__('School/Organization') ?>" value="" class="input-text required-entry" type="text" />
    </div>
    </div>

下面的操作的后台完成。进入System->Transactional E-mails,点击Add New Template。
进入后Template选择Contact Form然后点击Load Template。Template Name随便我这里填了Contact Form2,Template Content中加一行School: {{var data.school}},点击保存这边就ok了。

现在要在System->Configuration左侧的Contacts中设置一下Email Sender,选择Contact Form2,大功告成!

Magento动态生成Meta信息

Posted on September 12, 2011

Magento在添加产品的时候是可以给每个产品添加title,description,key words的,但是要是你的产品很多很多,而且你想要一个比较利于SEO的Meta信息,手动添加的话就很悲剧了。今天遇到这么一个需求,需要根据产品名称,分类等动态生成一系列的Meta信息,google了一下,搞定了。

Magento写Meta的文件是,template->html->head.phtml里面就是里的信息了。首先判断一下是不是产品详细页:

<?php if (Mage::registry('current_product')) : ?>

然后就可以各种搞了:

<?php
echo '<title>'.Mage::registry('current_product')->getName().'- ***Shop</title>';
echo '<meta name="description" content="'.htmlspecialchars('Buy your "'.Mage::registry('current_product')->getName().'" at ***Shop. Shop our complete collection of *** including the "'.Mage::registry('current_product')->getName().'".

'
).'" />'
<meta name="keywords" content="<?php echo htmlspecialchars(Mage::registry('current_product')->getName()) ?>" />

Magento得到当前产品信息

Posted on September 12, 2011

在Magento详细页,总是会用到当前产品的各种信息,如name、price等,在view.phtml下是很容易得到的,根据magento默认的view代码,你就能搞定。但是要是在其他phtml中要用到产品的各项数据,这个办法就行不通了。但是Magento有便捷的方法去做到这一点。

Mage::registry能实现对数据库的操作。下面便是通过Mage::registry来得到相关的产品信息。
当然首先,你可以判断这是不是在产品详细页。

Mage::registry('current_category');
Mage::registry('current_product');
Mage::registry('cms_page')

下面是得到产品数据,一看就明白了:

$currentproduct = Mage::registry('current_product');
echo $currentproduct->getName();
echo $currentproduct->getId();
echo $currentproduct->getProductUrl();
echo $currentproduct->getSku();
echo $currentproduct->getAttributeText('attribute_name');
echo $this->helper('catalog/image')->init($currentproduct, 'small_image')->resize(100);

得到分类数据:

$currentcategory = Mage::registry('current_category');
echo $currentcategory->getName();
echo $currentcategory->getId();
echo $currentcategory->getImageUrl();
echo $currentcategory->getUrl();

得到CMS数据:

$cms_id = Mage::getSingleton('cms/page')->getIdentifier();
$cms_title = Mage::getSingleton('cms/page')->getTitle();
$cms_content = Mage::getSingleton('cms/page')->getContent();