Skip to content
Menu
Open World News Open World News
  • Privacy Policy
Open World News Open World News

Category: News

Four Kitchens: Get ready for Drupal 11: An essential guide

Posted on September 13, 2024 by Michael G
Four Kitchens: Get ready for Drupal 11: An essential guide

Yuvania Castillo

Backend Engineer

A graduate of the University of Costa Rica with a passion for programming, Yuvania is driven to constantly improve, study, and learn new technologies to be better every day.

January 1, 1970

Preparing for Drupal 11 is crucial to ensure a smooth transition, and we’re here to help you make it easy and efficient. This guide offers clear steps to update your environment and modules, perform thorough tests, and use essential tools like Upgrade Status and Drupal Rector.

Don’t fall behind! Making sure your site is ready for the new features and improvements Drupal 11 brings will make the upgrade work quick and easy.

Read on to learn how to keep your site updated and future-proof.

Ensure your environment is ready

  • Upgrade to PHP 8.3: Ensure optimal performance and compatibility with Drupal 11
  • Use Drush 13: Make sure you have this version available in your development or sandbox environment
  • Database requirements: Ensure your database meets the requirements for Drupal 11:
    • MySQL 8.0
    • PostgreSQL 16
  • Web server: Drupal 11 requires Apache 2.4.7 or higher. Keep your server updated to avoid compatibility issues.

Upgrade to Drupal 10.3. Before migrating to Drupal 11, update your site to Drupal 10.3 to handle all deprecations properly. Drupal 10.3 defines all deprecated code to be removed in Drupal 11, making it easier to prepare for the next major update.

Update contributed modules. Use Composer to update all contributed modules to versions compatible with Drupal 11. The Upgrade Status module will help identify deprecated modules and APIs. Ensure all modules are updated to avoid compatibility issues.

Fix custom code. Use Drupal Rector to identify and fix deprecations in your custom code. Drupal Rector automates much of the update process, leaving “to do” comments where manual intervention is needed. Perform a manual review of critical areas to ensure everything functions correctly.

Run tests in a safe environment. Conduct tests in a safe environment, such as a local sandbox or cloud IDE. It’s likely to fail at first, but it’s essential to run multiple tests until you achieve a successful result. Use:

  • composer update --dry-run to simulate the update without making changes
  • composer why-not drupal/core 11.0 if there are issues, identify which dependencies require an earlier version of Drupal

Compatibility tools. Install and use the Upgrade Status module to ensure your site is ready. This module provides a detailed report on your site’s compatibility with Drupal 11. Check for compatibility issues in contributed projects on Drupal.org using the Project Update Bot.

Back up everything. Before updating, ensure you have a complete backup of your code and database. This is crucial to restore your site if something goes wrong during the update.

Considerations for immediate upgrade

You may wonder if you should upgrade your site to Drupal 11 as soon as it’s available. Here are some pros and cons to consider:

  • Maybe no: Sites can wait up till when the Drupal 10 LTS (long term support) ends (mid-late 2026) and then upgrade. This allows contributed modules to be fully ready for the update.
  • Maybe yes: Upgrading early lets you take advantage of new features and improvements but may introduce new bugs. Additionally, if everyone waits to upgrade, it could delay the readiness of contributed modules for the new version.

While Drupal 10 will be supported for some time, it’s advisable to stay ahead with these updates to use the improvements they offer and ensure a smoother, optimized transition.

By following these steps and considerations, your Drupal site will be well prepared for the transition to Drupal 11, ensuring a smooth and uninterrupted experience. Get ready for the new and exciting features Drupal 11 has to offer!

References

  • Are You Ready for Drupal 11?
  • Drupal 11 on Acquia
  • YouTube: Preparing for Drupal 11
  • Getting Ready for Drupal 11 – Slide Deck

The post Get ready for Drupal 11: An essential guide appeared first on Four Kitchens.

🌶️ The Post-JAMstack Era: Just Use Rails.

Posted on September 13, 2024 by Michael G
Get your spicy 2024 hot-takes right here

Encode your nostalgia

