IT Knowledge Base

~ Without sacrifice, there can be no victory ~

發佈日期:

分類:

,

如何在PrestaShop中.將訂閱(subscribe)及取消訂閱(unsubscribe)通訊(newsletter)功能‧與MailChimp結合

PrestaShop本身已有自己的訂閱及取消訂閱通訊的模組。而經此模組訂閱之後,用戶可在其個人資料選項中作更改。考慮到實際使用情況下,決定只針對模組作更改,不容許在個人資料中的選項作更改。

01. 編輯PrestaShop安裝目錄下,位於/modules/blocknewsletter/blocknewsletter.php檔案,找尋function hookLeftColumn($params)。假設PrestaShop安裝在/var/www位置。

sudo gedit /var/www/modules/blocknewsletter/blocknewsletter.php
將:
$smarty->assign('this_path', $this->_path);
return $this->display(__FILE__, 'blocknewsletter.tpl');
更改為:
$smarty->assign('this_path', $this->_path);
if ($this->valid == 'Subscription successful') {
include 'mcapi_listSubscribe.php';
Tools::redirect('index.php?reg=subscribe');
}
if ($this->valid == 'Unsubscription successful') {
include 'mcapi_listUnsubscribe.php';
Tools::redirect('index.php?reg=unsubscribe');
}
return $this->display(__FILE__, 'blocknewsletter.tpl');

02. 在PrestaShop安裝目錄下,位於/modules/blocknewsletter資料夾位置,建立新檔案mcapi_listSubscribe.php,並接上以下內容。

sudo gedit /var/www/modules/blocknewsletter/mcapi_listSubscribe.php
<?php
require_once 'inc/MCAPI.class.php';
require_once 'inc/config.inc.php'; //contains apikey
$api = new MCAPI($apikey);
$retval = $api->listSubscribe($listId, $_POST['email'], '');
?>

03. 在PrestaShop安裝目錄下,位於/modules/blocknewsletter資料夾位置,建立新檔案mcapi_listUnsubscribe.php,並接上以下內容。

sudo gedit /var/www/modules/blocknewsletter/mcapi_listUnsubscribe.php
<?php
require_once 'inc/MCAPI.class.php';
require_once 'inc/config.inc.php'; //contains apikey
$api = new MCAPI($apikey);
$retval = $api->listUnsubscribe($listId,$_POST['email']);
?>

04. 在MailChimp網站,下載API程式(mailchimp-api-class.zip)

05. 將API程式中inc資料夾,抄到PrestaShop目錄下/modules/blocknewsletter資料夾位置。

sudo cp -R inc /var/www/modules/blocknewsletter

06. 編輯/modules/blocknewsletter/inc資料夾下的config.inc檔案。根據您MailChimp設定資料,設定$apikey及$listId。

sudo gedit /var/www/modules/blocknewsletter/inc/config.inc

07. 再次編輯PrestaShop安裝目錄下,位於/modules/blocknewsletter/blocknewsletter.php檔案。

sudo gedit /var/www/modules/blocknewsletter/blocknewsletter.php
將:
<?php
更改為:
<?php
if ($_GET["reg"] == 'subscribe') {
echo '<table width="100%"><tr><td bgcolor="#197a19" align="center"><font color="#ffffff" size="2">';
echo 'Subscribe successful.';
echo '</font></td></tr></table>';
}
if ($_GET["reg"] == 'unsubscribe') {
echo '<table width="100%"><tr><td bgcolor="#197a19" align="center"><font color="#ffffff" size="2">';
echo 'Unsubscribe successful.';
echo '</font></td></tr></table>';
}

08. 編輯PrestaShop安裝目錄下,位於themes/prestashop/authentication.tpl檔案。

將:
<p class="checkbox" >
<input type="checkbox" name="newsletter" id="newsletter" value="1" {if isset($smarty.post.newsletter) AND $smarty.post.newsletter == 1} checked="checked"{/if} />
<label for="newsletter">{l s='Sign up for our newsletter'}</label>
</p>
更改為:
<!--
<p class="checkbox" >
<input type="checkbox" name="newsletter" id="newsletter" value="1" {if isset($smarty.post.newsletter) AND $smarty.post.newsletter == 1} checked="checked"{/if} />
<label for="newsletter">{l s='Sign up for our newsletter'}</label>
</p>
-->

09. 編輯PrestaShop安裝目錄下,位於themes/prestashop/identity.tpl檔案。

將:
<p class="checkbox">
<input type="checkbox" id="newsletter" name="newsletter" value="1" {if $smarty.post.newsletter == 1} checked="checked"{/if} />
<label for="newsletter">{l s='Sign up for our newsletter'}</label>
</p>
更改為:
<!--
<p class="checkbox">
<input type="checkbox" id="newsletter" name="newsletter" value="1" {if $smarty.post.newsletter == 1} checked="checked"{/if} />
<label for="newsletter">{l s='Sign up for our newsletter'}</label>
</p>
-->

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *