Difference between revisions of "Drupal"
(→in review) |
|||
| (151 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 = | ||
composer create-project drupal/recommended-project:9.5.10 html | composer create-project drupal/recommended-project:9.5.10 html | ||
| + | |||
| + | COMPOSER_PROCESS_TIMEOUT=2000 composer install | ||
| + | |||
| + | composer create-project drupal/recommended-project:10.6.7 html | ||
| + | composer update "drupal/core-*" --with-all-dependencies | ||
| + | composer require drupal/core-recommended:10.6.7 drupal/core-composer-scaffold:10.6.7 drupal/core-project-message:10.6.7 --update-with-all-dependencies | ||
| + | composer require drush/drush | ||
| + | composer require drupal/openid_connect:^1.0 | ||
| + | drush cr | ||
composer require 'drupal/devel:^5.1' | composer require 'drupal/devel:^5.1' | ||
| Line 21: | Line 33: | ||
composer require 'drupal/keycloak:^2.2@beta' | composer require 'drupal/keycloak:^2.2@beta' | ||
composer require 'drupal/nodeaccess:^2.0@alpha' | composer require 'drupal/nodeaccess:^2.0@alpha' | ||
| − | |||
composer require 'drupal/email_registration:^2.0@RC' | composer require 'drupal/email_registration:^2.0@RC' | ||
composer require 'drupal/content_access:^2.0' | composer require 'drupal/content_access:^2.0' | ||
composer require 'drupal/social_media:^2.0' | composer require 'drupal/social_media:^2.0' | ||
composer require 'drupal/wordpress_migrate:^3.0@alpha' | composer require 'drupal/wordpress_migrate:^3.0@alpha' | ||
| − | |||
composer require 'drupal/codefilter:^2.0' | composer require 'drupal/codefilter:^2.0' | ||
composer require 'drupal/views_taxonomy_term_name_depth:^7.2' | composer require 'drupal/views_taxonomy_term_name_depth:^7.2' | ||
| − | + | composer require 'drupal/pathauto:^1.12' | |
| − | + | ||
| − | + | ||
composer require 'drupal/twig_tweak:^3.3' | composer require 'drupal/twig_tweak:^3.3' | ||
composer require 'drupal/simplenews:^4.0' | composer require 'drupal/simplenews:^4.0' | ||
| − | |||
composer require 'drupal/ctools:^4.0' | composer require 'drupal/ctools:^4.0' | ||
| − | + | ||
| − | + | composer require 'drupal/commerce:^2.40' ## drupal 9.5 | |
| − | composer require 'drupal/commerce:^2.40' | + | |
composer require drupal/inline_entity_form @RC --no-update | composer require drupal/inline_entity_form @RC --no-update | ||
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_recurring:^1.0@RC' | ||
| + | composer require 'drupal/commerce:^3.3' ## drupal 10 | ||
| + | composer require drupal/inline_entity_form @RC --no-update | ||
| + | composer require 'drupal/commerce_stripe:^2.2' | ||
| + | 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/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/votingapi:^3.0@beta' | ||
| + | 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' | ||
| + | composer require 'drupal/social_auth_facebook:^4.0' | ||
| + | composer require 'drupal/social_auth_linkedin:^4.0' | ||
| + | composer require 'drupal/social_auth_microsoft:^4.0' | ||
| + | composer require 'drupal/twilio:^3.0@alpha' | ||
| + | composer require 'drupal/smssystem:^1.1' | ||
| + | composer require 'drupal/upgrade_status:^4.3' | ||
| + | composer require 'drupal/smsframework:^2.3' | ||
| + | composer require symfony/dom-crawler symfony/css-selector | ||
| + | composer require drupal/markdown | ||
| + | composer require drupal/markdown_easy | ||
| + | composer require 'drupal/crm_core:3.x-dev@dev' | ||
| + | composer require 'drupal/name:^1.0@RC' | ||
| + | composer require 'drupal/dynamic_entity_reference:^2.0@alpha' | ||
| + | composer require 'drupal/default_content:^2.0@beta' | ||
| + | composer require --dev drupal/core-dev | ||
| + | composer require 'drupal/single_content_sync:^1.4' ## yep its this one | ||
| + | # composer require drupal/views_show_more ## I don't use it? | ||
| + | composer require 'drupal/matomo:^2.0@alpha' | ||
| + | composer require 'drupal/paragraphs:^1.20' | ||
| + | composer require drupal/search_api_db | ||
| + | composer require drupal/search_api | ||
| + | composer require 'drupal/entity_usage:^2.0@beta' | ||
| + | composer require drupal/entity_browser | ||
| + | composer require drupal/svg_image_field | ||
| + | composer require 'drupal/admin_toolbar:^3.6' | ||
| + | |||
| + | == evaluating == | ||
| + | |||
| + | composer require 'drupal/seo_checklist:^5.2' | ||
composer require 'drupal/yoast_seo:^1.9' | 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' | ||
| + | composer require 'drupal/dark_mode_toggle:^1.0' | ||
| + | composer require 'drupal/imce:^3.1' | ||
| + | composer require 'drupal/bootstrap_barrio:^5.5' | ||
| − | == | + | == not gonna use == |
| − | + | composer require 'drupal/backup_migrate:^5.1' ## was 5.0 ## so-so, unused | |
| + | composer require 'drupal/migrate_tools:^6.0' ## unused | ||
| + | # composer require 'drupal/migrate_plus:^6.0' ## didn't need it the second time | ||
| − | + | Not gonna use ebt_core, because (1) they have way too many modules, it should have been just one, and (2) their "hero" module doesn't honor container and isn't a hero. | |
| − | + | ||
| − | composer require 'drupal/ | + | # composer require 'drupal/layout_library:^1.0@beta' ## looks poor, just use blocks |
| + | # composer require 'drupal/section_library:^2.0' ## looks poor, just use blocks | ||
| − | == | + | == Upgrade 9 to 10 == |
| − | + | composer require 'drupal/upgrade_status:^4.3' | |
| − | + | composer require drupal/core-recommended:^10 drupal/core-composer-scaffold:^10 drupal/core-project-message:^10 --update-with-all-dependencies | |
| − | + | composer require drupal/core-recommended:10.6.7 drupal/core-composer-scaffold drupal/core-project-message -W | |
| − | + | composer require drupal/typed_data:^2.0 -W | |
| − | + | ||
| − | + | composer update --with-all-dependencies | |
| − | + | ||
| − | + | == 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 s3fs == | == Configure s3fs == | ||
| Line 103: | Line 203: | ||
</pre> | </pre> | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
== Disable caching == | == Disable caching == | ||
| Line 139: | Line 222: | ||
cache.backend.null: | cache.backend.null: | ||
class: Drupal\Core\Cache\NullBackendFactory | class: Drupal\Core\Cache\NullBackendFactory | ||
| + | </pre> | ||
| + | |||
| + | == cleanup template debug == | ||
| + | |||
| + | Use in twig: | ||
| + | |||
| + | <pre> | ||
| + | |preg_replace('/<!--.*?-->/s','')|striptags|replace({"\n":"","\r":"","\t":""}) | ||
</pre> | </pre> | ||
== ReST == | == ReST == | ||
| + | |||
<pre> | <pre> | ||
| Line 171: | Line 263: | ||
</pre> | </pre> | ||
| − | = | + | == 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 | ||
| + | |||
| + | == set password == | ||
| + | |||
| + | drush user:password USERNAME NEW_PASSWORD | ||
| + | |||
| + | == change ownership == | ||
| + | |||
| + | of all simplenews_issue | ||
| + | |||
| + | <pre> | ||
| + | drush php:eval " | ||
| + | \$nids = \Drupal::entityQuery('node') | ||
| + | ->condition('type', 'simplenews_issue') | ||
| + | ->accessCheck(FALSE) | ||
| + | ->execute(); | ||
| + | |||
| + | \$storage = \Drupal::entityTypeManager()->getStorage('node'); | ||
| + | \$nodes = \$storage->loadMultiple(\$nids); | ||
| + | |||
| + | foreach (\$nodes as \$node) { | ||
| + | \$node->setOwnerId(252); | ||
| + | \$node->save(); | ||
| + | } | ||
| + | " | ||
| + | </pre> | ||
| + | |||
| + | of all content with "generated" in title: | ||
| + | |||
| + | <pre> | ||
| + | drush php:eval ' | ||
| + | $nids = \Drupal::entityQuery("node") | ||
| + | ->condition("title", "%enerated%", "LIKE") | ||
| + | ->accessCheck(FALSE) | ||
| + | ->execute(); | ||
| + | |||
| + | $storage = \Drupal::entityTypeManager()->getStorage("node"); | ||
| + | $nodes = $storage->loadMultiple($nids); | ||
| + | |||
| + | foreach ($nodes as $node) { | ||
| + | $node->setOwnerId(129); | ||
| + | $node->save(); | ||
| + | } | ||
| + | |||
| + | print "Updated " . count($nodes) . " nodes\n"; | ||
| + | ' | ||
| + | </pre> | ||
| + | |||
| + | = 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 | ||
| + | |||
| + | = update = | ||
| + | == 10 to 10 == | ||
| + | composer require \ | ||
| + | drupal/core-recommended:10.6.7 \ | ||
| + | drupal/core-composer-scaffold:10.6.7 \ | ||
| + | drupal/core-project-message:10.6.7 \ | ||
| + | --update-with-all-dependencies | ||
Latest revision as of 00:39, 23 April 2026
- 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_PROCESS_TIMEOUT=2000 composer install
composer create-project drupal/recommended-project:10.6.7 html composer update "drupal/core-*" --with-all-dependencies composer require drupal/core-recommended:10.6.7 drupal/core-composer-scaffold:10.6.7 drupal/core-project-message:10.6.7 --update-with-all-dependencies composer require drush/drush composer require drupal/openid_connect:^1.0 drush cr
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/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/codefilter:^2.0' composer require 'drupal/views_taxonomy_term_name_depth:^7.2' composer require 'drupal/pathauto:^1.12' composer require 'drupal/twig_tweak:^3.3' composer require 'drupal/simplenews:^4.0' composer require 'drupal/ctools:^4.0'
composer require 'drupal/commerce:^2.40' ## drupal 9.5 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/commerce:^3.3' ## drupal 10 composer require drupal/inline_entity_form @RC --no-update composer require 'drupal/commerce_stripe:^2.2' 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/votingapi:^3.0@beta' 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' composer require 'drupal/social_auth_facebook:^4.0' composer require 'drupal/social_auth_linkedin:^4.0' composer require 'drupal/social_auth_microsoft:^4.0'
composer require 'drupal/twilio:^3.0@alpha' composer require 'drupal/smssystem:^1.1' composer require 'drupal/upgrade_status:^4.3' composer require 'drupal/smsframework:^2.3' composer require symfony/dom-crawler symfony/css-selector composer require drupal/markdown composer require drupal/markdown_easy composer require 'drupal/crm_core:3.x-dev@dev' composer require 'drupal/name:^1.0@RC' composer require 'drupal/dynamic_entity_reference:^2.0@alpha' composer require 'drupal/default_content:^2.0@beta' composer require --dev drupal/core-dev composer require 'drupal/single_content_sync:^1.4' ## yep its this one # composer require drupal/views_show_more ## I don't use it? composer require 'drupal/matomo:^2.0@alpha' composer require 'drupal/paragraphs:^1.20' composer require drupal/search_api_db composer require drupal/search_api composer require 'drupal/entity_usage:^2.0@beta' composer require drupal/entity_browser composer require drupal/svg_image_field composer require 'drupal/admin_toolbar:^3.6'
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' composer require 'drupal/dark_mode_toggle:^1.0' composer require 'drupal/imce:^3.1' composer require 'drupal/bootstrap_barrio:^5.5'
not gonna use
composer require 'drupal/backup_migrate:^5.1' ## was 5.0 ## so-so, unused composer require 'drupal/migrate_tools:^6.0' ## unused # composer require 'drupal/migrate_plus:^6.0' ## didn't need it the second time
Not gonna use ebt_core, because (1) they have way too many modules, it should have been just one, and (2) their "hero" module doesn't honor container and isn't a hero.
# composer require 'drupal/layout_library:^1.0@beta' ## looks poor, just use blocks # composer require 'drupal/section_library:^2.0' ## looks poor, just use blocks
Upgrade 9 to 10
composer require 'drupal/upgrade_status:^4.3' composer require drupal/core-recommended:^10 drupal/core-composer-scaffold:^10 drupal/core-project-message:^10 --update-with-all-dependencies composer require drupal/core-recommended:10.6.7 drupal/core-composer-scaffold drupal/core-project-message -W composer require drupal/typed_data:^2.0 -W
composer update --with-all-dependencies
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 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
cleanup template debug
Use in twig:
|preg_replace('/<!--.*?-->/s','')|striptags|replace({"\n":"","\r":"","\t":""})
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
set password
drush user:password USERNAME NEW_PASSWORD
change ownership
of all simplenews_issue
drush php:eval "
\$nids = \Drupal::entityQuery('node')
->condition('type', 'simplenews_issue')
->accessCheck(FALSE)
->execute();
\$storage = \Drupal::entityTypeManager()->getStorage('node');
\$nodes = \$storage->loadMultiple(\$nids);
foreach (\$nodes as \$node) {
\$node->setOwnerId(252);
\$node->save();
}
"
of all content with "generated" in title:
drush php:eval '
$nids = \Drupal::entityQuery("node")
->condition("title", "%enerated%", "LIKE")
->accessCheck(FALSE)
->execute();
$storage = \Drupal::entityTypeManager()->getStorage("node");
$nodes = $storage->loadMultiple($nids);
foreach ($nodes as $node) {
$node->setOwnerId(129);
$node->save();
}
print "Updated " . count($nodes) . " nodes\n";
'
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
update
10 to 10
composer require \ drupal/core-recommended:10.6.7 \ drupal/core-composer-scaffold:10.6.7 \ drupal/core-project-message:10.6.7 \ --update-with-all-dependencies