Please note that this documentation is for the most recent version of this extension. It may not be relevant for older versions. Related documentation can be found in the documentation directory of the extension.
Basket Checkout
The Shop extension comes with 4 predefined checkout types. These are:
- request
- prePayment
- onInvoice
- payPal (requires Pro Version of the Shop extension)
General configuration
- checkoutPid Enter the page UID of the checkout page.
- minimummOrderValue Enter the minimum order value (in cents).
- orderOptions Define the checkout types here. We will look at this in more detail in another section.
- fieldDefinition Configure the form fields for checkout. These are configured in the respective TypoScript node to make them available in the various checkouts.
Further checkout-specific configurations can be found on the relevant documentation page.
TypoScript configuration checkout basis
plugin.tx_shop.settings.basketOrder{
# Page-ID des Checkout
checkoutPid = {$themes.configuration.pages.shop.checkout}
# Minimum order value in cents
minimumOrderValue = {$themes.configuration.extension.shop.basket.minimumOrderValue}
# Time for payment in days default value
timeForPayment = 14
# Default string for delivery time notice in basket above the additional costs
deliveryTime =
# VAT information depending on country and b2b/b2c
vat {
b2b {
inland {
notice = Es handelt sich um eine Inland-Lieferung an ein Unternehmen.<br />Ihre USt.-ID: %1$s
}
europeanUnion {
# Parameter is VAT-ID in basket order
notice = Es handelt sich um eine steuerbefreite innergemeinschaftliche Lieferung gem. §4 Nr. 1b UstG.<br />Unsere USt.-ID: DE 123 456 789<br />Ihre USt.-ID: %1$s
}
thirdCountry {
notice = Es handelt sich um eine steuerbefreite Ausfuhrlieferung gem. §4 Nr. 1a UstG.
}
}
b2c {
inland {
notice = Es handelt sich um eine Inland-Lieferung an eine Privatperson.
}
europeanUnion {
notice = Es handelt sich um eine innergemeinschaftliche Lieferung an eine Privatperson.
}
thirdCountry {
notice = Es handelt sich um eine steuerbefreite Ausfuhrlieferung gem. §4 Nr. 1a UstG.
}
}
}
}
TypoScript configuration order onRequest
plugin.tx_shop.settings.basketOrder{
orderOptions{
request {
active = 1
type = request
checkoutPid = {$themes.configuration.pages.shop.checkout}
successPid = {$themes.configuration.pages.shop.checkoutSuccess}
errorPid = {$themes.configuration.pages.shop.checkoutError}
service = CodingMs\Shop\Service\Checkout\RequestCheckoutService
button {
title = tx_shop_label.request_button_title
label = tx_shop_label.request_button_label
icon = fa fa-shopping-cart
}
fields {
available = company, firstname, lastname, phone, email, message, privacyProtectionConfirmed, termsConfirmed
required = company, lastname, phone, email, privacyProtectionConfirmed, termsConfirmed
}
email {
customerConfirmation {
active = 1
from {
name = {$themes.configuration.extension.shop.email.from.name}
email = {$themes.configuration.extension.shop.email.from.email}
}
to {
# Customer address data
}
template = {$themes.configuration.extension.shop.email.templates.request.customerConfirmation}
}
request {
active = 1
from {
name = {$themes.configuration.extension.shop.email.from.name}
email = {$themes.configuration.extension.shop.email.from.email}
}
to {
name = {$themes.configuration.extension.shop.email.to.name}
email = {$themes.configuration.extension.shop.email.to.email}
}
template = {$themes.configuration.extension.shop.email.templates.request.request}
}
}
}
}
}
TypoScript configuration order onPrePayment
plugin.tx_shop.settings.basketOrder{
orderOptions{
prePayment {
active = 1
attachInvoice = 0
attachInvoiceToAdminEmail = 1
attachInvoiceToCustomerEmail = 1
type = prePayment
checkoutPid = {$themes.configuration.pages.shop.checkout}
successPid = {$themes.configuration.pages.shop.checkoutSuccess}
errorPid = {$themes.configuration.pages.shop.checkoutError}
service = CodingMs\Shop\Service\Checkout\PrePaymentCheckoutService
button {
title = tx_shop_label.pre_payment_button_title
label = tx_shop_label.pre_payment_button_label
icon = fa fa-shopping-cart
}
fields {
available = company, vatId, firstname, lastname, street, houseNumber, postalCode, city, country, phone, email, message, deliveryAddressEnabled, deliveryAddressCompany, deliveryAddressFirstname, deliveryAddressLastname, deliveryAddressStreet, deliveryAddressHouseNumber, deliveryAddressPostalCode, deliveryAddressCity, deliveryAddressCountry, privacyProtectionConfirmed, termsConfirmed, disclaimerConfirmed
required = firstname, lastname, street, houseNumber, postalCode, city, country, email, privacyProtectionConfirmed, termsConfirmed, disclaimerConfirmed, deliveryAddressFirstname, deliveryAddressLastname, deliveryAddressStreet, deliveryAddressHouseNumber, deliveryAddressPostalCode, deliveryAddressCity, deliveryAddressCountry
}
email {
customerConfirmation {
active = 1
from {
name = {$themes.configuration.extension.shop.email.from.name}
email = {$themes.configuration.extension.shop.email.from.email}
}
to {
# Customer address data
}
template = {$themes.configuration.extension.shop.email.templates.prePayment.customerConfirmation}
}
order {
active = 1
from {
name = {$themes.configuration.extension.shop.email.from.name}
email = {$themes.configuration.extension.shop.email.from.email}
}
to {
name = {$themes.configuration.extension.shop.email.to.name}
email = {$themes.configuration.extension.shop.email.to.email}
}
template = {$themes.configuration.extension.shop.email.templates.prePayment.order}
}
}
}
}
}
TypoScript configuration order onInvoice
plugin.tx_shop.settings.basketOrder{
orderOptions{
onInvoice {
active = 1
attachInvoice = 0
attachInvoiceToAdminEmail = 1
attachInvoiceToCustomerEmail = 1
type = onInvoice
checkoutPid = {$themes.configuration.pages.shop.checkout}
successPid = {$themes.configuration.pages.shop.checkoutSuccess}
errorPid = {$themes.configuration.pages.shop.checkoutError}
service = CodingMs\Shop\Service\Checkout\OnInvoiceCheckoutService
button {
title = tx_shop_label.order_on_invoice_button_title
label = tx_shop_label.order_on_invoice_button_label
icon = fa fa-shopping-cart
}
fields {
available = company, vatId, firstname, lastname, street, houseNumber, postalCode, city, country, phone, email, message, deliveryAddressEnabled, deliveryAddressCompany, deliveryAddressFirstname, deliveryAddressLastname, deliveryAddressStreet, deliveryAddressHouseNumber, deliveryAddressPostalCode, deliveryAddressCity, deliveryAddressCountry, privacyProtectionConfirmed, termsConfirmed, disclaimerConfirmed
required = firstname, lastname, street, houseNumber, postalCode, city, country, email, privacyProtectionConfirmed, termsConfirmed, disclaimerConfirmed, deliveryAddressFirstname, deliveryAddressLastname, deliveryAddressStreet, deliveryAddressHouseNumber, deliveryAddressPostalCode, deliveryAddressCity, deliveryAddressCountry
}
email {
customerConfirmation {
active = 1
from {
name = {$themes.configuration.extension.shop.email.from.name}
email = {$themes.configuration.extension.shop.email.from.email}
}
to {
# Customer address data
}
template = {$themes.configuration.extension.shop.email.templates.onInvoice.customerConfirmation}
}
order {
active = 1
from {
name = {$themes.configuration.extension.shop.email.from.name}
email = {$themes.configuration.extension.shop.email.from.email}
}
to {
name = {$themes.configuration.extension.shop.email.to.name}
email = {$themes.configuration.extension.shop.email.to.email}
}
template = {$themes.configuration.extension.shop.email.templates.onInvoice.order}
}
}
}
}
}
Field definitions
plugin.tx_shop.settings.basketOrder{
fieldDefinition {
company {
label = Company
placeholder = Your company
type = input
eval = trim
errors {
isEmpty = Please enter your company name
}
}
vatId {
label = VAT-ID
placeholder = Your VAT-ID
type = input
eval = trim
errors {
isEmpty = Please enter your VAT-ID
}
}
firstname {
label = Firstname
placeholder = Your firstname
type = input
eval = trim
errors {
isEmpty = Please enter your firstname
}
}
lastname {
label = Lastname
placeholder = Your lastname
type = input
eval = trim
errors {
isEmpty = Please enter your lastname
}
}
street {
label = Street
placeholder = Your street
type = input
eval = trim
errors {
isEmpty = Please enter your street
}
}
houseNumber {
label = Housenumber
type = input
eval = trim
placeholder = Your housenumber
errors {
isEmpty = Please enter your housenumber
}
}
postalCode {
label = Postal code
placeholder = Your postal code
type = input
eval = trim
errors {
isEmpty = Please enter your postal code
}
}
city {
label = City
placeholder = Your city
type = input
eval = trim
errors {
isEmpty = Please enter your city
}
}
country {
label = Land
type = country
eval = trim
default = DE
errors {
isEmpty = Please choose your country
}
}
phone {
label = Phone
placeholder = Your phone number
type = input
eval = trim
errors {
isEmpty = Please enter your phone number
}
}
email {
label = Email
placeholder = Your email
type = input
eval = trim,email
errors {
isEmpty = Please enter your email address
isInvalidEmail = Please enter a valid mail address
}
}
category {
label = Category
placeholder = Please enter the category
type = select
eval = trim
options {
0 {
value = food
label = Food
}
1 {
value = health
label = Health
}
}
}
message {
label = Message
placeholder = Your message
type = textarea
eval = trim
errors {
isEmpty = Please enter a message
}
}
privacyProtectionConfirmed {
label = I've read the <a href="%s" target="_blank">privacy protection and accept them</a>
type = checkbox
eval = trim
linkPid = {$themes.configuration.pages.privacy}
errors {
isEmpty = Please accept our privacy protection
}
}
termsConfirmed {
label = I've read the <a href="%s" target="_blank">terms</a> and accept them
type = checkbox
eval = trim
linkPid = {$themes.configuration.pages.terms}
errors {
isEmpty = Please accept our terms
}
}
disclaimerConfirmed {
label = I've read the <a href="%s" target="_blank">disclaimer</a> and accept them
type = checkbox
eval = trim
linkPid = {$themes.configuration.pages.disclaimer}
errors {
isEmpty = Please accept the disclaimer
}
}
deliveryAddressEnabled {
type = checkbox
deliveryAddressToggle = 1
label = Deviating delivery address
}
deliveryAddressCompany {
label = Company
type = input
eval = trim
deliveryAddress = 1
placeholder = Your company
errors {
isEmpty = Please enter your company name
}
}
deliveryAddressFirstname {
label = Firstname
type = input
eval = trim
deliveryAddress = 1
placeholder = Your firstname
errors {
isEmpty = Please enter your firstname
}
}
deliveryAddressLastname {
label = Lastname
placeholder = Your lastname
type = input
eval = trim
deliveryAddress = 1
errors {
isEmpty = Please enter your lastname
}
}
deliveryAddressStreet {
label = Street
placeholder = Your street
type = input
eval = trim
deliveryAddress = 1
errors {
isEmpty = Please enter your street
}
}
deliveryAddressHouseNumber {
label = Housenumber
type = input
eval = trim
deliveryAddress = 1
placeholder = Your housenumber
errors {
isEmpty = Please enter your housenumber
}
}
deliveryAddressPostalCode {
label = Postal code
placeholder = Your postal code
type = input
eval = trim
deliveryAddress = 1
errors {
isEmpty = Please enter your postal code
}
}
deliveryAddressCity {
label = City
placeholder = Your city
type = input
eval = trim
deliveryAddress = 1
errors {
isEmpty = Please enter your city
}
}
deliveryAddressCountry {
label = Country
type = country
eval = trim
default = DE
deliveryAddress = 1
errors {
isEmpty = Please choose your country
}
}
deliveryAddressPhone {
label = Phone
placeholder = Your phone number
type = input
eval = trim
deliveryAddress = 1
errors {
isEmpty = Please enter your phone number
}
}
}
}