Posted on September 13, 2024 by Michael G

This Week in F-Droid

TWIF curated on Thursday, 12 Sep 2024, Week 37

Community News

Arx Libertatis, An improved, cross-platform and open source engine for Arx Fatalis, a 2002 first-person role-playing game / dungeon crawler / immersive sim was just added, bringing another cult classic to the Android screen. You’ll need the Demo data files just to test, or use the game files from your old CDs or fresh off a digital game service. You can follow the instructions in the Wiki to setup the game.

Blocker was updated to 2.0.4497-fdroid, small note, be aware that the included rules might be missing. The next update will fix them. Upstream issue

Briar was updated to 1.5.13, a small polish after last months UI update to Material Design 3. Briar is a peer-to-peer messaging app that does not depend on centralized servers, and it routes messages via the Tor network. This can be a pain for mobile devices as they can go online and offline as the geography dictates (or your OEMs battery optimizations) hence messages can be delayed. But did you know you can pair Briar with Briar Mailbox? Announced last year and in F-Droid since April, Mailbox acts as your own private server that you can setup on a spare Android device that sits comfortable always online and keeps your messages ready to be delivered to you or to your contacts. Linking your account to Mailbox is as easy as scanning a QR code.

Element – Secure Messenger was updated to 1.6.20, as the Element team gave F-Droid the ok to build one month later than their release. It’s an important update as it adds support for “Authenticated media”, about which you can read more here. Unfortunately the armv7 version hit some memory limits so it will be rebuilt next. SchildiChat users are already covered as their app was updated a few weeks ago and FluffyChat users might get the update by the time they read this TWIF. Element X is still work-in-progress, as newer versions fail to build reproducible, we are communicating with the Element team to bring it up to date as soon as possible.

mpvKt: MPV based media player, A media player based on the popular commandline media player mpv, was just added, it’s based on mpv-android and tries to offer you the power of mpv in a nicer UI that’s easier to use and handle. Will it replace your old player? Do test and tell us!

Chaldea was updated to 2.5.14 and kardi notes | privacy matters to 2.1.1, but we’ll have to ask you to skip these updates as they are broken, being the victims of an aggressive scanning issue.

What scanner issue? Last week we added a new check to the scanner which was intended to catch non-deterministic builds. When a package manager file, e.g. pubspec.yaml, is found without a lock file aside, the scanner throws an error or deletes the file, when scandelete is used. This feature was not tested on enough app source code bases and, when deployed for hundreds of apps a cycle needs to build, it caused, besides delayed updates, many false positives and even made some builds (as pointed above) produce broken packages. We appologize for the mess. This issue has been fixed and failed packages have been rebuilt.

Removed Apps

1 app were removed

Video Transcoder, Video transcoding between common formats, was getting long in the tooth, no longer being developed and based on a 6 year old FFmpeg version that has its share of known vulnerabilities. But it’s not all bad news as at least Bunny Media Editor and Open Video Editor can cover your video editing tasks and, if needed, FFShare will let you tweak that final encoding.

Newly Added Apps

8 more apps were newly added
  • Cavity: Wine cellar manager for Android
  • Fucks Given: Self-love is the greatest middle finger of all time (No, the screen is not cursing at you, have a read and a laugh 😏)
  • Journalize: A fast to use journaling app
  • Linkora: the only link utility app you need for Android
  • OGN AR Viewer: Experimental augmented reality client to the Open Glider Network (OGN)
  • Recording Studio Lite: Audio recorder
  • Riichi Mahjong Calculator: Riichi Mahjong Calculator, featuring hand efficiency calculation, and more
  • Valentin’s PowerTools #016 – Tomato Potato Clock: Distraction-free pomodoro timer

Updated Apps

82 more apps were updated

