查看單個文章
舊 2004-06-21, 02:14 PM   #13 (permalink)
mic64
註冊會員
 
mic64 的頭像
榮譽勳章
UID - 582
在線等級: 級別:16 | 在線時長:330小時 | 升級還需:27小時級別:16 | 在線時長:330小時 | 升級還需:27小時級別:16 | 在線時長:330小時 | 升級還需:27小時級別:16 | 在線時長:330小時 | 升級還需:27小時級別:16 | 在線時長:330小時 | 升級還需:27小時級別:16 | 在線時長:330小時 | 升級還需:27小時
註冊日期: 2002-12-06
VIP期限: 2007-04
住址: MIB總部
文章: 412
精華: 0
現金: 499 金幣
資產: 499 金幣
預設

更改網站目錄


一般來說,你會在測試的伺服器上建立網站。當您欲開始運作網站時,您需要將網站移到不同的位置。這個位置可以是不同的伺服器,或相同伺服器上的不同目錄。同樣地,你可能會想要在它所屬的網域中執行該網站。

因為上述這些原因,你必須將網站移到不同的目錄。要完成這項工作,你必須執行下列工作:

為網站建立一個新的目錄。
以新目錄為基礎,為網站建立一個新網站。
為新網站建立基礎部分。
將檔案從目前的網站複製到新目錄下,覆蓋新目錄下的重複檔案。3
關閉舊網站並開始執行新網站。
修改網站所使用的管線設定檔。
電子商務網站包括了管線元件。管線元件可能包含使用外部script的Scriptor元件。如果你改變網站的目錄,你必須編輯script檔來為新目錄中的script指定正確的路徑。

這裡有一個FiveLakes網站的script檔案範例。該script檔已經被移到目錄d:\newfivelakes\ ewfivelakes\。傳輸管線設定檔的位置也已經完成更改。

