UltraBob's learning journal

This website is eventually going to be a place for me to chronicle what I'm learning day-to-day, while at the same time reacquainting me more intimately with drupal. Whether I'm learning something for the first time or reviewing it to get a quick refresher, I'll try to look at things with a fresh eye, and write about them as if I am just learning them. It is my hope that this will make it more likely to be useful to you somewhere down the line.

Traefik proxied gunicorn/uvicorn python service with static files served by nginx

As a personal project, I developed a little python web app, and launched it to a few friends and family. It immediately became clear that the static files was slowing everything down. I probably could have fixed this problem through use of async, and I'll probably go back and do that anyway, but I wanted to understand more about how to use traefik effectively. I tried and failed several times to add an nginx service to it, and when I looked around for examples of how other people did it, I couldn't find a single example.

Recovering from a gitlab MR patch link rebase on a Drupal issue

Let me first preface this by saying that, as documented here, you should not put a gitlab MR patch link directly into your compose.json file. Instead you should download the patch file, and inlude it locally. Otherwise the patch is likely to change our from under you when the MR gets rebased onto another branch.

How to log into Wordpress with Python, BeautifulSoup, and httpx

The key to logging into wordpress programmatically, at least the one I was working on, seemed to be havng a cookie that gets set on first visit to the page, along with the nonce (This is likely not always required. I see it as being set by woocommerce) set as a hidden value in the login form.

This may be standard behavior or it may be a plugin called Snow Monkey Forms (I see a cookie set by that).

Drupal 8/9: Getting an array of target_ids from a multi-entry entity reference field

$target_ids = array_column($entity->field_name->getValue(), 'target_id);

Adding a tika-server in DDEV

I needed to make a local backup of an old Drupal 7 site that has been upgraded to Drupal 8. The site used search_api_solr with Solr 5 and search_api_attachments with a local tika jar file installed to do the extraction. After going through the history in github to find a suitable docker-compose.solr.yaml for solr 5, and getting that setup, I realized that the attachment extraction wasn't working because I no longer had a local tika install to work with.

Ajax form notes

The #ajax['wrapper'] property includes the HTML ID of a page section that should be replaced (or altered in some other way).

The #ajax['callback'] tells the Form system what callback should be called after the Ajax call happens and the form is rebuilt.

SimpleTest example module notes

The project I'm working on nicely manages to involve segments of drupal that I didn't learn as much about with the last project. I'm going back and working through the relevant submodules of the examples module to try to get a clear understanding of the drupalish way to handle things. The first thing on my list is simpletest. This is something I could/should have learned for the last project, but I had so much going on that I never got to it. It probably would have saved me time if I'd been disciplined, so I'll try to be more test-driven this time.

Fun with CSS child-selectors, making a comma separated series with oxford commas

This all started with a question on Drupal Answers in which I was trying to figure out how to manipulate the render array of paragraphs module output to turn it into a comma separated list of field content.

It turned into a fun exploration of css selectors that I haven't messed with in a long time. Here is a jsfiddle for you to follow along with.

Field Collection: multi-entry, add another item takes forever SOLVED

Now that I've managed to track down the patch for this issue I realize that I probably wasted a lot of time trying to find alternatives to field collections, and even making a start on my own compound field type.


Subscribe to UltraBob's Learning Journal RSS