(expand for the full list)

  • AAAAXY was updated to 1.5.190+20240826.3509.227d4212
  • Amber was updated to 1.3.6
  • Amethyst was updated to 0.90.4
  • Asteroid’s Revenge was updated to 0.11.1
  • Auxio was updated to 3.5.3
  • Barcode Buddy was updated to 0.4.1
  • bilimiao was updated to 2.3.9
  • BitBanana was updated to 0.8.6
  • Bitcoin Wallet was updated to 10.16
  • Bitcoin Wallet [testnet3] was updated to 10.16
  • Capy Reader was updated to 2024.09.1039-dev
  • Cheogram was updated to 2.15.3-4+free
  • ClashMetaForAndroid was updated to 2.10.3.Meta
  • Click Switch was updated to 8.7.6
  • Compass was updated to 1.14.3
  • Dagger: Dota 2 Stats was updated to 1.3.8
  • Delta Icon Pack was updated to 1.9.5
  • Dokuwiki Android was updated to v0.41
  • eduVPN was updated to 3.3.2
  • EinkBro was updated to 11.15.0
  • FairEmail was updated to 1.2227
  • FREE Browser was updated to 3.0
  • freeDictionaryApp was updated to 1.7.0
  • Fridgey was updated to 1.10
  • Gallery was updated to 3.0.0
  • Gallery for PhotoPrism was updated to 1.30.0
  • GNU Taler Point-of-Sale was updated to 0.2.6
  • Gramophone was updated to 1.0.9
  • Green: Bitcoin Wallet was updated to 4.0.33
  • HK Transport was updated to 1.0.6
  • InnerTune was updated to 0.5.9
  • Kanji Dojo was updated to 2.1.0
  • Lab+ for Gitlab was updated to 1.5.0
  • Lightning Address to Invoice was updated to 1.4.0
  • Linux Command Library was updated to 3.2.6
  • Lyrion was updated to 0.8.0
  • MediLog was updated to 3.0.0
  • Meshtastic was updated to 2.4.4
  • MIFARE Classic Tool was updated to 4.2.3
  • MoeMemos was updated to 0.8.2
  • monocles chat was updated to 1.7.11
  • MonsterMusic was updated to 0.1.27
  • MuPDF mini was updated to 1.24.9a
  • MuPDF viewer was updated to 1.24.9a
  • NanoLedger was updated to 0.4.5
  • NetGuard was updated to 2.330
  • neutriNote CE was updated to 4.5.3d
  • NewsBlur was updated to 13.3.0
  • Next Player was updated to 0.12.3
  • Nextcloud Dev was updated to 20240831
  • NOVA Video Player was updated to 6.2.95
  • Offi was updated to 13.0.3
  • Oinkoin was updated to 1.0.67
  • Open Surge: retro game engine was updated to 6.1.2.1-fdroid
  • openHAB was updated to 3.16.2
  • Pachli for Mastodon was updated to 2.8.0
  • Peristyle was updated to 1.53_beta
  • Permission Manager X was updated to v1.27-fd
  • PixelDroid was updated to 1.0.beta36
  • PocketTRacker was updated to 2.1.0
  • Presence Publisher was updated to 2.6.1
  • Quick Calculation was updated to 1.3
  • Quote Unquote was updated to 4.43.1-fdroid
  • Readrops was updated to 2.0-beta02
  • Satunes was updated to 2.2.1
  • Sayboard was updated to v4.2.1
  • SiYuan was updated to 3.1.4
  • Smart EggTimer was updated to 3.0
  • Taler Wallet was updated to 0.13.0
  • Thumb-Key was updated to 3.4.5
  • Tinc Mesh VPN was updated to 0.40
  • Traccar Client was updated to 7.7
  • Trackbook – Movement Recorder was updated to 2.2.3
  • Träwelldroid was updated to 2.14.1
  • Unchained was updated to 1.3.1
  • Unstoppable Crypto Wallet was updated to 0.39.4
  • UP-Example was updated to 1.5.5
  • Varengold activeTAN was updated to 1.0.13
  • Wikipedia was updated to r/2.7.50498-r-2024-08-19
  • Xtra was updated to 2.34.0
  • YAM Launcher was updated to 1.2
  • µLauncher was updated to j-0.0.9

Thank you for reading this week’s TWIF 🙂

Please subscribe to the RSS feed in your favourite RSS application to be updated of new TWIFs when they come up.

