Drupal
From Wasya Wiki
- A great book: https://drupalatyourfingertips.com
- How to clear cache: /devel/cache/clear
Contents
Install & Configure
composer create-project drupal/recommended-project:9.5.10 html
composer require 'drupal/devel:^5.1' composer require 'drupal/s3fs:^3.3' # composer require 'wasya-co/consent_popup: 1.0.4.x-dev' composer require 'drupal/consent_popup:^1.0' composer require 'drush/drush:^11.6' composer require 'drupal/metatag:^2.0' composer require 'drupal/redirect:^1.9' composer require 'drupal/superfish:^1.6' composer require 'drupal/webform:^6.0' composer require 'drupal/captcha:^1.14' composer require 'drupal/typed_data:^1.0@alpha' composer require 'drupal/rules:^3.0@alpha' composer require 'drupal/smtp:^1.2' composer require 'drupal/hal:^1.0' composer require 'drupal/restui:^1.21' composer require 'drupal/keycloak:^2.2@beta' composer require 'drupal/nodeaccess:^2.0@alpha' composer require 'drupal/backup_migrate:^5.0' composer require 'drupal/email_registration:^2.0@RC' composer require 'drupal/content_access:^2.0' composer require 'drupal/social_media:^2.0' composer require 'drupal/wordpress_migrate:^3.0@alpha' composer require 'drupal/migrate_tools:^6.0' composer require 'drupal/codefilter:^2.0' composer require 'drupal/views_taxonomy_term_name_depth:^7.2' composer require 'drupal/pathauto:^1.12' composer require 'drupal/metatag:^2.0' composer require 'drupal/twig_tweak:^3.3' composer require 'drupal/simplenews:^4.0' # composer require 'drupal/migrate_plus:^6.0' ## didn't need it the second time composer require 'drupal/ctools:^4.0' composer require 'drupal/commerce:^2.40' composer require drupal/inline_entity_form @RC --no-update apt install php-bcmath php8.1-bcmath composer require 'drupal/commerce_stripe:^1.1' composer require 'drupal/linkit:^6.0' composer require 'drupal/redirect_after_login:^3.0' composer require 'drupal/symfony_mailer:^1.4' composer require 'drupal/custom_search:^1.0@beta' composer require 'drupal/fullcalendar_view:^5.2' composer require 'drupal/date_recur:^3.3@RC' composer require 'drupal/date_recur_modular:^3.1' composer require 'drupal/colorbox:2.0.2' composer require 'drupal/tagclouds:^2.0' composer require 'drupal/filelog:^3.0' composer require 'drupal/message:^1.6' composer require 'drupal/flag:^4.0@beta' composer require 'drupal/message_subscribe:^1.4' composer require 'drupal/message_digest:^1.5' composer require 'drupal/message_ui:^1.3' composer require 'drupal/layout_builder_usage_reports:^1.0' composer require 'drupal/views_tree:^2.0@RC' composer require 'drupal/vote_up_down:^1.0@alpha' composer require 'drupal/formblock:^2.0@beta' composer require 'drupal/views_pdf:^3.0@alpha' composer require 'drupal/field_permissions:^1.4' composer require 'drupal/scheduler:^2.2' composer require 'drupal/simplenews_scheduler:^4.0@alpha' composer require 'drupal/insert_view:^2.1' composer require drush/drush composer require 'drupal/keycloak:^1.8' composer require 'drupal/simple_oauth:^5.2' composer require 'drupal/group:^1.6' composer require 'drupal/group_join_link:^1.0' composer require 'drupal/social_auth:^4.1' composer require 'drupal/social_auth_google:^4.0'
evaluating
composer require 'drupal/seo_checklist:^5.2' composer require 'drupal/yoast_seo:^1.9' composer require 'drupal/tvi:^2.0' ## From: https://www.drupal.org/project/tvi composer require 'drupal/advanced_text_formatter:^3.0@RC' composer require 'drupal/token_filter:^2.1' composer require 'drupal/form_mode_control:^2.4' composer require 'drupal/queue_mail:^1.7' composer require 'drupal/googlelogin-googlelogin:^9.5'
not using
# composer require 'drupal/oauth_login_oauth2:^3.0'## not free! very limited.
Setting up dev environment
composer require 'drupal/examples:^4.0'
- From: https://github.com/composer/composer/issues/9393
- From: https://www.drupal.org/docs/develop/automated-testing
- probably not useful: https://www.drupal.org/docs/develop/automated-testing/phpunit-in-drupal/creating-functional-tests-simulated-browser
composer require --dev drupal/core-dev composer require --dev behat/mink jcalderonzumba/mink-phantomjs-driver composer require --dev drupal/core-dev:9.5.11 --with-all-dependencies composer require --dev --no-update symfony/filesystem:4.4.42 composer update -W composer update symfony/filesystem:4.4.42 drush/drush -W composer require --dev drupal/core-dev -W composer require --dev phpspec/prophecy-phpunit:^2
Configure Apache
<Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory>
Configure s3fs
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Statement0", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:ListBucketVersions" ], "Resource": [ "arn:aws:s3:::<ze bucket>" ] }, { "Sid": "Statement1", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObjectVersion", "s3:DeleteObject", "s3:GetObjectVersion", "s3:GetObjectAcl", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::<ze bucket>/*" ] } ] }
Disable caching
From: https://www.drupal.org/docs/develop/development-tools/disable-caching
- Add the settings.local.php and
- Modify development.services.yml:
parameters: http.response.debug_cacheability_headers: true twig.config: debug: true auto_reload: true cache: false services: cache.backend.null: class: Drupal\Core\Cache\NullBackendFactory
ReST
curl --include \ --request POST \ --user admin:<> \ --header 'Content-type: application/hal+json' \ http://pi.local/node?_format=hal_json \ --data-binary '{ "_links": { "type":{"href":"http://pi.local/rest/type/node/article"} }, "title":[{"value":"Node +++ 123 bac +++" }], "body":[{"value": "<b>hello, wor</b>ld!", "format": "full_html" }], "type":[{"target_id":"article"}], "status": [{"value": 1}], "_embedded": { "http://pi.local/rest/relation/node/article/field_issue": [ { "uuid": [{ "value": "56229a95-d675-43e1-99b1-f9e11b5579c5" }] } ], "http://pi.local/rest/relation/node/article/field_tags": [ { "uuid": [{ "value": "45646a7d-1a16-42e8-b758-f6e1c8d976f7" }] }, { "uuid": [{ "value": "834e34e2-05ae-498d-b876-453798872ce1" }] } ] } }'
Default Attachments
txt pdf doc docx html csv xlsx xlsm sh json cer pem pub key png jpg jpeg gif mkv sfv avi mp3 mp4 webm mov zip tar gz
Testing
From: https://www.drupal.org/docs/develop/automated-testing/phpunit-in-drupal/running-phpunit-tests
export PATH="$PATH:/var/www/html/vendor/bin"
DO NOT RUN THIS IN PRODUCTION!
composer require --dev phpunit/phpunit composer require --dev phpunit/phpunit:^9.5 --with-all-dependencies composer require --dev drupal/core-dev composer require --dev behat/mink:1.8.0 --with-all-dependencies composer require --dev symfony/phpunit-bridge composer require --dev phpspec/prophecy-phpunit composer require --dev behat/mink-browserkit-driver composer require --dev drupal/core-dev composer require --dev drupal/core-dev --update-with-all-dependencies
phpunit --testsuite unit --filter CurrentUserBlock ../vendor/bin/phpunit -c ../phpunit.xml modules/ish_drupal_module/tests/src/Functional/CurrentUserBlockTest.php ../vendor/bin/phpunit -c ../phpunit.xml modules/ish_drupal_module/tests/src/Functional/CurrentUserBlockTest.php -v --debug