Installatie Drupal Commerce 2.x - Casus begin 2017

Uit De Vliegende Brigade
Ga naar: navigatie, zoeken

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