<%
Function mscsexecute(config, orderform, context, flags)
mscsexecute = 1
Dim mscsMtsTxPipeline
Set mscsMtsTxPipeline = CreateObject("Commerce.MtsTxPipeline")
call
mscsMtsTxPipeline.loadpipe("d:
\newfivelakes\newfivelakes\config\transmit.pcf")
Dim TransportDictionary
Set TransportDictionary = CreateObject("Commerce.Dictionary")
Set TransportDictionary.object = orderform
TransportDictionary.Receipt_requested = "yes"
errorlevel = mscsMtsTxPipeline.Execute(1, TransportDictionary,
context, 0)
End Function
%>
修改產品屬性與變數


在電子商務網站中,資料庫的結構包含了所謂的產品。產品可以是特定物品或是一組關係密切的物品。產品擁有屬性,其值可能是單一數值或多重數值。4
例如,Remona網站專職銷售書籍。因此,該網站中的產品家族便是書籍。產品的屬性可能是書籍的作者,或是書籍的類別。例如,電腦與娛樂。

產品的變數則是特定產品屬性的結合。每一個變數都被賦予一個不同的SKU(stock-keeping unit)。

你可以使用Site Builder Wizard來修改產品的屬性並加入產品的變數到網站中。你可以使用Microsoft Site Server Commerce3.0版來將產品的變數加到自訂的網站中。

你可以為產品加入屬性以利促銷活動或銷售競爭。例如,讓我們假設你想要為所有由特定作者所撰寫的電腦書籍提供大比率的折扣。你可以在計劃管線的Product Info階段中藉著加入另一組key/value對到產品的目錄物件中。你將需要使用Scriptor元件,負責寫入新的數值到採購表單中的_product_attribute。這個值稍後會被用在促銷折扣中。

自訂網頁


在這個部分,我們將討論:

在網頁中呼叫單一管線元件。5

限制網頁只能讓註冊過的使用者使用。

透過電子郵件來確認購買動作。

除了自訂網站外,你也可以個別修改那些組成網站的ASP網頁。

你可以更新ASP網頁以便在ASP網頁中呼叫管線元件,控制網站上網頁的使用,並傳送電子郵件訊息給那些曾經在網站上購物的客戶。首先,讓我們學習如何在ASP網頁中呼叫管線元件。

在ASP網頁中呼叫單一管線元件


如你之前所學到的,管線是每一次在你載入並執行管線時,由不同管線元件所組成的。在某些情況下,你可能只想執行一個管線元件,而不是所有的管線元件。你不能直接在ASP網頁中呼叫一個管線元件,因為管線所實作的函式與介面並不為Microsoft Visual Basic Scripting Edtion所支援。然而,藉著建立一個包含所需管線元件的自訂管線,並接著執行該管線,你可以在網頁中執行單一管線元件。

這種方法雖可行,但它會影響網站的效能。例如,這個方法需要你在每一次執行使用額外資源的管線時,要載入全部的管線設定資料。6
要解決這個問題,Site Server Commerce 3.0版提供了MicroPipe元件讓你可以在ASP網頁中呼叫並執行單一管線元件,而不必藉著使用.pcf檔案來執行全部的管線。

MicroPipe元件提供了下列三個方法:

ParatComponent方法用來指定要被載入並執行的元件。

Execute方法執行由ParatComponent方法所指定的管線。

ParatLogFile方法指定管線要紀錄運作過程所用的檔案。

現在,讓我們學習如何在ASP網頁中使用MicroPipe元件。要做到這點,首先你必須建立並設定你希望MicroPipe去執行的元件。

底下的步驟必須執行:7
建立MicroPipe元件的實體。下面的程式會建立一個名為「mpcomp」的實體:

Set mpcomp = Server.CreateObject("Commerce.MicroPipe")
建立你需要在這個網頁中執行管線元件的實體。例如,你將藉著下面程式來建立MyPipeline元件的實體:

Set objPipe = Server.CreateObject("MyPipeline")
將前一個步驟中所建立的物件送到MicroPipe元件的SetComponent方法中。在這個範例中,你必須輸入下面的程式來完成這項工作:

mpcomp.SetComponent(objPipe)
藉著使用MicroPipe元件的Execute方法來執行該元件。使用Execute方法的語法為:8

MicroPipe.Execute(MainDictionary, Context, Reserved)
其中:

MicroPipe指的是被使用的MicroPipe物件名字。

MainDictionary指的是管線的主要辭典,如orderform物件。

Context指的是管線的內文。

Reserved不被使用且必須設定為0。

檢查運作的結果。Execute方法會傳回長整數型態的數值:9
1代表管線執行成功。

2代表Basket中管線元件所產生的錯誤或採購錯誤集合。這些錯誤都是客戶端的錯誤,如遺失資訊。

3代表管線執行失敗。當管線無法使用資料庫時,便會發生這種錯誤。

6使用下面的程式來清除物件:



Set mpcomp = nothing
Set objpipe = nothing
限制網頁只供註冊過的使用者使用


你的網站可能包含了只能讓註冊過的使用者存取的內容。因此你可以編輯一份內含限制的ASP網頁內容,只能讓通過註冊程序的使用者使用。10
使用 ShopperID 來限制存取


要限制網頁的存取,你必須取得ShopperID並檢查其值。如果值為Null,它代表網站的訪客並非通過註冊的使用者。接著你可以將使用者引導至網站的default.asp或註冊網頁。這裡有一個範例程式碼,你可以將它加到只讓會員使用的網頁中。理想的情況下,你應該在納入檔案中指定這段程式。並且在應用程式的每一個網頁中呼叫該檔案。

<%
mscsShopperID = mscsPage.GetShopperId
if IsNull(mscsShopperID) then
if Not this_page("default.asp") then
Response.Redirect(mscsPage.URL("default.asp"))
end if
end if
%>
在這段程式碼中,你使用Page物件的GetshopperID方法來取得目前正在使用網頁的使用者其唯一的shopperID。

將限制的網頁存放於不同的目錄中


另一種在網站上對特定網頁限制使用的方法是,將這些網頁存放在不同的目錄中。你也可以引導網站訪客到註冊網頁以提高網站的互動性。接著你可以撰寫程式來檢查使用者欲存取檔案的位置。這段程式將會驗證使用者是否已經通過註冊。通過註冊的使用者可以存取那些限制的網頁,但是新的使用者會在獲得這些網頁使用權之前先被引導至註冊網頁。

下面的範例程式會檢查被存取的網頁是否存放於名為RegMembers的目錄之中。如果新使用者想要使用RegMemgers目錄中的網頁,他或她將會被引導至register.asp網頁。11
<%
if IsNull(mscsShopperId) then
targetPage=Request.ServerVariables("SCRIPT_NAME")
virtualFolderMember = "/" & mscsPage.VirtualFolder & "/
regmember"
if Left(targetPage, len(virtualFolderMember)) =
virtualFolderMember then
redirectPage = targetPage & "?"
query = Request.ServerVariables("QUERY_STRING")
body = Request.Body
if Not(IsNull(query)) then
redirectPage = redirectPage & query
end if
if Not(IsNull(body)) then
redirectPage = redirectPage & body
end if
Response.Redirect(mscsPage.URL("register.asp",
"redirect_target", redirectPage))
Response.End
end if
else
end if
%>
透過電子郵件確認採購


當顧客送出一張訂單時,對採購過程進行確認是不可缺的。你可以藉著傳送內含訂單明細與訂單追蹤號碼的電子郵件訊息給客戶,來進行交易的確認。

要在你的ASP應用程式中加入訊息功能,你可以使用Microsoft CDO for NTS Library (Collaboration Data Objects for Windows NT Server Library),1.12版。

這個函式庫將會展露可以在Microsoft Visual Basic、Microsoft Visual C++、C/C++與Visual Basic Scripting(VBScript) Edition等應用程式中提供通知功能的物件。

要建立一個電子郵件訊息並將之傳送給客戶,你必須使用CDO for NTS Library所提供的NewMail物件。使用NewMail物件,你可以在不必登入session的情況下傳送訊息。

在開始學習如何在網站中使用NewMail物件之前,讓我們先看看NewMail物件的屬性與方法。NewMail物件的關鍵屬性有:12
To屬性用來指定接收NewMail物件的接收者完整的郵件地址。

Cc屬性用來指定接收NewMail物件完整複製的接收者其完整郵件地址。

Bcc屬性用來指定接收NewMail物件不完整複製的接收者其完整郵件地址。

From屬性用來指定NewMail物件的傳送者其完整郵件地址。

Subject屬性用來指定被傳送訊息的標題為何。

Body屬性用來指定出現在郵件訊息中的文字內容。這個文字內容可以是HTML或純文字格式。

Importance屬性用來指定傳送NewMail物件的重要等級。13

Value屬性用來指定郵件訊息的附加標題。

讓我們看看NewMail物件所提供的方法:

AttachFile方法讓你可以藉著讀入檔案將檔案附加到郵件訊息中。

AttachURL方法讓你可以為郵件訊息加入附件,而該附件是以URL來作關聯。

Send方法會將NewMail物件傳送給由NewMail物件的To、Cc與Bcc等屬性所指定的接收者。

讓我們詳細地研究Send方法。其語法為:

ObjNewMail.Send([From] [,To] [,Subject] [,Body] [,Importance])14
Send方法中的參數會對應到New Mail物件上的各個屬性。然而,如果你為New Mail物件的To屬性指定值,而且也為Parand方法的To參數指定值,則NewMail物件會被傳送到兩者所指定的接收者。

一但Send方法成功地執行,NewMail物件會變成不正確且不能再使用。你必須將該物件設定為Nothing。

現在讓我們學習如何傳送一份確認訊息給在網站上發出訂單的使用者。要完成這項工作,你需要在OPP的採購管線中加入Scriptor物件,並為Scriptor元件關聯一個.vbs檔案。該.vbs檔案將會包含產生NewMail物件實體的程式,並傳送郵件給指定的接收者。

底下就是email.vbs中建立New Mail物件並傳送物件給指定接收者的程式碼:

Function mscparaxecute(config, orderform, context, flags)
Dim myMail
Parat FiveLakesMail = CreateObject("CDONTS.NewMail")
FiveLakesMail.From = "Pararvice@FiveLakes.com"
FiveLakesMail.To = orderForm.ship_to_email
FiveLakesMail.Subject = "Your order has been confirmed. Thank
you."
FiveLakesMail.Body = "This is a sample message."
FiveLakesMail.Parand
Parat FiveLakesMail = Nothing
End function
在利用上述程式來建立email.vbs之後,你將在Microsoft Commerce Pipeline Editor中啟動FiveLakes網站的採購管線。為管線加入一個Scriptor物件並與email.vbs建立關聯。

實作12:自訂網站15


目標


在完成本實作之後,你將能夠:

使用Scriptor元件來建立電子郵件訊息。

在您開始之前


先決條件


在開始本實作之前,你必須具有:

HTML與ASP script的基本知識。16

熟習Microsoft Internet與Microsoft Visual InterDev 6.0 。

4 預估完成所需時間:15分鐘
練習1:利用Scriptor元件來建立電子郵件訊息


在這個練習中,你將設定FiveLakes網站來透過電子郵件傳送訂單確認訊息給客戶。

環境設定


要完成這個實作,你必須將檔案從目錄<install folder>\Labs\Lab12 \FiveLakes\StartCode複製到目錄\\InetPub\wwwroot\FiveLakes \Config中。17
4 為 Scriptor 元件建立 script

開啟Windows檔案總管並瀏覽至目錄\\inetpub\wwwroot\FiveLakes \Config。
建立一個新的文字檔。
輸入下面程式:

Function mscsexecute(config, orderform, context, flags)
Dim myMail
Set FiveLakesMail = CreateObject("CDONTS.NewMail")
FiveLakesMail.From = "Service@FiveLakes.com"
FiveLakesMail.To = orderForm.ship_to_email
FiveLakesMail.Subject = "Your order has been confirmed. Thank
you."
FiveLakesMail.Body = "This is a sample message."
FiveLakesMail.Send
Set FiveLakesMail = Nothing
End function
將檔案儲存成18 email.vbs ,然後關閉檔案。
4 將 Scriptor 元件加入採購管線中

點選 開始 ,指向19 程式集 。
指向 Microsoft Site Server ,然後選擇 COMMERCE 的20 Pipeline Editor 。
會出現Commerce Server Pipeline Editor視窗。在工具列中,點選 Open 。
在 Open21 對話盒中,瀏覽至目錄\\inetpub\wwwroot\FiveLakes\Config目錄。
選擇 purchase.pcf ,然後按下 開啟 。
如果管線並未被展開,雙擊22 Accept 來展開它。
利用滑鼠右鍵點選 SQLItemAdo ,然後選擇 Insert Component 。23
選取 After 。
在 Choose a Component 對話盒中,選擇 Scriptor component24 ,然後按下 OK 。
在管線中,雙擊 Scriptor 。
在25 Component Properties 對話盒中,選取 External 選項。
會出現Scriptor訊息方塊,詢問你是否要匯出內部的原始碼。點選 No 。26
點選 Browse 。
在 開啟檔案 對話盒中,選擇 email.vbs27 ,然後點選 開啟 。
點選 OK 。
在Microsoft Management Console中重新整理網頁。
mic64 目前離線  
送花文章: 0, 收花文章: 21 篇, 收花: 61 次