You are welcome to join the TWIF forum thread. If you have any news from the community, post it there, maybe it will be featured next week 😉

To help support F-Droid, please check out the donation page and contribute what you can.

Unplanned but spectacular: Visitor witnesses the ‘Northern Lights’ under a clear sky

Posted on September 12, 2024 by Michael G
Carol Bauer wasn’t expecting the Northern Lights to appear, but her Aurora app alerts had other plans!

With a clear sky and perfect indicators, the evening turned into a display of shimmering colors across the night sky. 

As the vibrant lights painted the sky, Carol couldn’t believe her luck.

The lack of clouds allowed for an uninterrupted view, making the experience even more magical.
Location: Graceville, United States
WooGlobe Ref : WGA147315
For licensing and to use this video, please email licensing@wooglobe.com

ChatGPT Course Section 49 Archiving, Accessing and Unarchiving Chat

Posted on September 12, 2024 by Michael G
ChatGPT is a text-based generative AI tool that can do various tasks. In this course, you will learn how to write prompts, generate content, generate codes and utilise its powerful features.

In this video lesson, we will learn about Archiving, Accessing and Unarchiving Chat in ChatGPT.

You can access the entire ChatGPT Course in the following playlist:
https://dailymotion.com/rss/playlist/x8jx4a

i am the table In a playful and imaginative act, a young boy in China decided to dress up as a…

Posted on September 12, 2024 by Michael G

Author: Source Read more

Two Options For Editing Your Media Without The Need For WordPress Plugins

Posted on September 12, 2024 by Michael G
Two Options For Editing Your Media Without The Need For Wordpress Plugins:
https://itayverchik.com/media-edit-wordpress/

Looking for easy ways to edit your media files without the need for additional WordPress plugins? In this video, I’ll show you two simple and efficient options for editing your images and media directly within WordPress, without installing any third-party plugins. Whether you’re adjusting image sizes, cropping photos, or rotating files, WordPress has built-in tools to help you make quick changes to your media library.

We’ll walk through the step-by-step process of using WordPress’s native image editor, which allows you to crop, scale, rotate, and flip images directly from your media library. Additionally, I’ll show you how to optimize your media by using external tools like built-in operating system image editors before uploading to WordPress, ensuring your files are in the best format and size for web performance without the need for plugins.

By the end of this tutorial, you’ll be able to confidently edit and manage your media files, keeping your site running smoothly and efficiently without unnecessary plugins.

Make sure to subscribe and hit the bell icon to get more tips on how to manage your WordPress site effectively. If this video helped you, don’t forget to give it a thumbs up!

In this video, you’ll learn:

How to use WordPress’s native image editor for quick media adjustments.
How to use external editing tools to optimize your media before uploading.
The benefits of avoiding extra plugins and maintaining website performance.

Don’t miss more tutorials on the channel: https://www.youtube.com/c/ItayVerchik?sub_confirmation=1

To Sign Up For The Keywords Tracking System:
https://say-v.com/

Join now the community of Webmasters and SEO Marketers completely free:
https://www.facebook.com/groups/itayverchik

To purchase Elementor Pro, the world’s best WordPress page designer:
https://trk.elementor.com/2500

Don’t Have A Web Hosting Account Yet Or Are You Just Not Satisfied With Your Existing Hosting?
Get A 25% Discount For Cloudways Web Hosting For The First 3 Months:
https://platform.cloudways.com/signup?id=314159&coupon=VERCHIK

Thank you for watching! Have any questions or suggestions for future tutorials? Drop a comment below and I’ll be happy to help. Don’t forget to subscribe and share this video with others who may find it useful!

Mario Hernandez: Migrating your Drupal theme from Patternlab to Storybook

Posted on September 12, 2024 by Michael G

