VIẾT MODULE CHO MAGENTO
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ - BÁO CÁO THỰC TẬP NGÀNH: CÔNG NGHỆ THÔNG TIN ĐỀ TÀI: VIẾT MODULE CHO MAGENTO Cán hướng dẫn: Giáp Tùng Lân Giảng viên đánh giá: ThS Trần Mai Vũ Sinh viên: Vũ Trung Triệu Mã sinh viên:11020349 Lớp: K56-CB Hà Nội, 9/2014 Mục Lục 1.Lời cám ơn Giới thiệu công ty Quá trình thực tập Cơ magento 4.1 Magento gì? 4.2 Cấu trúc module magento Module Emailmarketing 5.1 Xây dựng front end 5.1.1 Hiển thị danh sách email khách hàng 5.1.2 Trang thị thông tin group 12 5.1.3.Gửi email khách hàng 13 5.2 Xây dựng backend 15 5.2.1 Contact 15 5.2.2 Email group 16 5.2.3 Cấu hình cho module 18 Kết đạt được, hướng phát triển 20 6.1 Kỹ & kiến thức thu thập 20 6.2 Hướng phát triển 20 7.Tài liệu tham khảo 20 Lời cám ơn Qua đợt thực tập vừa giúp em có thêm nhiều kiến thức bổ ích, trau dồi thêm kỹ làm việc nhóm tiếp xúc 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 thầy cô phòng thí nghiệm KTLab khoa Công nghệ thông tin tổ chức đợt thực tập bổ ích Em xin gửi lời cảm ơn tới giảng viên hướng dẫn – thầy Trần Mai Vũ Thầy bảo giúp em hoàn thành tốt báo cáo thực tập Em xin gửi lời cảm ơn đến lãnh đạo công ty TruePlus tạo điều kiện,giúp đỡ,tạo môi trường cho chúng em có hội làm việc học tập điều kiện tốt Cuối em xin gửi lời cám ơn đến anh,chị hướng dẫn: Giáp Tùng Lân, Nguyễn Cẩm Ly công ty,đã giúp đỡ,giải đáp thắc mắc, giúp em hoàn thành công việc công ty giao Giới thiệu công ty Công ty Cổ phần Trueplus Việt Nam thành lập tháng năm 2009 với tên sáng lập Công ty Cổ phần Giải pháp trực tuyến ( OSS) sau đổi tên thành Trueplus doanh nghiệp tiên phong lĩnh vực sản xuất xuất phần mềm, cung cấp giải pháp thương mại điện tử hoàn hảo cho business giới Hiện tại, Trueplus tập trung vào xây dựng hệ thống thương mại điện tử phát triển gói tính hữu ích cho Magento – tảng mã nguồn mở chuyên nghiệp dành cho E-Commerce Magestore – sản phẩm then chốt TruePlus hệ thống module template cho Magento, đơn vị hàng đầu giới cung cấp chương trình mở rộng cho tảng thương mại điện tử Magento (thuật ngữ Magento Extensions) Bằng việc tập trung vào phát triển sản phẩm có tính sáng tạo cao cung cấp dịch vụ khách hàng tuyệt hảo, đến Magestore có 20,000 khách hàng toàn giới phấn đấu đạt vị trí số lĩnh vực phát triển module cho Magento năm 2014 Quá trình thực tập 17/06 – 13/7: Khóa học PHP 14/07- 26/8 : Khóa học Magento làm test Magento : Bài tập magento 21/7- 18/8 - Hoàn thành tập xây dựng module magento Emailmarketing Cơ magento 4.1 Magento gì? Magento mã nguồn mở, đời ngày 31 tháng năm 2008, sáng lập Varien Phát triển dựa tảng từ Zend Framework Magento dùng để phát triển xây dựng hệ thống website bán hàng với nhiều tính ưu việt dựa mã nguồn mở (OS) Magento kế thừa tính open source shopping cart trước nó, Zen cart- oscommerce, với tính vượt trội tảng website 2.0 Vì vậy, theo chuyên gia dự đoán Magento tương lai 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 magento có số chức bật mà số mã nguồn mở khác là: - Wishlists: Bạn tạo danh sách sản phẩm yêu thích chia sẻ với bạn bè - Multi store/mall feature: bạn tạo nhiều cửa hàng, kho hàng, địa điểm bán hàng khác nhau, sản phẩm bán với giá khác cửa hàng - Email lists: Magento có hệ thống danh sách email, lọc, xếp, giúp cho việc marketing dễ dàng với tính ưu việt - Compare product: Tạo danh sách sản phẩm dùng để so sánh - Bundle/Grouped/Digital products & more: Hệ thống tạo gói, nhóm sản phẩm với thuộc tính cho loại - Layered/ Filter naviagation: Giúp người dùng lọc, tìm kiếm theo hay nhiều thuộc tính 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 trang laddingpage dễ dàng - Tích hợp google checkout - Bộ nhớ cache … - Cấu trúc thư mục rõ ràng: Magento phát triển dựa tảng Zend Framework với mô hình MVC, giúp bạn quản lý phát triển hệ thống dễ dàng, có update phiên 4.2 Cấu trúc module magento Các module Magento xây dựng theo mô hình MVC với đầy đủ thành phần: Controller, Model View Trong Magento, View bao gồm Block, layout file template Controller: thành phần tiếp nhận request từ phía người dùng gửi đến Server thông qua browser Controller yêu cầu View (Layout Magento) render đoạn mã HTML (bao gồm CSS Javascript) Sau trả phía browser để hiển thị cho người dùng View: Magento, View bao gồm Layout (định nghĩa file XML), Block (các class PHP), Template (các file phtml) Layout có nhiệm vụ render đoạn mã HTML Layout lấy liệu từ database thông qua Model Objects Model: Magento, Model bao gồm thành phần: Object Model Resource Model Trong đó, Object Model không làm việc trực tiếp với database Nó có nhiệm vụ ưu trữ liệu tạm thời sau lấy từ database Ngoài ra, cung cấp operator function get(), set(), load(), delete() Resource Model thành phần làm việc trực tiếp với database Sau truy vấn database, liệu chuyển vào Object Model để lưu trữ tạm thời Cấu trúc thư mục Các module Magento lưu trữ thư mục: app/code/core: thư mục chứa module core Magento app/code/local : thư mục chứa module phí provider phát triển app/code/community : thư mục chứa module miễn phí phát triển cộng đồng Magento Module Emailmarketing Module cho phép Account tạo quản lý group,các email group mình, từ gửi email đến cho bạn bè list contact mình, tạo event giảm giá cho sản phẩm, tạo invoice checkout 5.1 Xây dựng front end 5.1.1 Hiển thị danh sách email khách hàng Tạo trang hiển thị thông tin khách hàng bao gồm: - Name: họ tên khách hàng - Email: Địa email khách hàng - Group: Tên nhóm khách hàng - Edit: Cho phép sửa đổi thông tin khách hàng group,name,email - ADD NEW CONTACT: Thêm khách hàng vào contact Thiết kế Cơ sở liệu : $installer = $this; $installer->startSetup(); $installer->run(" DROP TABLE IF EXISTS {$this>getTable('emailmarketing/email')}; CREATE TABLE `{$installer->getTable('emailmarketing/email')}` ( `contact_id` int(11) NOT NULL auto_increment, `name` varchar(50) NOT NULL default '', `email` varchar(100) NOT NULL default '', PRIMARY KEY(`contact_id`) )ENGINE=InnoDB DEFAULT CHARSET=utf8; "); $installer->endSetup(); - Thông tin acccount Tạo trang hiển thị thông tin cá nhân Emailmarketing frontend hiển thị: - Name: Tên (Name + Email + Group) - Form edit thông tin: Name, Email , Group Click nút Save lưu thông tin vào database thông qua model Emailmarketing /Account Customer/Customer Hiển thị thông báo lỗi/ thành công - Hàm xử lý lưu thông tin khách hàng add new contact edit: public function saveAction() { $id = $this->getRequest()->getParam('id'); $session = Mage::getSingleton('core/session'); $email = Mage::getModel('emailmarketing/email'); $data = $this->getRequest()->getPost(); if($id) { $email->load($id); } $email->setData('name',$data['name']); $email->setData('email',$data['email']); $email->setData('group_id',Mage::helper('emailmarketing')>getGroupIdByGroupName($data['group_name'])); $email->setData('customer_id',Mage::getSingleton('customer/session')>getCustomer()->getId()); try{ $email->save(); $id? $session->addSuccess('Edit email successfully') : 12 $session->addSuccess('Add email successfully'); }catch(Exception $e) { $session->addError($e->getMessage()); } $this->_redirect('emailmarketing'); } - Giao diện trang Contact: 10 - Giao diện Edit Delete email: - Giao diện Add New Contact: 11 5.1.2 Trang thị thông tin group Tạo trang hiển thị danh sách nhóm khách hàng bao gồm: - Name: Tên nhóm khách hàng - Description: Mô tả nhóm khách hàng - Edit: Cho phép sửa đổi thông tin nhóm name,description - ADD NEW GROUP: Thêm nhóm khách hàng Giao diện hiển thị list group 12 Giao diện add new group Giao diện edit group 5.1.3.Gửi email khách hàng Cho phép gửi email theo nhóm khách hàng Hàm gửi email “sendemail” controllers public function sendAction() { 13 $data = $this->getRequest()->getPost(); // get group ID if($this->getRequest()->getParam('id')) $group_id = $this->getRequest()->getParam('id'); else $group_id = Mage::helper('emailmarketing')>getGroupIdByGroupName($data['group_name']); //get Message if(($data['message'])) Mage::getSingleton('core/session')->setMessage($data['message']); //get customer_id $customer_id = Mage::getSingleton('customer/session')->getCustomer()>getId(); //get sent_time $sent_time = date('Y-m-d H:i:s'); $model = Mage::getModel('emailmarketing/email')->getCollection() ->addFieldToFilter('group_id',$group_id); foreach($model->getData() as $item){ $sendTo[] = array('email'=>$item['email'],'name'=>$item['name']); } try { Mage::getModel('emailmarketing/sendemail')>sendEmail($sendTo,Mage::getSingleton('core/session')->getMessage()); Mage::getSingleton('core/session')->addSuccess('Sent Email successfully'); /* * save email info into database * $email_id pass into saveEmailInfo() either null or set by request * $emailId 's value get from saveEmailInfo() 's return */ if($this->getRequest()->getParam('email')) $email_id = $this->getRequest()->getParam('email'); $emailId = Mage::getModel('emailmarketing/sendemail')>saveEmailInfo($email_id,$data['message'],$customer_id,$group_id,$sent _time); }catch(Exception $e) { Mage::getSingleton('core/session')->addError($e->getMessage()); } $this->_redirect('*/*/view',array('id'=>$group_id,'email'=>$emailId)); } 14 - Giao diện gửi email: 5.2 Xây dựng backend 5.2.1 Contact Thêm menu Contact Group vào backend: -Thực hiển thị contact action trang Contact: + Xây dựng block hiển thị danh sách email thư mục \app\code\local\Magestore\Emailmarketing\Block\Adminhtml\contact.php \app\code\local\Magestore\Emailmarketing\Block\Adminhtml\contact\Grid.php + Tạo form add contact edit contact thư muc 15 \app\code\local\Magestore\Emailmarketing\Block\Adminhtml\Emailmarketing\ Edit\Tab\form.php + Các action trang contact ADD NEW: Thêm email vào contact Delete: Xóa email contact Edit: Sửa thông tin email Giao diện Contact hiển thị danh sách email khách hàng: Giao diện thêm,sửa thông tin email khách hàng: 5.2.2 Email group -Thực hiển thị danh sách nhóm action trang Group: + Xây dựng block hiển thị danh sách nhóm thư mục 16 \app\code\local\Magestore\Emailmarketing\Block\Adminhtml\Emailgroup.php \app\code\local\Magestor\Emailmarketing\Block\Adminhtml\Emailgroup\Grid.p hp + Tạo form add group edit group thư muc \app\code\local\Magestore\Emailmarketing\Block\Adminhtml\Emailgroup\Edit\ Tab\form.php + Các action trang Group ADD NEW: Thêm nhóm vào danh sách group Delete: Xóa nhóm cũ danh sách Edit: Sửa thông tin nhóm Giao diện hiển thị danh sách email group: 17 Giao diện thêm sửa thông tin nhóm: 5.2.3 Cấu hình cho module Phần cấu hình cho module Backend (System\Configuration\Email Marketing) 18 Giao diện cấu hình: 19 Kết đạt được, hướng phát triển 6.1 Kỹ & kiến thức thu thập - Kiến thức + Hiểu biết thêm mã nguồn mở magento cho việc phát triển trang thương mại điện tử + Trau dồi ,rèn luyện thêm ngôn ngữ PHP,HTML Mysql - Kỹ Năng + Rèn luyện kĩ giao tiếp,làm việc độc lập,làm việc nhóm + Biết cách xếp thời gian,công việc hợp lý để hoàn thành tốt công việc 6.2 Hướng phát triển Tìm hiểu củng cố vững kiến thức magento.Xây dựng hoàn chỉnh Module emailmarketing với nhiều chức như: thêm event giảm giá,khuyến thêm sản phẩm Làm trang thương mại điện tử hoàn chỉnh với đầy đủ tính magento 7.Tài liệu tham khảo - How-to-pass-magento-certification-exam-in-30-days(.pdf file) http://blog.magestore.com/ http://basetut.com/category/lap-trinh-web/magento-tutorial/ http://training.trueplus.vn/ 20 Ý kiến đánh giá: ……………………………………….………………………… ……………………………………….………………………… ……………………………………….………………………… ……………………………………….………………………… ……………………………………….………………………… ……………………………………….………………………… ……………………………………….………………………… ……………………………………….………………………… Hà Nội, ngày tháng năm 20 Người hướng dẫn (Ký, ghi rõ họ tên & dấu công ty) 21 Ý kiến đánh giá: ……………………………………….………………………… ……………………………………….………………………… ……………………………………….………………………… ……………………………………….………………………… ……………………………………….………………………… ……………………………………….………………………… ……………………………………….………………………… ……………………………………….………………………… ……………………………………….………………………… ……………………………………….………………………… Điểm số: …… Điểm chữ: ………… Hà Nội, ngày tháng năm 20 Giảng viên đánh giá (Ký, ghi rõ họ tên) 22 [...]... danh sách email group: 17 Giao diện thêm mới và sửa thông tin nhóm: 5.2.3 Cấu hình cho module Phần cấu hình cho module tại Backend (System\Configuration\Email Marketing) 18 Giao diện cấu hình: 19 6 Kết quả đạt được, hướng phát triển 6.1 Kỹ năng & kiến thức thu thập được - Kiến thức + Hiểu biết thêm về mã nguồn mở magento cho việc phát triển trang thương mại điện tử + Trau dồi ,rèn luyện thêm về ngôn ngữ... chắc kiến thức về magento. Xây dựng hoàn chỉnh Module emailmarketing với nhiều chức năng hơn như: thêm các event giảm giá,khuyến mãi thêm sản phẩm Làm một trang thương mại điện tử hoàn chỉnh với đầy đủ các tính năng bằng magento 7.Tài liệu tham khảo - How-to-pass -magento- certification-exam-in-30-days(.pdf file) http://blog.magestore.com/ http://basetut.com/category/lap-trinh-web /magento- tutorial/ http://training.trueplus.vn/... nhóm khách hàng bao gồm: - Name: Tên nhóm khách hàng - Description: Mô tả về nhóm khách hàng - Edit: Cho phép sửa đổi thông tin nhóm như name,description - ADD NEW GROUP: Thêm nhóm khách hàng mới Giao diện hiển thị list group 12 Giao diện add new group Giao diện edit group 5.1.3.Gửi email khách hàng Cho phép gửi email theo nhóm khách hàng Hàm gửi email “sendemail” trong controllers public function