1. Trang chủ
  2. » Công Nghệ Thông Tin

PHP 5 e-commerce Development- P16 docx

5 155 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Cấu trúc

  • Preface

  • PHP e-commerce

    • e-commerce: who, what, where, why?

      • An overview of e-commerce

        • eBay

        • Amazon

        • Brick 'N Mortar stores

        • Service-based companies

      • Why use e-commerce?

    • Rolling out your own framework

      • Why PHP?

      • Why a framework?

      • When to use an existing package?

        • Existing products

      • A look at e-commerce sites

        • iStockphoto

        • WooThemes

        • eBay

        • Amazon

        • Play.com

    • e-commerce: what does it need to do/have?

      • Products

      • Checkout process

      • General

    • Our framework: what is it going to do?

    • Our framework: why is it going to do it?

      • Juniper Theatricals

    • Summary

  • Planning our Framework

    • Designing a killer framework

      • Patterns

        • Model-View-Controller (MVC)

        • Registry

        • Singleton

      • Structure

    • Building a killer framework

      • Pattern implementation

        • MVC

        • Registry

        • Singleton

        • Registry objects

      • Routing requests

        • An alternative: with a router

        • Processing the incoming URL within our registry object

        • index.php

        • .htaccess file

        • Configuration file

    • What about e-commerce?

      • An e-commerce registry?

    • Summary

  • Products and Categories

    • What we need

      • Product information

      • Category information

      • Structuring content within our framework

        • Pages

        • Content

        • Versioning

    • Building products, categories, and content functionality into our framework

      • Database

        • Content

        • Content types

        • Content versions

        • Products

        • Categories

      • Pages within our framework

        • Model

        • View

        • Controller

      • Products

        • Model

        • View

        • Controller

      • Categories

        • Model

        • View

        • Controller

      • Some thoughts

      • Product and category images

    • Routing products and categories

      • Featured products

    • Embedding products

    • Summary

  • Product Variations and User Uploads

    • Giving users choice

      • Simple variants

        • How could this work?

      • Combinations of variants

        • How will this work?

        • High-level overview

        • Database structure

        • Template switching

        • Templates

        • A look back at simple variants

    • Giving users control

      • How to customize a product?

        • Uploads

        • Custom text

      • Maintaining uploads

        • Security considerations

      • Database changes

        • Extending our products table

      • Template switching

    • Shopping basket preparation

      • Stock control

      • Product variations

      • Product customizations

      • Basket templates

      • Product subtotals

    • Summary

  • Enhancing the User Experience

    • Juniper Theatricals

    • The importance of user experience

    • Search

      • Finding products

        • Search box

        • Controlling searches with the products controller

        • Search results

        • Improving searches

      • Filtering products

        • Product attributes

        • Filter options

        • Processing filter requests

        • Displaying filtered products

        • Improving product filtering

    • Providing wish lists

      • Creating the structure

      • Saving wishes

        • Wish-list controller

        • Add to wish list

      • Viewing a wish list

        • Controller changes

        • Wish-list view

      • Purchases

        • Gift purchases

        • Self purchases

      • Improving the wish list

    • Recommendations

      • Related products

        • Controlling the related products

        • Viewing the related products

      • E-mail recommendations

    • Help! It's out of stock!

      • Detecting stock levels

        • Changing our controller

      • Out of stock: a new template bit

      • Tell me when it is back in stock please!

        • Stock alerts database table

        • More controller changes

      • It is back!

    • Giving power to customers

      • Product ratings

        • Saving a rating

        • Viewing ratings

      • Product reviews

        • Processing reviews/comments

        • Displaying reviews/comments

      • Combining the two?

    • Any other experience improvements to consider?

    • Summary

  • The Shopping Basket

    • Shopping baskets

    • Our basket

      • Per-page basket

    • Considerations for our shopping basket

    • Creating a basket

      • When to build a user's basket

      • Basket database

    • Basket contents

      • Viewing the basket

        • checkBasket method

        • The controller

      • Adding products

        • An addProduct method

        • The controller

        • A note on etiquette

      • Adding customizable products

        • Changing our basket database

        • Viewing the basket

        • Changing the model

        • The controller

      • Adding product variants

        • A new database table

        • Model changes

        • The controller

      • Editing quantities

    • From visitor to a user

      • The transferToUser function

      • Performing the transfer

    • Cleaning the basket

      • Expired contents

    • Displaying the basket on every page

      • Functionality

    • Summary

  • The Checkout and Order Process

    • Some examples

      • Amazon

        • Limitations

        • Useful features

      • eBay

        • Interesting points of note

      • Play.com

        • Interesting points of note

    • The process

      • The basket

        • Voucher codes

        • Shipping method

        • An overview

      • Authentication

        • Why should we authenticate the user at this stage?

        • Login

        • Register

        • Do nothing

      • Delivery address

      • Payment method

        • Offline payment method

        • Off-site payment method

        • On-site payment method

      • Confirmation

      • Payment details

      • Payment made

      • Order processed

      • Other points of note

    • Summary

  • Shipping and Tax

    • Shipping

      • Shipping methods

      • Shipping costs

        • Product-based shipping costs

        • Weight-based shipping costs

        • To think about: location-based shipping costs

      • Shipping rules

        • Free shipping

        • Capped shipping

      • Tracking

      • Integrating shipping costs into the basket

        • Shipping methods and a default

        • Calculating shipping costs based on products

        • Calculating shipping costs based on product weights

        • Considering shipping rules, and adjusting prices accordingly

    • Tax

      • Separately calculating tax values

      • To think about: location-based tax costs

    • A look at our basket now

    • Summary

  • Discounts, Vouchers, and Referrals

    • Discount codes

      • Discount codes data

        • Discount codes database

      • Discount codes functionality

        • Reducing the number of codes available

    • Purchasable voucher codes

      • Existing functionality

        • Discount codes

        • Product variations

      • Required additional functionality

    • Referrals

      • Database changes

        • New table: referrers

        • Changes

      • Functionality

        • Checkout process consideration

    • Summary

  • Checkout

    • Order process review

    • Authentication

    • Delivery address

    • Payment method

    • Confirmation

      • Storing orders in the database

        • Orders table

        • Order statuses

        • Order items

        • Order item attributes

        • Payment methods

    • Summary

  • Taking Payment for Orders

    • Taking payment

      • Our payment system

    • Taking payment online

      • PayPal

        • The payment button

        • Processing payment to update the order

      • Direct with a credit/debit card

        • Storing card details

        • Not storing card details

      • Other payment gateways

      • Payment gateway tips

    • Taking payment offline

    • Summary

  • User Account Features

    • User account area

    • Changing details

      • Changing password

      • Changing default delivery address

    • Viewing orders

      • Listing orders

        • Query

      • Viewing an order

        • Order model

      • Cancelling an order

        • Order model additions

        • Controller code

    • Expansion

    • Summary

  • Administration

    • Dashboard

    • Products and categories

      • Products

        • Creating a product

        • Editing a product

      • Categories

        • Creating a category

        • Editing a category

        • Deleting a category

    • Orders and customers

      • Orders

        • Updating an order

        • Dispatch note

        • Refunds

      • Customers area

        • Listing customers

        • A customer's orders

    • Miscellaneous

      • Shipping

        • Creating a shipping method

      • Voucher codes

        • Creating a voucher code

    • Summary

  • Deploying, Security, and Maintenance

    • Deploying

      • Hosting accounts and domain names

        • Hosting providers

        • Domain name registrars

      • Manual deployment

        • Setting up the database

        • Uploading our store

        • Settings

      • Automated deployment

    • Security

      • Server security

        • Software

        • Securing the site with a firewall

      • Passwords

      • SSL/TLS

      • CAPTCHA

    • Maintenance

      • Backing up and restoring

        • Using cPanel

        • Using the command line (SSH)

    • Summary

  • Marketing, SEO, and Customer Retention

    • Marketing sites and stores powered by our framework (and other sites for that matter)

      • Online advertising

        • Buying advertising space

        • Pay-per-click advertisements

        • Advertisement networks provided by search engines

        • Newsletter advertising

        • A word of warning: search engine penalization

      • Newsletters

      • Marketing materials

      • Affiliate marketing

      • Social marketing

        • Viral marketing

        • Twitter

        • RSS with FeedBurner

    • Search engine optimization

      • On-site SEO

        • Headings

        • Links

        • Up-to-date content

        • Meta tags

        • Sitemap and webmaster tools

      • Off-site SEO

    • Customer retention

      • Newsletters

      • Social features

      • Coupons and voucher codes

    • Summary

  • Interacting with Web Services

    • Google products

      • Adding the feed to the Google merchant center

      • Setting an update schedule

      • Creating the feed

        • Product feed controller

        • Other useful link

      • Alternative—Google Base Data API

      • Others

    • Google Analytics

      • Signing up

      • Tracking e-commerce

        • Add transaction

        • Add item

        • Track transaction

      • Further reading

    • Other services

      • Amazon

      • eBay.com

    • More to come

    • Summary

  • Downloadable Products

    • Extending products

    • Extending the payment and administration areas

      • Access database

      • Providing access

      • Rescinding access

    • Centralized download area

    • What else is needed?

    • Summary

  • Cookbook

    • Authentication reminders

      • Help! I forgot my password!

        • Generate the reset key, update the user record, and e-mail the customer

        • Reset the password

      • Help! I forgot my username!

    • E-mailing customers

    • Integrating Campaign Monitor

    • Integrating reCAPTCHA

      • On the registration page

      • When processing the registration

    • Tweeting about happy customers

      • Other uses

    • Summary

  • Index