Building a custom Drupal theme nowadays is a more complex process than it used to be. Most themes require some kind of build tool such as Gulp, Grunt, Webpack or others to automate many of the repeatitive tasks we perform when working on the front-end. Tasks like compiling and minifying code, compressing images, linting code, and many more. As Atomic Web Design became a thing, things got more complicated because now if you are building components you need a styleguide or Design System to showcase and maintain those components. One of those design systems for me has been Patternlab. I started using Patternlab in all my Drupal projects almost ten years ago with great success. In addition, Patternlab has been the design system of choice at my place of work but one of my immediate tasks was to work on migrating to a different design system. We have a small team but were very excited about the challenge of finding and using a more modern and robust design system for our large multi-site Drupal environment.

Enter Storybook

After looking a various options for a design system, Storybook seemed to be the right choice for us for a couple of reasons: one, it has been around for about 10 years and during this time it has matured significantly, and two, it has become a very popular option in the Drupal ecosystem. In some ways, Storybook follows the same model as Drupal, it has a pretty active community and a very healthy ecosystem of plugins to extend its core functionality.

Storybook looks very promising as a design system for Drupal projects and with the recent release of Single Directory Components or SDC, and the new Storybook module, we think things can only get better for Drupal front-end development. Unfortunately for us, technical limitations in combination with our specific requirements, prevented us from using SDC or the Storybook module. Instead, we built our environment from scratch with a stand-alone integration of Storybook 8.


INFO: At the time of our implementation, TwigJS did not have the capability to resolve SDC’s namespace. It appears this has been addressed and using SDC should now be possible with this custom setup. I haven’t personally tried it and therefore I can’t confirm.

Our process and requirements

In choosing Storybook, we went through a rigorous research and testing process to ensure it will not only solve our immediate problems with our current environment, but it will be around as a long term solution. As part of this process, we also tested several available options like Emulsify and Gesso which would be great options for anyone looking for a ready-to-go system out of the box. Some of our requirements included:

1. No components refactoring

The first and non-negotiable requirement was to be able to migrate components from Patternlab to a new design system with the least amount of refactoring as possible. We have a decent amount of components which have been built within the last year and the last thing we wanted was to have to rebuild them again because we are switching design system.

2. A new Front-end build workflow

I personally have been faithful to Gulp as a front-end build tool for as long as I can remember because it did everything I needed done in a very efficient manner. The Drupal project we maintain also used Gulp, but as part of this migration, we wanted to see what other options were out there that could improve our workflow. The obvious choice seemed to be Webpack, but as we looked closer into this we learned about ViteJS, “The Next Genration Frontend Tooling“. Vite delivers on its promise of being “blazing fast“, and its ecosystem is great and growing, so we went with it.

3. No more Sass in favor of PostCSS

CSS has drastically improved in recent years. It is now possible with plain CSS, to do many of the things you used to be able to only do with Sass or similar CSS Preprocessor. Eliminating Sass from our workflow meant we would also be able to get rid of many other node dependencies related to Sass. The goal for this project was to use plain CSS in combination with PostCSS and one bonus of using Vite is that Vite offers PostCSS processing out of the box without additional plugins or dependencies. Ofcourse if you want to do more advance PostCSS processing you will probably need some external dependencies.

Building a new Drupal theme with Storybook

Let’s go over the steps to building the base of your new Drupal theme with ViteJS and Storybook. This will be at a high-level to callout only the most important and Drupal-related parts. This process will create a brand new theme. If you already have a theme you would like to use, make the appropriate changes to the instructions.

1. Setup Storybook with ViteJS

ViteJS

  • In your Drupal project, navigate to the theme’s directory (i.e. /web/themes/custom/)
  • Run the following command:
npm create vite@latest storybook
  • When prompted, select the framework of your choice, for us the framework is React.
  • When prompted, select the variant for your project, for us this is JavaScript

After the setup finishes you will have a basic Vite project running.

Storybook

  • Be sure your system is running NodeJS version 18 or higher
  • Inside the newly created theme, run this command:
npx storybook@latest init --type react
  • After installation completes, you will have a new Storybook instance running
  • If Storybook didn’t start on its own, start it by running:
npm run storybook

TwigJS

Twig templates are server-side templates which are normally rendered with TwigPHP to HTML by Drupal, but Storybook is a JS tool. TwigJS is the JS-equivalent of TwigPHP so that Storybook understands Twig. Let’s install all dependencies needed for Storybook to work with Twig.

  • If Storybook is still running, press Ctrl + C to stop it
  • Then run the following command:
