Thanks for working on this @prudloff! It would be really nice to get better Views AJAX caching support.
I guess the expected result after patching is that these:
x-drupal-cache: UNCACHEABLE (no cacheability)
x-drupal-dynamic-cache: UNCACHEABLE (no cacheability)
Change to this?
x-drupal-cache: HIT
x-drupal-dynamic-cache: HIT
To make it clear what to check for after patching, could an "Expected result" be added in the Issue Summary?
It looks like a README has been added, but that the configuration has been moved.
From https://git.drupalcode.org/project/views_ajax_history#installation:
[...] "Advanced" section, select "Views Ajax History" as the pager type.
Correct steps?
Advanced > Other > Use AJAX > AJAX history - Enable Views AJAX history.
Thanks for the patch @guillaumepacilly, I was also seeing lingering config after uninstalling the module:
$ drush config:export --diff
[...]
--- a/tmp/drush_tmp_1759836396_68e4f8ece9956/views.view.map.yml
+++ b/tmp/drush_tmp_1759836397_68e4f8ed39377/views.view.map.yml
@@ -5037,6 +5037,9 @@ display:
metatag_display_extender:
metatags: { }
tokenize: false
+ ajax_history:
+ enable_history: false
+ exclude_args: ''
path: map
menu:
type: none
After patching and uninstalling, the Views AJAX History is no longer present in the exported config.
I have create a GitLab MR based on the patch, maybe someone can verify that it works well? Thanks!
Add tip on how to use variables to translate strings inside {% trans %}
tags.
I was trying to translating strings inside {% trans %} {% plural count %}
Twig tags for Facets Summary with this, and failed:
{% trans %}{{ count }} {{ "municipality"|t }}{% plural count %}{{ count }} {{ "municipalities"|t }}{% endtrans %}
With Twig variables, I could translate the strings first, and then use them inside {% trans %}
like this:
{% set muni = "municipality"|trans %}
{% set munis = "municipalities"|trans %}
{% trans %}{{ count }} {{muni}}{% plural count %}{{ count }} {{munis}}{% endtrans %}
Clarify that the "Deleting a module" should be used when deploying on the server.
Thanks @basvredeling, your comment gave me the hint I needed.
I plan to move from Search API Solr to standard Search API with MariaDB and Redis for caching. But when I indexed nodes with Geodata values with the new Standard DB server, I got errors like this:
search_api_db Warning An overlong value (more than 255 characters) was encountered while indexing:
MULTIPOLYGON (((10.3634 57.3809,10.3599 57.3815,10.3546 57.3813,10.3546
57.3790,10.3495 57.3793,10.3468 57.3757,10.3458 57.3760,10.3465 57.3778,10.3461
57.3785,10.3440 57.3791,10.3440 57.3785,10.3431 57.3774,10.3424 57.3758,10.3414
57.3758,10.3388 57.3761.
Database search servers currently cannot index such values correctly – the value was therefore trimmed to the allowed length.
Under the index I saw this:
Warning message
Some of the used data types aren't supported by the server's backend. See the data types table to find out which types are supported.
Under "Data types", the supported types were listed (Decimal, String, Date, Boolean, Integer, and Fulltext) and then all the unsupported Search API Solr types ...
The Geodata field was set to use "Storage-only", which works only with Solr:
Data Type: Storage-only
Description: A storage-only field. You can store any string and retrieve it from the index but you can't search through it. No
Supported:
Fallback data type: String
After indexing them as Fulltext instead of strings (the fallback data type for Storage-only), all is well, and there are no errors :)
Now, I just wonder ... should Fallback data type for Storage-only be changed from String to Fulltext?
Thanks @berdir for your patience explaining things to me, and a fast and thorough review. I love how I can simplify things, and it was really great for me to be able to use a single settings.redis.php
file, and remove the one from DDEV.
I agree with all your suggestions, and have tried to implement them in the README, and look forward to your feedback.
Thanks for explaining this, it's crucial to do things in the right order, or the system can end up in Limbo, in a half-way state, with lots of errors. I added a new section in https://www.drupal.org/docs/updating-drupal/deploying-a-drupal-update#s-... → .
Add "Create a Sitemap, for example with Simple XML sitemap → ."
Thanks @hosterholz! The patch works well, the warnings are gone, and sorting works as expected, using the module with #3550355: PHP 8.4 compatibility for Search API Sorts Widget → .
I tried Crawler Rate Limit → , and it seems to work really well, so I will use that for now ... #3506542-5: Not always effective, unfortunately →
I finally tried the Crawler Rate Limit → module, and it's a godsend, and currently the ideal solution to block misbehaving bots with, I think.
Anthropic's ClaudeBot and other bots were aggressively pounding my site with multiple requests per second, and this module got them under control. The module is working really well, and the resource usage dropped a lot, like CPU Usage from ~90% to ~10%. For more see #3506542-5: Not always effective, unfortunately → .
My experience with the Crawler Rate Limit module, is that it's quite efficient, and currently the ideal solution to block misbehaving bots with.
Anthropic's ClaudeBot and other bots were aggressively pounding my site with multiple requests per second, and this module got it under control. ClaudeBot seem to have more or less discovered the maximum limit, and now only send a request every fifth second or so.
There are methods in the README to check the log files with:
https://git.drupalcode.org/project/crawler_rate_limit#logging-of-rate-li...
I just installed Crawler Rate Limit, and checked my log files for occurrences of " 429 " with the command below. The module is working really well, as it can be seen (truncated string and anonymized IPs) and the resource usage dropped a lot, like CPU Usage from ~90% to ~10%:
$ tail -n 5000 /var/log/apache2/access.log | grep "\" 429 "
*.*.224.151 - - [05/Oct/2025:13:57:57 +0200] [...] HTTP/1.1" 429
*.*.224.151 - - [05/Oct/2025:13:58:02 +0200] [...] HTTP/1.1" 429
*.*.207.44 - - [05/Oct/2025:14:02:30 +0200] [...] HTTP/1.1" 429
*.*.207.44 - - [05/Oct/2025:14:02:31 +0200] [...] HTTP/1.1" 429
*.*.0.15 - - [05/Oct/2025:14:04:01 +0200] [...] HTTP/1.1" 429
*.*.0.5 - - [05/Oct/2025:14:04:33 +0200] [...] HTTP/1.1" 429
*.*.207.44 - - [05/Oct/2025:14:04:37 +0200] [...] HTTP/1.1" 429
*.*.207.44 - - [05/Oct/2025:14:04:39 +0200] [...] HTTP/1.1" 429
*.*.207.44 - - [05/Oct/2025:14:04:42 +0200] [...] HTTP/1.1" 429
*.*.0.46 - - [05/Oct/2025:14:07:47 +0200] [...] HTTP/1.1" 429
*.*.0.29 - - [05/Oct/2025:14:08:19 +0200] [...] HTTP/1.1" 429
*.*.207.44 - - [05/Oct/2025:14:09:55 +0200] [...] HTTP/1.1" 429
*.*.207.44 - - [05/Oct/2025:14:09:56 +0200] [...] HTTP/1.1" 429
*.*.0.25 - - [05/Oct/2025:14:11:27 +0200] [...] HTTP/1.1" 429
*.*.0.3 - - [05/Oct/2025:14:11:59 +0200] [...] HTTP/1.1" 429
*.*.207.44 - - [05/Oct/2025:14:12:02 +0200] [...] HTTP/1.1" 429
*.*.207.44 - - [05/Oct/2025:14:12:04 +0200] [...] HTTP/1.1" 429
*.*.207.44 - - [05/Oct/2025:14:12:07 +0200] [...] HTTP/1.1" 429
*.*.0.6 - - [05/Oct/2025:14:15:08 +0200] [...] HTTP/1.1" 429
*.*.0.31 - - [05/Oct/2025:14:15:40 +0200] [...] HTTP/1.1" 429
*.*.207.44 - - [05/Oct/2025:14:17:17 +0200] [...] HTTP/1.1" 429
*.*.207.44 - - [05/Oct/2025:14:17:18 +0200] [...] HTTP/1.1" 429
*.*.0.10 - - [05/Oct/2025:14:18:18 +0200] [...] HTTP/1.1" 429
*.*.0.15 - - [05/Oct/2025:14:18:50 +0200] [...] HTTP/1.1" 429
*.*.207.44 - - [05/Oct/2025:14:19:19 +0200] [...] HTTP/1.1" 429
*.*.207.44 - - [05/Oct/2025:14:19:20 +0200] [...] HTTP/1.1" 429
*.*.207.44 - - [05/Oct/2025:14:19:24 +0200] [...] HTTP/1.1" 429
*.*.224.151 - - [05/Oct/2025:14:19:51 +0200] [...] HTTP/1.1" 429
*.*.224.151 - - [05/Oct/2025:14:20:12 +0200] [...] HTTP/1.1" 429
*.*.224.151 - - [05/Oct/2025:14:20:19 +0200] [...] HTTP/1.1" 429
*.*.224.151 - - [05/Oct/2025:14:20:25 +0200] [...] HTTP/1.1" 429
*.*.224.151 - - [05/Oct/2025:14:20:30 +0200] [...] HTTP/1.1" 429
*.*.224.151 - - [05/Oct/2025:14:21:02 +0200] [...] HTTP/1.1" 429
*.*.224.151 - - [05/Oct/2025:14:21:06 +0200] [...] HTTP/1.1" 429
*.*.224.151 - - [05/Oct/2025:14:21:06 +0200] [...] HTTP/1.1" 429
*.*.224.151 - - [05/Oct/2025:14:21:37 +0200] [...] HTTP/1.1" 429
*.*.0.3 - - [05/Oct/2025:14:21:59 +0200] [...] HTTP/1.1" 429
*.*.224.151 - - [05/Oct/2025:14:22:13 +0200] [...] HTTP/1.1" 429
*.*.0.53 - - [05/Oct/2025:14:22:31 +0200] [...] HTTP/1.1" 429
*.*.207.44 - - [05/Oct/2025:14:24:46 +0200] [...] HTTP/1.1" 429
*.*.207.44 - - [05/Oct/2025:14:24:47 +0200] [...] HTTP/1.1" 429
*.*.207.44 - - [05/Oct/2025:14:24:51 +0200] [...] HTTP/1.1" 429
*.*.207.44 - - [05/Oct/2025:14:25:01 +0200] [...] HTTP/1.1" 429
*.*.0.49 - - [05/Oct/2025:14:25:40 +0200] [...] HTTP/1.1" 429
*.*.0.29 - - [05/Oct/2025:14:26:12 +0200] [...] HTTP/1.1" 429
*.*.216.85 - - [05/Oct/2025:14:27:12 +0200] [...] HTTP/1.1" 429
*.*.216.85 - - [05/Oct/2025:14:27:13 +0200] [...] HTTP/1.1" 429
*.*.216.85 - - [05/Oct/2025:14:27:14 +0200] [...] HTTP/1.1" 429
*.*.216.85 - - [05/Oct/2025:14:27:14 +0200] [...] HTTP/1.1" 429
*.*.216.85 - - [05/Oct/2025:14:27:15 +0200] [...] HTTP/1.1" 429
*.*.216.85 - - [05/Oct/2025:14:27:15 +0200] [...] HTTP/1.1" 429
*.*.216.85 - - [05/Oct/2025:14:27:16 +0200] [...] HTTP/1.1" 429
*.*.216.85 - - [05/Oct/2025:14:27:16 +0200] [...] HTTP/1.1" 429
*.*.216.85 - - [05/Oct/2025:14:27:17 +0200] [...] HTTP/1.1" 429
*.*.216.85 - - [05/Oct/2025:14:27:17 +0200] [...] HTTP/1.1" 429
*.*.216.85 - - [05/Oct/2025:14:27:18 +0200] [...] HTTP/1.1" 429
*.*.216.85 - - [05/Oct/2025:14:27:18 +0200] [...] HTTP/1.1" 429
*.*.216.85 - - [05/Oct/2025:14:27:23 +0200] [...] HTTP/1.1" 429
*.*.0.49 - - [05/Oct/2025:14:28:50 +0200] [...] HTTP/1.1" 429
*.*.0.11 - - [05/Oct/2025:14:29:23 +0200] [...] HTTP/1.1" 429
*.*.0.43 - - [05/Oct/2025:14:32:31 +0200] [...] HTTP/1.1" 429
*.*.0.32 - - [05/Oct/2025:14:33:03 +0200] [...] HTTP/1.1" 429
*.*.207.44 - - [05/Oct/2025:14:35:54 +0200] [...] HTTP/1.1" 429
*.*.207.44 - - [05/Oct/2025:14:35:56 +0200] [...] HTTP/1.1" 429
*.*.0.2 - - [05/Oct/2025:14:36:13 +0200] [...] HTTP/1.1" 429
*.*.0.70 - - [05/Oct/2025:14:36:45 +0200] [...] HTTP/1.1" 429
*.*.207.44 - - [05/Oct/2025:14:37:58 +0200] [...] HTTP/1.1" 429
*.*.207.44 - - [05/Oct/2025:14:37:59 +0200] [...] HTTP/1.1" 429
*.*.207.44 - - [05/Oct/2025:14:38:02 +0200] [...] HTTP/1.1" 429
*.*.0.8 - - [05/Oct/2025:14:39:23 +0200] [...] HTTP/1.1" 429
*.*.0.29 - - [05/Oct/2025:14:39:56 +0200] [...] HTTP/1.1" 429
*.*.0.18 - - [05/Oct/2025:14:42:37 +0200] [...] HTTP/1.1" 429
*.*.0.7 - - [05/Oct/2025:14:43:10 +0200] [...] HTTP/1.1" 429
*.*.207.44 - - [05/Oct/2025:14:43:10 +0200] [...] HTTP/1.1" 429
*.*.207.44 - - [05/Oct/2025:14:43:12 +0200] [...] HTTP/1.1" 429
*.*.207.44 - - [05/Oct/2025:14:45:12 +0200] [...] HTTP/1.1" 429
*.*.207.44 - - [05/Oct/2025:14:45:13 +0200] [...] HTTP/1.1" 429
*.*.207.44 - - [05/Oct/2025:14:45:17 +0200] [...] HTTP/1.1" 429
*.*.0.63 - - [05/Oct/2025:14:46:22 +0200] [...] HTTP/1.1" 429
*.*.0.55 - - [05/Oct/2025:14:46:54 +0200] [...] HTTP/1.1" 429
*.*.0.50 - - [05/Oct/2025:14:50:03 +0200] [...] HTTP/1.1" 429
*.*.207.44 - - [05/Oct/2025:14:50:25 +0200] [...] HTTP/1.1" 429
*.*.207.44 - - [05/Oct/2025:14:50:27 +0200] [...] HTTP/1.1" 429
*.*.207.44 - - [05/Oct/2025:14:50:31 +0200] [...] HTTP/1.1" 429
*.*.0.8 - - [05/Oct/2025:14:50:35 +0200] [...] HTTP/1.1" 429
*.*.0.56 - - [05/Oct/2025:14:53:42 +0200] [...] HTTP/1.1" 429
*.*.0.49 - - [05/Oct/2025:14:54:14 +0200] [...] HTTP/1.1" 429
In a more recent issue, a Drush command is discussed, so perhaps this issue is outdated? Feel free to re-open if not :)
Thanks @nick_schuch and @darvanen for sharing your solutions. They would be ideal candidates for a documentation page or blog post, briefly outlining the set up :)
+1 for a Drush command. I tried the Drush command from comment #23 ✨ Drupal cache clear also clearing Redis Active and that works well, and would be a nice improvement.
Should it be added in a new branch here, or perhaps in a fresh issue?
I added a new Clear caches and disable snapshots section and some parts are not Drupal specific ... but would it be all right to include them? I think it can help new users.
Or it could be added under a new https://www.drupal.org/docs/extending-drupal/contributed-modules/redis → documentation Guide -- though having documentation in one place, in GitLab README's is also nice.
Clear Redis cache
In case anyone finds this page, and needs to quickly free Redis memory up, the redis-cli flushall
command clears Redis caches, or use Drush:
drush php:eval "\Drupal::service('redis.factory')->getClient()->flushAll()"
Remove RDB files
If the /var/lib/redis/
folder is getting filled up with Redis snapshot RDB-files á la temp-71579.rdb
, you can delete them:
rm /var/lib/redis/temp-*
Disable RDB-snapshots
To disable RDB-snapshots, append save ""
last in the Redis config file /etc/redis/redis.conf
and restart with sudo systemctl restart redis
.
See https://www.bestonlinetutorial.com/redis/misconf-redis-is-configured-to-... and Redis persistence for more.
For a Drupal solution, see ✨ Drupal cache clear also clearing Redis Active and 🐛 Currently Drush Cr or Cache Clear UI does not flush Redis cache Fixed .
Updating author of article from @smustgrave to the correct @capellic.
I have now gone through the Debian server part, and it's ready for a review.
Rebased patch for the new dev-release.
This patch still works well, and I have updated the Issue Summary, adding "Rebase" and "Writing regression test" under "Remaining tasks" :)
Adding database export files such as db.sql and db.sql.gz, for example created by Drush or DDEV.
ADMINS: Please remove user https://www.drupal.org/u/yolandasmith →
It's a spam account:
<code><p>Hey I was just checking out CSS4Hosting's <a href="https://arzhost.com/dedicated-servers/" rel="nofollow">dedicated server plans</a>. They offer both Linux and Windows options, which is pretty cool. Has anyone here used their services? I'm curious about their performance and support. Also, does anyone know if they provide server management or is it more of a self-managed setup? Appreciate any insights!</p></code>
From https://www.drupal.org/project/get_server/issues/2352559#comment-16291805 📌 Dedicated Server Hosting Company in India: CSS4Hosting Active
This looks like spam:
<p>Hey I was just checking out CSS4Hosting's <a href="https://arzhost.com/dedicated-servers/" rel="nofollow">dedicated server plans</a>. They offer both Linux and Windows options, which is pretty cool. Has anyone here used their services? I'm curious about their performance and support. Also, does anyone know if they provide server management or is it more of a self-managed setup? Appreciate any insights!</p>
It looks like a new line was added in https://git.drupalcode.org/project/drupal/-/blob/11.x/core/modules/views... and I tried naively to add it. That didn't work ...
You're welcome, and I agree 100% -- end users are very important -- such as here in Drupal, where it would be site builders. After all, it's the LEGO-like quality of Drupal which is its super power, allowing non-coders to build amazing web sites.
And even as a non-developer, you can make improvements in Drupal: Simply get an idea, create an issue, and help it reach completion, like these. I didn't code it, but just gave feedback as good as I could:
This is still an issue, two and a half years later :)
I have no suggestions about a solution, but will just thank you for creating the issue 🐛 Break of functionality/theming of uploaded image files preview through file upload widget when one of them does not comply to the set requirements Active , since that's the only way to fix things that don't work in Drupal, in the end.
Moving fixed issues under a Fixed: header:
Nice @dydave, thanks! Great to see the test coverage is steadily improving and expanding, and that we are closer to be able to start refactoring of the admin_toolbar_search
module 🙂
As always, thanks for the positive energy and great feedback, I very much appreciate it!
You're welcome @dydave, I am glad I could help! I'll do my best to keep the same testing protocol in future tickets.
It sounds complicated with PHPSTAN ... the automated tools work great, until the complexity gets too much, it seems 😅 But great that you found a solution, and thanks for diligently documenting the choices and problems in this issue in text and feedback from the tools -- it might come in handy later, since there is now some background.
And a good plan to take care of assertMenuHasHref
in the admin_toolbar_search
module's tests in a future revamp of the tests, that makes a lot of sense. Thanks @dydave for your always positive approach and thorough feedback, it boosts the motivation to contribute more to Drupal a lot.
Thanks for sharing the link to that issue @mlncn, and yes -- the question is for us users -- what to do, eventually? Will someone else take over maintenance of this module, or will there be an upgrade path to a successor? The addition one or more co-maintainers would be reassuring.
Luckily, 2028 is still in the distant future :)
You're welcome @dirke, I am glad that it was useful! I would think that installing Composer will be a breeze for you, with your technical skill levels, since you are experienced with Linux and the command line.
Could 2.x be made the default version on Gitlab? Also, please see 💬 Is this usable with drupal 11 Active .
Update title, update example to $this->t('Reset your password')
.
Remove mention of field names, add steps to reproduce.
Update "Alternative solution: Make configuration elements translatable", remove field names.
Remove Field labels in edit form via form-element-label.html.twig
since that seems to work fine. Update to use Oliver template files as examples.
In my case, it was because the blocks were from a View, and they are considered configuration, see #3549927: Streamline translation of block titles, field names and menu titles: Allow Interface Translation → .
On a related note, some block titles and menu items are translatable, and some are not (Views block title, custom menu items) and it's not clear why ... I created #3549927: Streamline translation of block titles, field names and menu titles: Allow Interface Translation → .
Fix typo, and clarify that "Some strings, such as Views block titles, field names, and custom menu titles are considered configuration elements, and are not translatable via Interface Translation → ."
Update "Alternative solution: Make configuration elements translatable" after clarifying which elements are considered configuration.
Clarify that it is only some strings, such as Views generated block titles, field names, and menu titles that are considered configuration elements, and not translatable via Interface Translation → under "Alternative solution: Make configuration elements translatable".
Thanks for the feedback @itamair, and evaluating if it's realistic to add these features. Let's see if someone eventually have time to take a stab at building it.
I am adding the last suggestion "Add support for multiple Data Source Fields?" in the Issue Summary as well, to gather everything in one place.
Thanks for adding this feature @itamair, and also for including an image -- I am inserting it in the Issue Summary.
This situation is often a bump in the road of module maintenance:
Allow GitLab Member with "Developer"-role to set default version?
Oftentimes, a GitLab Member with "Developer"-role in a project want to, but cannot update the default version on GitLab. Only a Member with "Maintainer"-role can do that. It could be considered to allow a GitLab Member with "Developer"-role in a project to set GitLab default version, though there are also arguments against relaxing this permission.
From ✨ Gently nudge project managers to update default GitLab, when relevant Active .
And I agree with @ivnish, that you could consider requesting Maintainer role (or ownership) @damienmckenna?
It seems fragile that such a popular project as Metatag ("356,293 sites report using this module") to have this high a bus factor ...
Hi @dydave, sorry about these two test issues taking so long for me to look at ... I am really out of my depth here, so I created a documentation issue Add Functional test example in README #71 for DDEV Selenium Standalone Chrome to help my present and future self gain a better understanding, and faster set up, but forgot to return to the test issues here ...
I have now attempted to check the tests, and hope it's useful? If not, let me know, and I'll have another go at it!
Thanks again @dydave for the continued test updates, I really appreciate it!
I applied the patch, and the functions assertAdminToolbarMenuLinkExists
and assertAdminToolbarMenuLinkNotExists
are used in the assertions in tests/src/Functional/AdminToolbarToolsSortTest.php
where menu items are created an deleted as expected.
I verified that assertAdminToolbarMenuLinkExists
and assertAdminToolbarMenuLinkNotExists
work, by running them before the menu or content entity bundle are added or removed, and the test failed, as expected.
I stepped through the HTML output, and checked the menus in GUI and source as well, and the elements are present, and not, as expected.
It's great to have a global method to check links :)
As a follow up, should the remaining assertMenuHasHref
be switched to use this new solution?
$ grep -rinoE '.{0,10}assertMenu.{0,10}' .
./admin_toolbar_search/tests/src/FunctionalJavascript/AdminToolbarSearchTestBase.php:186: function assertMenuHasHref($u
./admin_toolbar_search/tests/src/FunctionalJavascript/AdminToolbarSearchTestBase.php:202: function assertMenuDoesNotHav
./admin_toolbar_search/tests/src/FunctionalJavascript/AdminToolbarToolsSearchTest.php:169: $this->assertMenuDoesNotHav
./admin_toolbar_search/tests/src/FunctionalJavascript/AdminToolbarToolsSearchTest.php:173: $this->assertMenuHasHref('/
Hi @dydave, thanks for updating the tests! It is often one of those tasks that can linger for a long time, so getting them in tip top shape is great :)
I applied the patch, and verified that the assertions in the functions below are valid and succeed:
testAdminToolbarSearchSettingsForm
testAdminToolbarToolsSettingsForm
testAdminToolbarToolsToolbarController
I then changed the asserted result string, and they failed as expected. I also stepped through the HTML output pages in /simpletest/browser_output/Drupal_Tests_admin_toolbar_tools_Functional_AdminToolbarToolsToolbarControllerTest-110-[...]
to verify the output.
Everything seems to work as expected (though I can't comment on the methods ...) and looks RTBC.
That looks like a really useful, I am subscribed, and will try it out, when something is ready.
With the great module Field Updater Service → , you can copy values from one field to another with ease. Sometimes moving data can be necessary, but writing a Migration seems like too much work ... and this module solves that elegantly.
The instructions on the project page makes the process look daunting -- especially for non-coders, this is just a scary sentence:
Copy example update hook from drush result to your own custom module's .install file [...]
... but in reality, a custom module is not needed, and at its most basic, it's pretty simple:
- Add a new field updater at /admin/config/field-updater
- Select: Entity type, Bundle, and Target field
- Save the form, and map the source field
- Run
drush field-updater:update
to copy the content - Enter field updater number (#), and type "yes" when prompted
From 📌 List all steps in the Quick start to clarify the process Active .
Thanks @apmsooner! I appreciate your openness to change.
While you were updating, I simplified the Quick Start even more.
I still am a firm believer, that there should be a Quick Start, to allow new users to quickly try this great module, and then the detailed method, with bells and whistles listed below.
Also, please remember that there are many non-enterprise Drupal site builders out there, who have no clue how to run update_hooks, but just want to copy some content from one field to another.
I'll update the Issue Summary as I envision it.
Heh, yes I am still on Drupal 10, since the EOL is in the distant future ( Dec 2026) → , and there is nothing I really need from Drupal 11 ...
The new features sound interesting, and I am very much looking forward to seeing them! It's too bad we can't subscribe to new releases (see #1434450: Add the ability to follow projects like we follow issues → ) to get an email alert.
I just had a chance to re-visit this awesome module, and it's an amazing tool, if you need to quickly copy content between fields.
I still stand by my Quick Start philosophy above:
A "Quick Start" should be exactly that, listing the minimum required steps, to complete a task.
... and I have updated my suggestion for a minimal Quick Start in the Issue Summary.
It truly is a shame, that it seems very complicated to use this module, when it's really quite simple ...
PS. I think documentation should always use complete commands (i.e. drush field-updater:update
) and not abbreviations, since they have no meaning to new users.
Hi @apmsooner’s, and thanks for the tip, it sounds great that the UI has been improved in the new version 4. I just tried it, and I agree that the new more standardized method of showing the field settings collapsed below, under the "Field settings" Fieldset label when you create a new Custom field is more aligned with standard Drupal UI, and a clear improvement.
About 4.x being the recommended version ... if I run composer require drupal/custom_field
, I get version 3, so version 4-rc2 is not quite the recommended release, officially at least :)
Also, perhaps you could consider adding a "Version 4" section on the project page, briefly describing the changes from version 3 -- or it could be added in the release notes, when https://www.drupal.org/project/custom_field/releases/4.0.0 → is released? Thanks!
It sounds great that you found a solution!
I am still not sure how this can be accomplished ... But it may not be a rare use case, so if you have time, it would be awesome if you listed the steps to build this, and maybe a screen dump of how it works in reality? This looks like a D7 doc page, I am not sure where a Drupal 11 version should be placed?
Or if you find an article or tutorial which is close enough, feel free to share it here. Thanks!
I think you need to be more specific, this is too vague:
On one field I want to have selection from limited range
Like, how is that supposed to happen?
Perfect, thanks @stefan lehmann!
At some point since I created 📌 Replace string override example '@count min' => '@count minutes', Active back in May 2023, the original string was removed ... so I added a new example string, more likely to stay ("Add content") -- feel free to review :)
Updating to a new string example, since the old one was removed at some point :)
Thanks @stefan lehmann, I also did a few minor tweaks, since the string example is no longer there :)
I added it now, but at the very top ... Do you think it's too much? From my perspective, it's always about giving new users a head start, the experienced Redis user can always scroll further down. And with that though, I added a table of contents, to help make it clearer, which information is available in the README ... I also streamlined the format, to align a bit more with the README template.
I haven't yet tested the Debian-flavor server set up part, but will do that and change to "Needs review" as soon as I have.
I see, thanks for clarifying, I greatly appreciate it! I only skimmed that file quickly, and the content didn't look like something I could paste into a settings.php file ... But having now read it, and glanced over the README.md also, I got a better understanding, and got it -- it should be copy-pasted "as is", and I updated the proposed text in the Issue Summary.
I envision this to be a Quick Start style section, to get new users started quickly, so they can take a deeper dive afterwards, for more options.
Thanks for a fast and positive reply, that sounds great.
With "The default/example configuration", do you mean this file, or is it another one?
https://git.drupalcode.org/project/redis/-/blob/2.x/settings.redis.examp...
Because if that's the one, it's not clear which parts are necessary, and which are not ... I envision having a simple chunk of settings (as in the proposal) which can be copy-pasted. But of course, the settings.redis.example.php
file should certainly be linked to, for details.
Add extra steps under "Performance" and "Backups, Maintenance and Monitoring", and new "SEO & Indexing" section.
Maybe creating a Dynamic/Virtual field value using computed field property classes could work?
Hi @dirke, if there's SSH access, then you should be able to install Composer, see https://getcomposer.org/doc/00-intro.md#installation-linux-unix-macos.
The official docs use the path /usr/local/bin/composer
not always accessible to the regular user ... but also mention this:
If you like to install it only for your user and avoid requiring root permissions, you can use
~/.local/bin
instead which is available by default on some Linux distributions.
Something like this may work for you? Check which paths are registered (username
is your user on the server) with this:
$ echo $PATH
/home/username/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/snap/bin:./vendor/bin
Create folder, download, make executable:
mkdir /home/username/.local/bin
cd /home/username/.local/bin
wget https://getcomposer.org/download/latest-stable/composer.phar -O composer
chmod a+rx composer
Check:
$ whereis composer
composer: /home/username/.local/bin/composer
Many shared hosting providers -- also very inexpensive ones at around $3 per month -- provide secure remote access via SSH, so that you can use the command line for easier site administration.
See these articles, for some of these cheap web hotels, offering SSH access:
- https://www.websiteplanet.com/blog/best-ssh-access-hosts/
- https://b2evolution.net/web-hosting/ssh-hosting-secure-shell-access.php
I would steer clear in 2025 of web hotels without SSH and Composer, and see it as a red flag.
@stefan lehmann: Yes, there were Composer growing pains in the beginning. It could be very slow, and sometimes faulty. I hoped to use Drush Make forever, but also now really appreciate how Composer manages the dependencies, usually efficient and fast.
Though, some think that Package Managers are Evil ...
Thanks for a fast answer.
I agree that it's up to the user to decide -- but they need a basis to make a decision upon, and the current description doesn't give that to a user who is evaluating whether to use one or the other.
The sentence you shared could be useful, expanded a bit, and added on the project page?
Bootstrap → has long legacy and very long turn around for new version of Bootstrap. We pledge to support Bootstrap 6 when it's officially released.
This can be a major factor when deciding whether to use one or the other, I assume you agree.
That made me wonder ... will bootstrap5 → support Bootstrap 6 (see Bootstrap 6 release date #40572) or live under https://www.drupal.org/project/bootstrap6 → ? :)
I just checked the doc pages linked to from above, and it looks like only these two pages are not in the menu:
Thanks for the link to the Override strings in the interface without using full translation system → @stefan lehmann, I forgot I created it a while ago ( #3361659-3: Replace string override example '@count min' => '@count minutes', → ).
If you think it looks good, feel free to change status to "No known problems". The structure of the documentation page system means that new pages can go unreviewed or not get added in the menu, for some time.