Difference between revisions of "Drupal"
From Wasya Wiki
(→Install & Configure) |
|||
(35 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | + | ||
− | + | * A great book: https://drupalatyourfingertips.com | |
− | * | + | * How to clear cache: /devel/cache/clear |
− | + | ||
− | * | + | |
= Install & Configure = | = Install & Configure = | ||
Line 44: | Line 42: | ||
apt install php-bcmath php8.1-bcmath | apt install php-bcmath php8.1-bcmath | ||
composer require 'drupal/commerce_stripe:^1.1' | composer require 'drupal/commerce_stripe:^1.1' | ||
+ | composer require 'drupal/commerce_recurring:^1.0@RC' | ||
composer require 'drupal/linkit:^6.0' | composer require 'drupal/linkit:^6.0' | ||
composer require 'drupal/redirect_after_login:^3.0' | composer require 'drupal/redirect_after_login:^3.0' | ||
composer require 'drupal/symfony_mailer:^1.4' | composer require 'drupal/symfony_mailer:^1.4' | ||
composer require 'drupal/custom_search:^1.0@beta' | composer require 'drupal/custom_search:^1.0@beta' | ||
− | composer require 'drupal/fullcalendar_view:^5.2' | + | composer require 'drupal/fullcalendar_view:^5.2' |
composer require 'drupal/date_recur:^3.3@RC' | composer require 'drupal/date_recur:^3.3@RC' | ||
composer require 'drupal/date_recur_modular:^3.1' | composer require 'drupal/date_recur_modular:^3.1' | ||
Line 64: | Line 63: | ||
composer require 'drupal/formblock:^2.0@beta' | composer require 'drupal/formblock:^2.0@beta' | ||
composer require 'drupal/views_pdf:^3.0@alpha' | composer require 'drupal/views_pdf:^3.0@alpha' | ||
− | |||
composer require 'drupal/field_permissions:^1.4' | 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 'drupal/ | + | 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 | + | composer require 'drupal/social_auth_google:^4.0' |
− | composer require | + | |
− | composer require | + | |
− | composer require | + | |
− | + | ||
− | + | ||
− | composer require | + | |
− | + | ||
== evaluating == | == evaluating == | ||
Line 93: | Line 85: | ||
composer require 'drupal/form_mode_control:^2.4' | composer require 'drupal/form_mode_control:^2.4' | ||
composer require 'drupal/queue_mail:^1.7' | 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 | + | * 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 --no-update symfony/filesystem:4.4.42 | ||
+ | composer require --dev drupal/core-dev:9.5.11 --with-all-dependencies | ||
+ | composer require --dev behat/mink jcalderonzumba/mink-phantomjs-driver | ||
+ | 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 | ||
+ | |||
+ | |||
+ | Not useful: | ||
+ | |||
+ | composer require 'drupal/examples:^4.0' | ||
== Configure Apache == | == Configure Apache == | ||
Line 152: | Line 158: | ||
</pre> | </pre> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Disable caching == | == Disable caching == | ||
Line 221: | Line 210: | ||
== Default Attachments == | == Default Attachments == | ||
− | txt pdf png jpg jpeg gif mp3 mp4 webm mov zip tar gz | + | txt pdf doc docx html csv xlsx xlsm sh json svg |
+ | cer pem pub key kdbx | ||
+ | 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 | ||
+ | |||
+ | For me, in my drupal images and containers, drupal is installed in the following folder, which is also my workdir: | ||
+ | |||
+ | WORKDIR /var/www/html | ||
+ | |||
+ | The below is optional, I call the specific phpunit executable every time: | ||
+ | |||
+ | export PATH="$PATH:/var/www/html/vendor/bin" | ||
+ | |||
+ | You need to change minimum stability to "dev" for the testing libraries to be loaded. | ||
+ | |||
+ | DO NOT RUN THIS IN PRODUCTION! | ||
+ | |||
+ | composer require --dev phpunit/phpunit # trash | ||
+ | composer require --dev phpunit/phpunit:^9.5 --with-all-dependencies | ||
+ | composer require --dev drupal/core-dev | ||
+ | composer require --dev drupal/core-dev --update-with-all-dependencies # trash | ||
+ | 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 | ||
+ | |||
+ | Copy and configure phpunit.xml: | ||
− | + | phpunit --testsuite unit --filter CurrentUserBlock # trash? | |
− | + | cd /var/www/html | |
− | + | ../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 | |
− | + |
Latest revision as of 15:51, 3 October 2025
- 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/commerce_recurring:^1.0@RC' 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
- 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 --no-update symfony/filesystem:4.4.42 composer require --dev drupal/core-dev:9.5.11 --with-all-dependencies composer require --dev behat/mink jcalderonzumba/mink-phantomjs-driver 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
Not useful:
composer require 'drupal/examples:^4.0'
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 svg cer pem pub key kdbx 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
For me, in my drupal images and containers, drupal is installed in the following folder, which is also my workdir:
WORKDIR /var/www/html
The below is optional, I call the specific phpunit executable every time:
export PATH="$PATH:/var/www/html/vendor/bin"
You need to change minimum stability to "dev" for the testing libraries to be loaded.
DO NOT RUN THIS IN PRODUCTION!
composer require --dev phpunit/phpunit # trash composer require --dev phpunit/phpunit:^9.5 --with-all-dependencies composer require --dev drupal/core-dev composer require --dev drupal/core-dev --update-with-all-dependencies # trash 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
Copy and configure phpunit.xml:
phpunit --testsuite unit --filter CurrentUserBlock # trash? cd /var/www/html ../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