npm i -D vite-plugin-twig-drupal html-react-parser twig-drupal-filters @modyfi/vite-plugin-yaml
  • vite-plugin-twig-drupal: If you are using Vite like we are, this is a Vite plugin that handles transforming twig files into a Javascript function that can be used with Storybook. This plugin includes the following:
    • Twig or TwigJS: This is the JavaScript implementation of the Twig PHP templating language. This allows Storybook to understand Twig.
      Note: TwigJS may not always be in sync with the version of Twig PHP in Drupal and you may run into issues when using certain Twig functions or filters, however, we are adding other extensions that may help with the incompatability issues.
    • drupal attribute: Adds the ability to work with Drupal attributes.
  • twig-drupal-filters: TwigJS implementation of Twig functions and filters.
  • html-react-parser: This extension is key for Storybook to parse HTML code into react elements.
  • @modifi/vite-plugin-yaml: Transforms a YAML file into a JS object. This is useful for passing the component’s data to React as args.

ViteJS configuration

Update your vite.config.js so it makes use of the new extensions we just installed as well as configuring the namesapces for our components.

import { defineConfig } from "vite"
import yml from '@modyfi/vite-plugin-yaml';
import twig from 'vite-plugin-twig-drupal';
import { join } from "node:path"
export default defineConfig({
  plugins: [
    twig({
      namespaces: {
        components: join(__dirname, "./src/components"),
        // Other namespaces maybe be added.
      },
    }),
    // Allows Storybook to read data from YAML files.
    yml(),
  ],
})

Storybook configuration

Out of the box, Storybook comes with main.js and preview.js inside the .storybook directory. These two files is where a lot of Storybook’s configuration is done. We are going to define the location of our components, same location as we did in vite.config.js above (we’ll create this directory shortly). We are also going to do a quick config inside preview.js for handling drupal filters.

  • Inside .storybook/main.js file, update the stories array as follows:
stories: [
  "../src/components/**/*.mdx",
  "../src/components/**/*.stories.@(js|jsx|mjs|ts|tsx)",
],
  • Inside .storybook/preview.js, update it as follows:
/** @type { import('@storybook/react').Preview } */
import Twig from 'twig';
import drupalFilters from 'twig-drupal-filters';

function setupFilters(twig) {
  twig.cache();
  drupalFilters(twig);
  return twig;
}

setupFilters(Twig);

const preview = {
  parameters: {
    controls: {
      matchers: {
        color: /(background|color)$/i,
        date: /Date$/i,
      },
    },
  },
};

export default preview;

Creating the components directory

  • If Storybook is still running, press Ctrl + C to stop it
  • Inside the src directory, create the components directory. Alternatively, you could rename the existing stories directory to components.

Creating your first component

With the current system in place we can start building components. We’ll start with a very simple component to try things out first.

  • Inside src/components, create a new directory called title
  • Inside the title directory, create the following files: title.yml and title.twig

Writing the code

  • Inside title.yml, add the following:
---
level: 2
modifier: 'title'
text: 'Welcome to your new Drupal theme with Storybook!'
url: 'https://mariohernandez.io'
  • Inside title.twig, add the following:
<h{{ level|default(2) }}{% if modifier %} class="{{ modifier }}"{% endif %}>
  {% if url %}
    <a href="{{ url }}">{{ text }}</a>
  {% else %}
    <span>{{ text }}</span>
  {% endif %}
</h{{ level|default(2) }}>

We have a simple title component that will print a title of anything you want. The level key allows us to change the heading level of the title (i.e. h1, h2, h3, etc.), and the modifier key allows us to pass a modifier class to the component, and the url will be helpful when our title needs to be a link to another page or component.

Currently the title component is not available in storybook. Storybook uses a special file to display each component as a story, the file name is component-name.stories.jsx.

  • Inside title create a file called title.stories.jsx
  • Inside the stories file, add the following:
