Installatie Drupal Commerce 2.x - Casus begin 2017: verschil tussen versies

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen
 
(30 tussenliggende versies door dezelfde gebruiker niet weergegeven)
Regel 1: Regel 1:
Zie ook [[Composer]] & [[Drupal Console]].
+
Zie ook  
 +
 
 +
* [[Composer]]
 +
* [[Drupal Console]]
 +
* [[Installatie Drupal Commerce 2.x - Casus begin 2017 (2)]]
 +
* [[Installatie Drupal Commerce 2.x - Casus begin 2017 (3)]]
 +
* [[Installatie Drupal Commerce 2.x - Algemeen]]
  
 
Er is geen ontkomen aan: ''Drupal Commerce'' kun je alleen via ''Composer'' installeren [https://www.drupal.org/project/commerce], [https://www.youtube.com/watch?v=XOy0sR9NPxM]. Daarmee wordt het terminal-commando ''composer'' bedoeld, niet de Drupal-module. Je kunt Drupal Commerce 2.x dus waarschijnlijk alleen installeren als je terminal-toegang hebt.
 
Er is geen ontkomen aan: ''Drupal Commerce'' kun je alleen via ''Composer'' installeren [https://www.drupal.org/project/commerce], [https://www.youtube.com/watch?v=XOy0sR9NPxM]. Daarmee wordt het terminal-commando ''composer'' bedoeld, niet de Drupal-module. Je kunt Drupal Commerce 2.x dus waarschijnlijk alleen installeren als je terminal-toegang hebt.
Regel 9: Regel 15:
 
=== Composer ===
 
=== Composer ===
  
 +
Je hebt de command-line tool ''composer'' nodig. Niet de Drupal-module met dezelfde naam!
  
 
=== Drupal-modules ===
 
=== Drupal-modules ===
Regel 48: Regel 55:
 
=== Drupal Console ===
 
=== Drupal Console ===
  
[https://drupalconsole.com/ Drupal Commerce] wordt aangeraden.
+
[https://drupalconsole.com/ Drupal Console] wordt aangeraden.
  
== Casus - feb. 2017 ==
+
== Installatie Drupal Commerce ==
 
 
=== Installatie Drupal Commerce ===
 
  
 
* Basissite geïnstalleerd mbv. eigen script
 
* Basissite geïnstalleerd mbv. eigen script
Regel 94: Regel 99:
 
</pre>
 
</pre>
  
=== Updaten ===
+
== Updaten ==
 +
 
 +
=== Eerst Drupal Commerce updaten ===
  
 
Updaten van Drupal Commerce gaat via:
 
Updaten van Drupal Commerce gaat via:
  
 
  composer update drupal/commerce --with-dependencies
 
  composer update drupal/commerce --with-dependencies
 +
 +
=== Daarna de rest updaten ===
  
 
Updaten van de site-als-geheel via Drupal Console (''ná'' updaten Drupal Commerce!):
 
Updaten van de site-als-geheel via Drupal Console (''ná'' updaten Drupal Commerce!):
Regel 105: Regel 114:
 
  drupal update:execute
 
  drupal update:execute
  
=== Installatie additionele modules ===
+
== Installatie additionele modules ==
  
 
Dat gaat op de gebruikelijke manier, lijkt me. Alleen officiele Drupal Commerce modules gaan via Composer. Tot op dit moment nog geen additionele modules geïnstalleerd.
 
Dat gaat op de gebruikelijke manier, lijkt me. Alleen officiele Drupal Commerce modules gaan via Composer. Tot op dit moment nog geen additionele modules geïnstalleerd.
Regel 166: Regel 175:
 
== Producten, variaties & representaties ==
 
== Producten, variaties & representaties ==
  
Er een gelaagd systeem van producten en de weergave daarvan. Het is echter niet hetzelfde systeem als in DC1. Enkele termen die zoal een rol spelen:
+
Er een gelaagd systeem van producten en de weergave daarvan. Enkele termen die zoal een rol spelen:
  
 
* ''Product type'' - Waarschijnlijk wat ik P1 noem. Bv. t-shirts
 
* ''Product type'' - Waarschijnlijk wat ik P1 noem. Bv. t-shirts
Regel 173: Regel 182:
 
* ''Purchasable entities'' - ?
 
* ''Purchasable entities'' - ?
 
* ''Product fields'' - Los van product attributes, kun je producten opleuken met allerlei velden
 
* ''Product fields'' - Los van product attributes, kun je producten opleuken met allerlei velden
 +
 +
Dit systeem heeft iets weg van dat voor DC1 [http://internetdevels.com/blog/the-commerce-2x-module-for-Drupal-8]:
 +
 +
* P1: ''Commerce Product'' → ''ProductVariation''
 +
* P2: ''Product display'' → ''Product''
  
 
=== Product attributes ===
 
=== Product attributes ===
Regel 192: Regel 206:
 
|}
 
|}
  
=== Manage display (P2) ===
+
=== Product types ===
 +
 
 +
Naast ''product variation types'' heb je ook nog ''product types''. Daar lijk je product variaties te associeren met kale producttypes, en niet bij ''product variation type'' ofzoiets. Voor nu geloof ik het wel.
  
De ''presentatie'' van producten noem ik '''P2''', vanwege de verwarrende naamgeving. Deze kun je op twee plekken aanpassen:
+
=== Product Variants ===
  
* <code>Admin » Commerce » Config » Product type</code>
+
De handleiding legt oa. [http://docs.drupalcommerce.org/v2/product/products.html hier] uit, dat je altijd minimaal één productvariant moet defineren.
* <code>Admin » Commerce » Config » Product variation type</code>
 
  
=== P1 ===
+
{|
 +
|[[file:20170313-1639.png|thumb|'''Met product variant:''' [http://docs.drupalcommerce.org/v2/product/products.html Illustratie] dat je echt minimaal één product variant moet hebben, voor prijs en SKU]]
 +
|[[file:20170313-1558.png|thumb|'''Zonder product variant:''' <code>Commerce » Products</code>: ''Products'' zonder product variations of wat dan ook. Kaler dan dit krijg je 't waarschijnlijk niet. Maar zo zonder prijs is wel héél kaal]]
 +
|}
  
In DC1 gebruikte ik de term '''P1''' voor de achterliggende producten. Ik weet niet precies of dat correspondeert met DC2.
+
{|
 +
|[[file:20170313-1647.png|thumb|'''Met 'reguliere' product variant (1):''' In dit geval is er één veld toegevoegd, namelijk voor productafbeeldingen. Hier kun je zien dat ''productvarianten'' nog het beste overeenkomen met wat ik '''P2''' noemde in DC1: De presentatie van producten (al is presentatie nu niet meer een accurate benaming)]]
 +
|[[file:20170313-1648.png|thumb|'''Met 'reguliere' product variant (2):''' Nu kun je prijzen, SKU en afbeeldingen associëren met producten]]
 +
|}
  
 
=== P1-definitie aanpassen ===
 
=== P1-definitie aanpassen ===
Regel 211: Regel 232:
 
* Naam: <code>p1_image</code>
 
* Naam: <code>p1_image</code>
 
* Aantal: Onbeperkt.
 
* Aantal: Onbeperkt.
 +
 +
P.s.: Ik weet niet meer waar ik dit heb gedaan.
 +
 +
=== Producten ===
 +
 +
Zo snel je een product type (of zoiets) hebt gedefineerd, kun je producten toevoegen:
 +
 +
Commerce » Products
 +
 +
=== Foutmelding: Field variations is unknown ===
 +
 +
Oh oh:
 +
 +
<pre>
 +
The website encountered an unexpected error. Please try again later.
 +
 +
InvalidArgumentException: Field variations is unknown.
 +
in Drupal\Core\Entity\ContentEntityBase->getTranslatedField()
 +
(line 471 of core/lib/Drupal/Core/Entity/ContentEntityBase.php).
 +
</pre>
 +
 +
Dit lijkt een bug te zijn op het snijvlak van Drupal Commerce en iets met talen. De producten worden wél opgeslagen, maar ik kan ze daarna niet 'gewoon' bekijken. Dus negeren is geen optie. Een mogelijke tijdelijke oplossing: Meertaligheid uitzetten → Producten invoeren → Dan pas iets met meertaligheid doen.
 +
 +
Desalniettemin: Voordat ik deze webshop ontdaan had van allerlei toeters en bellen, deed deze pagina 't wel. In het bijzonder: De handleiding zegt regelmatig (oa. [http://docs.drupalcommerce.org/v2/product/products.html hier] dat je minimaal één ''productvariant'' nodig hebt.
 +
 +
=== Manage display (P2) ===
 +
 +
De ''presentatie'' van producten noem ik '''P2''', vanwege de verwarrende naamgeving. Deze kun je op twee plekken aanpassen:
 +
 +
* <code>Admin » Commerce » Config » Product type</code>
 +
* <code>Admin » Commerce » Config » Product variation type</code>
  
 
=== Products » Add product ===
 
=== Products » Add product ===
Regel 228: Regel 280:
 
== Bronnen ==
 
== Bronnen ==
  
* http://docs.drupalcommerce.org/v2/getting-started/install.html » Dit zijn de officiële installatie-instructies
 
 
* https://www.drupal.org/node/2351795 - Drupal Commerce 2.x Advanced Installation Instructions
 
* https://www.drupal.org/node/2351795 - Drupal Commerce 2.x Advanced Installation Instructions
 
* https://www.drupal.org/node/2405811 - Composer Manager for Drupal 8 » Bijzaak
 
* https://www.drupal.org/node/2405811 - Composer Manager for Drupal 8 » Bijzaak
Regel 240: Regel 291:
 
* https://www.drupal.org/node/2716785#comment-11964386 - Goed antwoord, van een leuke vent
 
* https://www.drupal.org/node/2716785#comment-11964386 - Goed antwoord, van een leuke vent
  
''' Officiële documentatie '''
+
''' Field variations-error '''
  
* http://docs.drupalcommerce.org/v2/index.html - Startpagina: Modules, libraries & tools
+
* https://www.drupal.org/node/2835576 - InvalidArgumentException: Field uuid is unknown
* http://docs.drupalcommerce.org/v2/getting-started/index.html - Getting started
+
* https://www.drupal.org/node/2837547 - Product creation failed
** http://docs.drupalcommerce.org/v2/getting-started/composer.html - Using Composer
 
** http://docs.drupalcommerce.org/v2/getting-started/install.html - Installing
 
** http://docs.drupalcommerce.org/v2/getting-started/update.html - Keeping a Drupal Commerce site up to date
 
** http://docs.drupalcommerce.org/v2/getting-started/contributing/index.html - Contributing
 
** http://docs.drupalcommerce.org/v2/getting-started/contributing/development-environment.html - Getting ready for development
 
* http://docs.drupalcommerce.org/v2/building-blocks/index.html - Libraries and dependencies
 
** http://docs.drupalcommerce.org/v2/building-blocks/address.html - Address
 
** http://docs.drupalcommerce.org/v2/building-blocks/profile.html - Profile
 
** http://docs.drupalcommerce.org/v2/building-blocks/state-machine.html - State Machine
 
** http://docs.drupalcommerce.org/v2/building-blocks/ief.html - Inline Entity Form 8.x-2.x
 
* http://docs.drupalcommerce.org/v2/currency.html - Currencies
 
* http://docs.drupalcommerce.org/v2/store.html - Setting up stores
 
* http://docs.drupalcommerce.org/v2/product/index.html - Products
 
** http://docs.drupalcommerce.org/v2/product/product-attributes.html - Setup product attributes
 
** http://docs.drupalcommerce.org/v2/product/products.html - Make a product
 
** http://docs.drupalcommerce.org/v2/product/product-type.html - Create a product type (lege pagina)
 
** http://docs.drupalcommerce.org/v2/product/purchasable-entities.html - Purchasable Entities (behoorlijk lege pagina)
 
* http://docs.drupalcommerce.org/v2/product/catalog-and-product-pages.html - Catalog and product pages
 
** http://docs.drupalcommerce.org/v2/product/create-a-product-catalog.html - Create a product catalog
 
** http://docs.drupalcommerce.org/v2/product/customize-the-add-to-cart-form.html - Customize the add to cart form
 
** http://docs.drupalcommerce.org/v2/product/theme-a-product-page.html - Theme a product page
 
* http://docs.drupalcommerce.org/v2/using-promotions.html - Product merchandising (lege pagina)
 
* http://docs.drupalcommerce.org/v2/creating-a-promotion.html - Create a promotion (lege pagina)
 
* http://docs.drupalcommerce.org/v2/orders/index.html - Orders
 
* http://docs.drupalcommerce.org/v2/orders/order-types.html - Order Types
 
* http://docs.drupalcommerce.org/v2/orders/order-items.html - Order Items
 
* http://docs.drupalcommerce.org/v2/orders/order-processing.html - Order Processing
 
* http://docs.drupalcommerce.org/v2/checkout/index.html - Configuring your checkout
 
** http://docs.drupalcommerce.org/v2/checkout/guest.html - Allowing guest checkout, or account login
 
** http://docs.drupalcommerce.org/v2/checkout/customize.html - Customizing your checkout
 
** http://docs.drupalcommerce.org/v2/checkout/checkout-pane-plugin.html - Creating a checkout pane plugin
 
** http://docs.drupalcommerce.org/v2/checkout/creating-a-checkout-flow-plugin.html - Creating a checkout flow plugin
 
* http://docs.drupalcommerce.org/v2/payments/index.html - Setting up payments
 
** http://docs.drupalcommerce.org/v2/payments/available-payment-gateways.html - Available payment gateways
 
** http://docs.drupalcommerce.org/v2/payments/install-a-payment-gateway.html - Install a payment gateway
 
** http://docs.drupalcommerce.org/v2/payments/managing-order-payments.html - Managing order payments
 
* http://docs.drupalcommerce.org/v2/recipes/index.html - Code Recipes
 
** http://docs.drupalcommerce.org/v2/recipes/stores.html - Store recipes
 
** http://docs.drupalcommerce.org/v2/recipes/variations.html - Product Variations and types
 
** http://docs.drupalcommerce.org/v2/recipes/attributes.html - Product Attributes and Values
 
** http://docs.drupalcommerce.org/v2/recipes/products.html - Products and types
 
** http://docs.drupalcommerce.org/v2/recipes/orders.html - Orders and order items
 
** http://docs.drupalcommerce.org/v2/recipes/state-machine-transitions.html - State Machine Transitions
 
  
 
''' Configuratie Drupal Commerce '''
 
''' Configuratie Drupal Commerce '''

Huidige versie van 15 mrt 2017 om 22:48

Zie ook

Er is geen ontkomen aan: Drupal Commerce kun je alleen via Composer installeren [1], [2]. Daarmee wordt het terminal-commando composer bedoeld, niet de Drupal-module. Je kunt Drupal Commerce 2.x dus waarschijnlijk alleen installeren als je terminal-toegang hebt.

Requirements

Zie de casus hieronder voor details. Deze lijst is niet compleet. Ook is er niet aangegeven welke dingen je expliciet zelf moet regelen.

Composer

Je hebt de command-line tool composer nodig. Niet de Drupal-module met dezelfde naam!

Drupal-modules

  • Zie hieronder + [3]
  • Zie de casus hieronder voor meer afhankelijkheden.

PHP-libraries - Algemeen

php-bcmath

Deze module heb je al bij de installatie nodig, maar ook later tijdens aanmaak van producten. Deze installatie speelde zich af op een redelijk frisse LAMP-server. Oorspronkelijk probeerde ik php 7.1 te gebruiken, maar toen die moeilijk deed, ben ik overgestapt op php 7.0, althans dat dacht ik;

Oorspronkelijke installatie: sudo apt-get install php-bcmath. Dat bleek echter de php 7.1-versie te installatie. De php 7.0-versie geïnstalleerd middels sudo apt-get install php7.0-bcmath

php-gd

Installatie voor PHP 7.1:

sudo apt-get install gd

Installatie voor PHP 7.0:

sudo apt-get install php7.0-gd

PHP-libraries - Specifiek

Drupal Console

Drupal Console wordt aangeraden.

Installatie Drupal Commerce

  • Basissite geïnstalleerd mbv. eigen script
  • Composer geïnstalleerd middels sudo apt-get install composer
  • Vanuit de root van die installatie: composer config repositories.drupal composer https://packages.drupal.org/8 - Geen foutmeldingen
  • composer require "drupal/commerce 2.x-dev" gaf foutmelding:
Problem 1
    - easyrdf/easyrdf 0.9.1 requires ext-mbstring * -> the requested PHP extension mbstring is missing from your system.
    - easyrdf/easyrdf 0.9.1 requires ext-mbstring * -> the requested PHP extension mbstring is missing from your system.
    - easyrdf/easyrdf 0.9.1 requires ext-mbstring * -> the requested PHP extension mbstring is missing from your system.
    - Installation request for easyrdf/easyrdf == 0.9.1.0 -> satisfiable by easyrdf/easyrdf[0.9.1].
  • sudo apt-get install php-mbstring
  • composer require "drupal/commerce 2.x-dev". Gelukt zonder foutmelding, met veel output
  • drupal module:install commerce_product commerce_checkout commerce_cart commerce_tax geeft foutmelding: Commando drupal is niet bekend
  • Drupal Console Geïnstalleerd
  • drupal module:install commerce_product commerce_checkout commerce_cart commerce_tax - Opnieuw foutmelding: Je moet Drupal Console ook locaal installeren per instantie:
  • composer require drupal/console:~1.0 --prefer-dist --optimize-autoloader
  • composer update drupal/console --with-dependencies: Wat onduidelijke waarschuwingen over whitelisting, maar verder ok
  • drupal module:install commerce_product commerce_checkout commerce_cart commerce_tax - gelukt. Output:
One or more modules "commerce_tax" are not available, running download process to get those modules
 Getting releases for module "commerce_tax"
                                                                                                                        
 [ERROR] There aren't any releases for module "commerce_tax"                                                            
 [ERROR] Invalid module name: commerce_tax                                                                              

 Installing module(s) "commerce_product, commerce_checkout, commerce_cart, commerce, address, entity, inline_entity_form, commerce_price, commerce_store, commerce_order, entity_reference_revisions, profile, state_machine"
                                                                                                                        
 [OK] The following module(s) were installed successfully: "commerce_product, commerce_checkout, commerce_cart,         
      commerce, address, entity, inline_entity_form, commerce_price, commerce_store, commerce_order,                    
      entity_reference_revisions, profile, state_machine"                                                               

 // cache:rebuild
 Rebuilding cache(s), wait a moment please.
 [OK] Done clearing cache(s).

Updaten

Eerst Drupal Commerce updaten

Updaten van Drupal Commerce gaat via:

composer update drupal/commerce --with-dependencies

Daarna de rest updaten

Updaten van de site-als-geheel via Drupal Console ( updaten Drupal Commerce!):

drupal update:debug
drupal update:execute

Installatie additionele modules

Dat gaat op de gebruikelijke manier, lijkt me. Alleen officiele Drupal Commerce modules gaan via Composer. Tot op dit moment nog geen additionele modules geïnstalleerd.

Configuratie Drupal

CKEditor uitzetten

Administration » Configuration » Content authoring » Text format & Editors

Gelukkig: Er worden nu ook geen HTML-tags meer ongevraagd toegevoegd!

Full HTML als standaard instellen (voor admin)

Zelfde link als hierboven: De volgorde aanpassen van de formats.

'Powered by Drupal'-block verwijderen

Gewoon onder Strucure.

Plugin not found-error bij uploaden afbeelding

Foutmelding

Drupal\Component\Plugin\Exception\PluginNotFoundException: 
The "" plugin does not exist. 
in Drupal\Core\Plugin\DefaultPluginManager->doGetDefinition() 
(line 52 of core/lib/Drupal/Component/Plugin/Discovery/DiscoveryTrait.php)

Installatie file_browser

Ik had de indruk dat de installatie van de dev-versie van file_browser zou kunnen helpen. Drie libraries en vijf moduled verder, bleek dat niet het geval te zijn → Al die zooi weer verwijderd.

Overig

  • Clearing cache hielp niet

Oplossing

Wéér had ik van een module de PHP 7.1-versie ipv. de PHP 7.0-versie.

sudo apt-get install php7.0-gd
sudo service apache2 restart

En het probleem was verholpen.

Valuta & store

Valuta

  • Eerst valuta, dan stores
  • Alleen euro

Store

Je moet eerst een store configureren voordat je met producten aan de slag kunt

Producten, variaties & representaties

Er een gelaagd systeem van producten en de weergave daarvan. Enkele termen die zoal een rol spelen:

  • Product type - Waarschijnlijk wat ik P1 noem. Bv. t-shirts
  • Products of product variations - Bv. een fysiek t-shirt met een bepaalde kleur en maat
  • Product attributes - Bv. kleur (rood, zwart), en maat (S, M, L)
  • Purchasable entities - ?
  • Product fields - Los van product attributes, kun je producten opleuken met allerlei velden

Dit systeem heeft iets weg van dat voor DC1 [4]:

  • P1: Commerce ProductProductVariation
  • P2: Product displayProduct

Product attributes

Bij product attributes moet je denken aan bv. verschillende maten of kleuren. Definitie gaat via Admin » Commerce » Product attributes. Product attributes staan in dit stadium helemaal los van producten of wat dan ook. Ze moeten nog gekoppeld worden.

Product attributes: Admin » Commerce » Product attributes: Geen product attributes gedefineerd: Alle producten in deze webwinkel zijn wat dat betreft uniform

Product variation type

Door product attributes te associeren met producten, krijg je product variation types. Ook als je geen gebruik maakt van product attributes, schijn je tenminste één product variation type nodig (we gaan het zien). Je vindt ze onder [5]

Admin » Commerce » Configuration » Product variation types
Product variation type: Admin » Commerce » Configuration » Product variation type: Geen product variation gedefineerd: Ik ben benieuwd of dat geen probleem is

Product types

Naast product variation types heb je ook nog product types. Daar lijk je product variaties te associeren met kale producttypes, en niet bij product variation type ofzoiets. Voor nu geloof ik het wel.

Product Variants

De handleiding legt oa. hier uit, dat je altijd minimaal één productvariant moet defineren.

Met product variant: Illustratie dat je echt minimaal één product variant moet hebben, voor prijs en SKU
Zonder product variant: Commerce » Products: Products zonder product variations of wat dan ook. Kaler dan dit krijg je 't waarschijnlijk niet. Maar zo zonder prijs is wel héél kaal
Met 'reguliere' product variant (1): In dit geval is er één veld toegevoegd, namelijk voor productafbeeldingen. Hier kun je zien dat productvarianten nog het beste overeenkomen met wat ik P2 noemde in DC1: De presentatie van producten (al is presentatie nu niet meer een accurate benaming)
Met 'reguliere' product variant (2): Nu kun je prijzen, SKU en afbeeldingen associëren met producten

P1-definitie aanpassen

Zo uit de doos, is P1 nogal kaal. Onder andere is het wel geinig om 'm op te luisteren met een productafbeelding:

Productafbeeldingen

  • Naam: p1_image
  • Aantal: Onbeperkt.

P.s.: Ik weet niet meer waar ik dit heb gedaan.

Producten

Zo snel je een product type (of zoiets) hebt gedefineerd, kun je producten toevoegen:

Commerce » Products

Foutmelding: Field variations is unknown

Oh oh:

The website encountered an unexpected error. Please try again later.

InvalidArgumentException: Field variations is unknown. 
in Drupal\Core\Entity\ContentEntityBase->getTranslatedField() 
(line 471 of core/lib/Drupal/Core/Entity/ContentEntityBase.php).

Dit lijkt een bug te zijn op het snijvlak van Drupal Commerce en iets met talen. De producten worden wél opgeslagen, maar ik kan ze daarna niet 'gewoon' bekijken. Dus negeren is geen optie. Een mogelijke tijdelijke oplossing: Meertaligheid uitzetten → Producten invoeren → Dan pas iets met meertaligheid doen.

Desalniettemin: Voordat ik deze webshop ontdaan had van allerlei toeters en bellen, deed deze pagina 't wel. In het bijzonder: De handleiding zegt regelmatig (oa. hier dat je minimaal één productvariant nodig hebt.

Manage display (P2)

De presentatie van producten noem ik P2, vanwege de verwarrende naamgeving. Deze kun je op twee plekken aanpassen:

  • Admin » Commerce » Config » Product type
  • Admin » Commerce » Config » Product variation type

Products » Add product

Foutmelding:

RuntimeException: The bcmath extension is required by NumberFormatter. 
in CommerceGuys\Intl\Formatter\NumberFormatter->__construct() 
(line 113 of vendor/commerceguys/intl/src/Formatter/NumberFormatter.php).

Overig

  • In DC2 kun je meerdere stores configureren. Daardoor schijn je marktplaatsen te kunnen bouwen [6]

Bronnen

Plugin not found-error

Field variations-error

Configuratie Drupal Commerce