Nội dung

Planning our Framework [ 58 ] .htaccess file We have our index.php le set up to process the incoming request and send it to the relevant controller. However, URLs which have the format of index. php?page=some/page/on/our/site or index.php?page=products/view/some- product are not as attractive or memorable as those with just some/page/on/our/ site or products/view/some-product. With the Apache module mod_rewrite we can get our site to rewrite the more friendly URLs into the less friendly ones for our framework to understand. ErrorDocument 404 /index.php DirectoryIndex index.php <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?page=$1 [L,QSA] </IfModule> This .htaccess le instructs the web server (Apache) to use index.php as the index le within a directory. It also instructs Apache that if the mod_rewrite module is enabled, the requests that are not for valid les or directories should be rewritten to the main index.php le. However, anything that occurs after the directory containing the .htaccess le, should be appended to the page $_GET variable. For example, oursite.com/pagea would be rewritten to oursite.com/index. php?page=pagea. Configuration file We also need a conguration le, to store our database connection settings. Most other settings will be stored in the database. However, the actual connection details cannot be stored within it, as we need to know the details before we connect to the database; otherwise, we cannot connect. <?php $configs = array(); $configs['db_host_ecomframe'] = 'localhost'; $configs['db_user_ecomframe'] = 'root'; $configs['db_pass_ecomframe'] = ''; $configs['db_name_ecomframe'] = 'phpecommerce'; ?> This material is copyright and is licensed for the sole use by jackie tracey on 23rd February 2010 953 Quincy Drive, , Brick, , 08724 Chapter 2 [ 59 ] The simplest way to store the settings is within an array in a conguration le, with the keys of the array relating to what the value is used for. The sufx of ecomframe is used to allow us to store multiple database connection details within the same array. What about e-commerce? Looking at frameworks is important; however, we haven't really covered anything specic to e-commerce yet. So where does e-commerce t into this? Most of our e-commerce functionality ts into this by adding models and controllers that perform the relevant e-commerce tasks we require, such as managing products, handling the order processing and checkout process, and so on. An e-commerce registry? One thing that we could consider is an e-commerce registry. We could perhaps have our shopping basket as a registry, containing a collection of products. This would make it simple for each page to access the shopping basket and return the number of items contained within. For the framework we are going to create in this book, we are not going to use this method. However, it may be something you wish to think about with your own framework. After saying that, you may be wondering how we are going to provide access to the basket to all areas of the framework. The answer is with some call backs. At certain key points of execution within the framework, certain functions will be called. Inside this, we provide code to interact with the shopping basket. Exactly where these callback functions are, and when they are called, is a discussion for another chapter. This material is copyright and is licensed for the sole use by jackie tracey on 23rd February 2010 953 Quincy Drive, , Brick, , 08724 Planning our Framework [ 60 ] Summary In this chapter, we created a sound start to our framework which will be extended with e-commerce functionality during the rest of this book. We specically covered: Various software architectural and design patterns, looking into best practices for implementing certain aspects of our framework Developing a directory structure for our framework Creating a registry to store core objects How we will use the MVC pattern to structure and operate our framework Routing page requests around our framework and an overview of routers Creating our single point of contact for accessing the framework, as well as an htaccess and conguration le Next we move onto storing, displaying, and managing products and their categories, some true e-commerce functionality! • • • • • • This material is copyright and is licensed for the sole use by jackie tracey on 23rd February 2010 953 Quincy Drive, , Brick, , 08724 Products and Categories With a basic structure to our framework in place, we can now start to think about the e-commerce aspects to it. In this chapter you will learn: How to structure content within the framework, including: Page structure Product structure Categories structure How to access and display products and categories with models and controllers How to design views to interact with our framework As we discussed in Chapter 1, PHP e-commerce, Juniper Theatricals requires a framework to power their website as well as the e-commerce features, so page management is a must. What we need Before we start building products and categories into our framework, let's think about what information we need, both to display to our customers and for the use of the store administrator. To provide our customers with sufcient product information, we need to inform them of the name of the product, a detailed description of the product, and the price of the product. We may also wish to show them a photograph of the product and a number of additional images related to the product. Additionally, we may wish to make them aware of the weight and the cost of shipping, number of items we have in stock, as well as any categories the product is contained within. From an administration perspective, we need a reference number, or ID number, and we may need a Stock Keeping Unit reference. We may also require a search engine friendly name, which is used within the URL to view the product. • ° ° ° • • This material is copyright and is licensed for the sole use by jackie tracey on 23rd February 2010 953 Quincy Drive, , Brick, , 08724 Products and Categories [ 62 ] Product information Taking into account what we have just discussed, at a minimum we need to store the following information: Data Description ID A reference number for the framework to reference the product Name The name of the product Search Engine Friendly Name A search engine friendly name for the product to be displayed in URLs. Description A detailed description of the product SKU A stock keeping reference (usually supplier's reference, or for integration with stock keeping systems) Price The cost of the product Stock The number of these products which are currently in stock Primary image An image of the product Additional images A number of additional images which are displayed as thumbnails and then toggled into the place of the main page Shipping costs and information will be discussed in Chapter 8, Shipping and Taxes, so we don't need to take those aspects into consideration just yet. Category information We need to be able to contain our products within categories, so what information would we need to collect for our categories? Data Description ID A reference number for the framework to reference the category Name The name of the category Description A detailed description of the category Search Engine Friendly Name A search engine friendly name for the category, to be used for display within URLs. This material is copyright and is licensed for the sole use by jackie tracey on 23rd February 2010 953 Quincy Drive, , Brick, , 08724 . array. What about e-commerce? Looking at frameworks is important; however, we haven't really covered anything specic to e-commerce yet. So where does e-commerce t into this? Most of our e-commerce. /index .php DirectoryIndex index .php <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index .php? page=$1. ''; $configs['db_name_ecomframe'] = 'phpecommerce'; ?> This material is copyright and is licensed for the sole use by jackie tracey on 23rd February 2010 953 Quincy Drive, , Brick, , 08724 Chapter 2 [ 59 ] The simplest

Ngày đăng: 07/07/2014, 10:20

TỪ KHÓA LIÊN QUAN

w