/**
 * First we import the `html-react-parser` extension to be able to
 * parse HTML into react.
 */
import parse from 'html-react-parser';

/**
 * Next we import the component's markup and logic (twig), data schema (yml),
 * as well as any styles or JS the component may use.
 */
import title from './title.twig';
import data from './title.yml';

/**
 * Next we define a default configuration for the component to use.
 * These settings will be inherited by all stories of the component,
 * shall the component have multiple variations.
 * `component` is an arbitrary name assigned to the default configuration.
 * `title` determines the location and name of the story in Storybook's sidebar.
 * `render` uses the parser extension to render the component's html to react.
 * `args` uses the variables defined in title.yml as react arguments.
 */
const component = {
  title: 'Components/Title',
  render: (args) => parse(title(args)),
  args: { ...data },
};

/**
 * Export the Title and render it in Storybook as a Story.
 * The `name` key allows you to assign a name to each story of the component.
 * For example: `Title`, `Title dark`, `Title light`, etc.
 */
export const TitleElement = {
  name: 'Title',
};

/**
 * Finally export the default object, `component`. Storybook/React requires this step.
 */
export default component;
  • If Storybook is running you should see the title story. See example below:
  • Otherwise start Storybook by running:
npm run storybook

With Storybook running, the title component should look like the image below:

Mario Hernandez: Migrating your Drupal theme from Patternlab to Storybook
The controls highlighted at the bottom of the title allow you to change the values of each of the fields for the title.

I wanted to start with the simplest of components, the title, to show how Storybook, with help from the extensions we installed, understands Twig. The good news is that the same approach we took with the title component works on even more complex components. Even the React code we wrote does not change much on large components.

In the next blog post, we will build more components that nest smaller components, and we will also add Drupal related parts and configuration to our theme so we can begin using the theme in a Drupal site. Finally, we will integrate the components we built in Storybook with Drupal so our content can be rendered using the component we’re building. Stay tuned. For now, if you want to grab a copy of all the code in this post, you can do so below.

Download the code

Resources

  • Storybook docs
  • How to write stories
  • Single Directory Components
  • Storybook Drupal module

In closing

Getting to this point was a team effort and I’d like to thank Chaz Chumley, a Senior Software Engineer, who did a lot of the configuration discussed in this post. In addition, I am thankful to the Emulsify and Gesso teams for letting us pick their brains during our research. Their help was critical in this process.

I hope this was helpful and if there is anything I can help you with in your journey of a Storybook-friendly Drupal theme, feel free to reach out.

Add custom fields to your Rails models with ActiveFields gem

Posted on September 12, 2024 by Michael G
https://dev.to/exterminate/add-custom-fields-to-your-activerecord-models-with-activefields-gem-1olk

FSF Events: Pick up some Sourceware infrastructure tips and tricks with Ian Kelling at GNU Cauldron in Prague on September 16

Posted on September 12, 2024 by Michael G

Author: Source Read more

  • Previous
  • 1
  • …
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • …
  • 821
  • Next

Recent Posts

  • Qwen3-Coder
  • Open Source is Back
  • An easy way to develop Home Assistant integrations
  • SmartEsq has launched an AI-powered MFN Election tool
  • Open Source email Clients

Categories

  • Android
  • Linux
  • News
  • Open Source
©2025 Open World News | Powered by Superb Themes
We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept All”, you consent to the use of ALL the cookies. However, you may visit "Cookie Settings" to provide a controlled consent.
Cookie SettingsAccept All
Manage consent

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary
Always Enabled
Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.
CookieDurationDescription
cookielawinfo-checkbox-analytics11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics".
cookielawinfo-checkbox-functional11 monthsThe cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
cookielawinfo-checkbox-necessary11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".
cookielawinfo-checkbox-others11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other.
cookielawinfo-checkbox-performance11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance".
viewed_cookie_policy11 monthsThe cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.
Functional
Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
Performance
Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.
Analytics
Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.
Advertisement
Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.
Others
Other uncategorized cookies are those that are being analyzed and have not been classified into a category as yet.
SAVE & ACCEPT