Một số đặc điểm khiến magento trở thành mã nguồn mở dùng để xây dựng hệ thống thương mại điện tử tốt nhất: Về mặt tính năng magento có 1 số chức năng nổi bật mà 1 số mã nguồn mở khác khô
Trang 1ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CNTT & TT
BÁO CÁO THỰC TẬP KỸ THUẬT
CÔNG TY TRUE PLUS
Đề tài: Xây dựng modun Simple Affiliate cho magento
Nguyễn Văn Bình 20101141 Người HD: A Tạ Hoàng Hải
Hà Nội 8/12/2013
Trang 22
1 Mục lục
2 Lời cám ơn 3
3 Giới thiệu về công ty 4
4 Quá trình thực tập 5
5 Cơ bản về magento 6
5.1 Magento là gì? 6
5.2 Cấu trúc một module magento 7
6 Các sản phẩm trong quá trình thực tập 9
6.1 Website bán hàng đơn giản 9
6.2 Modun Emailmarketing 10
7 Module Simple Affiliate 12
7.1 Xây dựng backend 13
7.1.1 Manage Accounts 13
7.1.2 Manage Transactions 15
7.2 Xây dựng front end 17
7.2.1 Thông tin acccount 17
7.2.2 Gửi email 18
7.2.3 Trang rút tiền 19
7.3 Xử lý các event 19
7.4 Cấu hình cho module 21
7.5 Demo giao diện và chức năng chính 22
8 BẢNG ĐÁNH GIÁ KẾT QUẢ THỰC TẬP DOANH NGHIỆP 27
Trang 33
2 Lời cám ơn
Qua đợt thực tập vừa rồi giúp em có thêm nhiều kiến thức mới bổ ích, trau dồi thêm kỹ năng làm việc nhóm cũng như được tiếp xúc và làm việc với môi trường làm việc thực tế, giúp em tích lũy thêm kinh nghiệm làm việc
Em xin chân thành cảm ơn các thầy cô trong viện Công nghệ thông tin & truyền thông đã tổ chức đợt thực tập bổ ích này
Em cũng xin gửi lời cảm ơn đến lãnh đạo công ty True Plus đã tạo điều kiện,giúp đỡ,tạo ra môi trường cho chúng em có cơ hội làm việc cũng như học tập trong điều kiện rất tốt
Cuối cùng em xin gửi lời cám ơn đến các anh hướng dẫn trực tiếp ở công ty,đã giúp đỡ,giải đáp thắc mắc, giúp em hoàn thành các công việc được công ty giao
Trang 44
3 Giới thiệu về công ty
True PLus do người Việt trẻ thành lập và điều hành nhưng hoạt động trong môi trường quốc tế Các thành viên chủ chốt của công ty đều còn rất trẻ nhưng đầy nhiệt huyết và khát khao chinh phục cái mới, mở rộng tầm nhìn và cần cù nỗ lực Đối tượng khách hàng chiến lược hiện nay hầu hết đều ở nước ngoài…
Những lĩnh vực sản phẩm mà True Plus tâm huyết phát triển, dồn hết đam mê và hoài bão bao gồm:
- Cung câp giải pháp cho các hệ thống thương mại điện tử
- Xây dựng hệ thống thương mại điện tử dựa trên Magento
- Viết các extension cho Magento- một hệ thống mã nguồn mở rất chuyên nghiệp dành cho E-Commerce
- Giaytot.vn website bán giầy trực tuyến lớn nhất Việt Nam
- Himita.com web bán hàng handmade
Magento: Magento là một hệ thống thương mại điện tử giàu tính năng được xây dựng trên nền tảng công nghệ Mã Nguồn Mỡ (OS) nhằm cung cấp cho thương mại trực tuyến một khả năng linh hoạt chưa từng có cùng với việc kiểm soát giao diện,nội dung, mở rộng chức năng cực kỳ thân thiện.Tương tác quản trị bằng hình ảnh trực giác và đa site là sức mạnh nổi bật của magento.Việc Tối ưu hóa công cụ tìm kiếm và quản trị thư mục uyển chuyển giúp cho magento có thể thích ứng với bất kỳ nhu cầu,hình thức và mức độ của kinh doanh trực tuyến từ công việc kinh doanh những mặt hàng đơn lẻ cho tới đa dạng hóa sản phẩm trên một site và nhiều site
Trang 55
4 Quá trình thực tập
19/6 – 6/6 Xây dựng website bán hàng đơn giản
7/6 – 14/6 Tìm hiểu và xây dựng frontend cho
modun Email marketing
Trang 6Magento dùng để phát triển xây dựng hệ thống website bán hàng với nhiều tính năng
ưu việt dựa trên mã nguồn mở (OS) Magento kế thừa các tính năng của những open source về shopping cart trước nó, như Zen cart- oscommerce, cùng với những tính năng vượt trội của nền tảng website 2.0 Vì vậy, theo các chuyên gia dự đoán Magento chính là tương lai của kỷ nguyên Thương Mại Điện Tử
Một số đặc điểm khiến magento trở thành mã nguồn mở dùng để xây dựng hệ thống thương mại điện tử tốt nhất:
Về mặt tính năng magento có 1 số chức năng nổi bật mà 1 số mã nguồn mở khác không có được đó là:
- Wishlists: Bạn có thể tạo ra danh sách sản phẩm yêu thích của mình và chia
sẻ với bạn bè
- Multi store/mall feature: bạn có thể tạo ra nhiều cửa hàng, kho hàng, địa điểm bán hàng khác nhau, cùng 1 sản phẩm nhưng có thể bán với giá khác nhau ở mỗi cửa hàng
- Email lists: Magento có 1 hệ thống danh sách các email, lọc, sắp xếp, giúp cho việc marketing dễ dàng với tính năng ưu việt
- Compare product: Tạo ra danh sách các sản phẩm dùng để so sánh
- Bundle/Grouped/Digital products & more: Hệ thống có thể tạo ra các gói, nhóm sản phẩm với thuộc tính cho từng loại
- Layered/ Filter naviagation: Giúp người dùng có thể lọc, tìm kiếm theo 1 hay nhiều thuộc tính của sản phẩm
- Advanced searching: Giúp tìm kiếm nâng cao, tìm kiếm tùy chỉnh
- Seo performance: Magento đã tích hợp SEO giúp tối ưu hóa với công cụ tìm kiếm
- CMS page: giúp người dùng tạo ra những trang laddingpage dễ dàng
Trang 77
5.2 Cấu trúc một module magento
Các module của Magento được xây dựng theo mô hình MVC với đầy
đủ các thành phần: Controller, Model và View Trong Magento, View bao gồm Block, layout và các file template
Controller: là thành phần tiếp nhận các request từ phía người dùng được gửi
đến Server thông qua browser Controller yêu cầu View (Layout trong Magento) render ra các đoạn mã HTML (bao gồm cả CSS và Javascript) Sau
đó trả về phía browser để hiển thị cho người dùng
View: trong Magento, View bao gồm các Layout (định nghĩa bằng các file
XML), Block (các class PHP), và Template (các file phtml) Layout có nhiệm
vụ render ra các đoạn mã HTML Layout có thể lấy dữ liệu từ database thông qua các Model Objects
Model: trong Magento, Model bao gồm 2 thành phần: Object Model và
Resource Model Trong đó, Object Model không làm việc trực tiếp với database Nó có nhiệm vụ lưu trữ dữ liệu tạm thời sau khi được lấy ra từ
Trang 88
database Ngoài ra, nó cung cấp các operator function như get(), set(), load(), delete() Resource Model là thành phần làm việc trực tiếp với database Sau khi truy vấn database, dữ liệu sẽ được chuyển vào Object Model để lưu trữ tạm thời
Cấu trúc thư mục
Các module của Magento được lưu trữ trong 3 thư mục:
app/code/core: đây là thư mục chứa các module core của Magento
app/code/local : thư mục này chứa các module mất phí do các provider phát triển
app/code/community : thư mục này chứa các module miễn phí được phát triển bởi cộng đồng Magento
Trang 99
6 Các sản phẩm trong quá trình thực tập
6.1 Website bán hàng đơn giản
Yêu cầu: Xây dựng website bán hàng đơn giản sử dụng Php & MySQL, có các chức năng cơ bản như đăng ký,đăng nhập, tìm kiếm sản phẩm, thêm,sửa,xóa sản phẩm, sắp xếp sản phẩm,liệt kê sản phẩm theo category…
Giao diện chính:
Trang 1010
6.2 Modun Emailmarketing
Mô tả: Module cho phép các Account tạo và quản lý các group,các email trong group của chính mình, và từ đó có thể gửi email đến cho bạn bè trong list contact của mình, tạo event giảm giá cho sản phẩm, tạo invoice trong checkout
Giao diện
Trang 1111
Trang 12hồng”) Đồng thời, khách hàng mua đơn hàng đó có thể được nhận 1 lượng
discount (giảm giá) Affiliates thực hiện việc giới thiệu khách hàng thông qua việc gửi email giới thiệu về store Các link này có chứa thông tin về affiliate (có thể là affiliate ID) Vì vậy khi khách hàng mua hàng sau khi đã click vào các link này, module sẽ kiểm tra được thông tin affilaite và tạo ra các transaction (giao dịch) Từ
đó các affiliates sẽ nhận được commission
Module Affiliate cung cấp các chức chính năng sau:
Quản lý affiliate account (thêm, sửa, xóa, upload ảnh)
Quản lý transaction (liệt kê, tìm kiếm)
Setting lượng commission/ disccount cho mỗi order mua hàng
Đăng ký làm affiliate
Cho phép affiliates kiểm tra danh sách các transaction, thống kê balance (số tiền trong tài khoản)
Thiết kế Cơ sở dữ liệu :
Bảng simpleaffiliate_account gồm các field sau:
account_id: Id banner (int(11) unsigned, khóa chính)
customer_id: id của customer account (int(11) unsigned, khóa phụ trỏ đến entity_id của bảng customer_entity)
firstname: (varchar 255)
lastname: (varchar 255)
email: (varchar 255)
balance: tổng số tiền hiện tại (decimal(12,4))
total_received: tổng số tiền commission nhận được (decimal(12,4))
joined: thời gian tạo account (datetime)
status: Disable/ Enable (tinyint(1))
Trang 1313
Bảng simpleaffiliate_transaction gồm các field sau:
transaction_id: Id banner (int(11) unsigned, khóa chính)
order_id: increment id của order (bảng sales_flat_order) (int(11) unsigned)
affiliate_id: id account trong bảng simpleaffiliate_account (int(11) unsigned)
order_total: tổng giá trị đơn hàng (decimal(12,4))
commission: số tiền affiliate nhận được (decimal(12,4))
store: ID của store mà transaction được tạo ra (smallint(6))
created: thời gian tạo (datetime)
status: Complete/ Pending (tinyint(1))
Các action có thể thực hiện trên trang listing
Add Affiliate account: Thêm affiliate account
Search: Tìm kiếm affiliate theo ID, Name, Email, Balance, Total Received, Status
Edit Account: Sửa thông tin account
Mass delete : Xóa thông tin nhiều account cùng lúc
Change Status: Thay đổi trạng thái nhiều account cùng lúc
Export dữ liệu account ra Csv/Xml file
Trang 1414 Giao diện account manager liệt kê danh sách account
Giao diện thêm Affiliate Account
Trang 1515
Giao diện sửa thông tin một Affiliate Account
7.1.2 Manage Transactions
Yêu cầu:
Thêm menu: Simple Affiliate/ Manage Transactions vào backend
Hiển thị danh sách các transaction (order mà các affiliates giới thiệu được), dữ liệu cần hiển thị
Các action có thể thực hiện trên trang listing
Search: Tìm kiếm affiliate theo ID, Order Id, Affiliate Email, Order Total, Commission, Store, Created, Status
Export dữ liệu transaction ra Csv/Xml file
Thực hiện:
Tạo Model/ Resource Model/ Collection để thao tác với bảng transaction
Tạo block để hiển thị danh sách account
Block/Adminhtml/Transaction.php
Block/Adminhtml/Transaction /Grid.php
Tạo form để thêm account và sửa account tại file
- Magestore\Affiliate\Block\Adminhtml\Transaction\Edit\Tab\form
Trang 1616
Giao diện transaction manager
Trang 1717
7.2 Xây dựng front end
7.2.1 Thông tin acccount
Tạo trang hiển thị thông tin cá nhân của affiliate tại frontend hiển thị:
Name: Tên (Firstname + Lastname)
Balance: Số tiền trong tài khoản
Total Received: tổng số tiền commission nhận được
Form edit thông tin: First Name, Last Name, Email Click nút Save sẽ lưu thông tin vào database thông qua model Simpleaffiliate/Account và
Customer/Customer Hiển thị thông báo lỗi/ thành công
Hàm xử lý lưu thông tin account tại AccountController :
public function saveAction() {
$firstname = '' $this->getRequest()->getPost('firstname'); $lastname = '' $this->getRequest()->getPost('lastname'); $email = '' $this->getRequest()->getPost('email');
$id = '' $this->getRequest()->getParam('id');
if ((isset($firstname) && ($firstname != null)) &&
(isset($email) && ($email != null)) && (isset($lastname) &&
($lastname != null)) && (isset($id) && ($id != null))) {
Trang 1818
7.2.2 Gửi email
Tạo form gửi email tại front end:
- Cho phép nhập nhiều email, ngăn cách nhau bởi dấu phẩy
- Nội dung email bất kì nhưng khi người nhận sẽ có link tới website để mua
hàng,khi mua hàng bằng đường link này,khách hàng sẽ được giảm giá và người gửi
sẽ được hưởng hoa hồng từ phiên mua hàng
Hàm xử lý gửi email tại IndexController:
public function sendemail(){
Trang 19->sendTransactional($templateId, $sender, $email_contact,
$name_contact, $vars, $storeId);
- Sẽ có 1 tab mới dưới tab Affiliate Transactions
- Nội dung trong form gồm có 1 text để nhập số tiền và nút ấn rút tiền
- Số tiền sẽ được chủ website gửi trực tiếp theo địa chỉ của affiliate hay qua thẻ dùng để mua sản phẩm
7.3 Xử lý các event
Để khi các khách hàng vào link gửi từ Affiliate mua hàng thì được giảm giá,chúng
ta sử dụng cơ chế phát event trong magento để giảm giá cho sản phẩm, để thực hiện điều này trong module em đã sử dụng các event sau:
- catalog_product_collection_load_after()
- catalog_product_get_final_price()
- sales_order_place_after()
- controller_action_postdispatch_customer_account_logout()
Để sử dụng các event này thì cần phải khi báo trong file config.xml Và viết
phương thức xử lý chúng ở file Magestore\Affiliate\Model\Observer.php
Một vài hàm xử lý event trong module:
Trang 2020
public function productLoadAfter($observer){
$product_collection = $observer['collection'];
if(isset($_COOKIE['affiliate_id'])&&($_COOKIE['affiliate_id'] == Mage::getModel('affiliate/account')->load($_COOKIE['affiliate_id'])-
} else {
$final_price = $price_pro - Mage::getStoreConfig('affiliate/general/discount')/100;
}
$item->setFinalPrice($final_price);
} }
}
Trang 2121
public function productGetFinalPrice($observer){
$item = $observer->getEvent()->getProduct();
if(isset($_COOKIE['affiliate_id'])&&($_COOKIE['affiliate_id'] == Mage::getModel('affiliate/account')->load($_COOKIE['affiliate_id'])-
7.4 Cấu hình cho module
Phần cấu hình cho module tại Backend (Simple Affiliate/setting)
Enable: bật/ tắt module, dropdown (Yes/No)
Commission type: dropdown (Fixed/ Percent)
Commission value: text
Discount type: dropdown (Fixed/ Percent)
Discount value: text
Để viết phần này cần phải sửa file cấu hình module system.xml
Giao diện cấu hình
Trang 2222
7.5 Demo giao diện và chức năng chính
Trang thông tin Affiliate Account,Affiliate có thể chỉnh sửa thông tin của mình tại trang này
Trang 2323
Affiliate gửi email cho khách hàng,hệ thống sẽ tự động gửi kèm link đến trang web
Affiliate có thể share link của website lên facebook
Hộp thoại hiện ra để có thể share lên facebook
Trang 2424 Khi khách hàng click vào link của Affiliate và mua hàng sẽ thấy được giảm giá
Trang 2525 Giao diện đặt hàng
Giao diện checkout
Trang 2626
Admin vào Oder trong back end tạo invoice cho đơn hàng
Sau khi Addmin tạo invoice cho đơn hàng thì tài khoản Affiliate sẽ được cộng tiền hoa hồng
Khách hàng có thể rút tiền của mình tại đây, sau đó admin sẽ chuyển tiền vào tài khoản của Affiliate
Trang 27Tên công ty tiếp nhận
(nếu có)
Phương pháp làm việc □
(nếu có)
Năng lực nắm bắt
(nếu có)
Năng lực quản lý □
(nếu có)
Năng lực tiếng Anh □
(nếu có)
Năng lực làm việc
(nếu có)
Tổng điểm
Điểm
Người đánh giá: