Repository files navigation

Latest Stable Version

Starter Child Theme for CD Projects

See also: CD Demo - a Drupal starter-kit and demo site.

Usage

Create a child theme from cwd_project

  1. Grab a copy of this "cwd_project" folder from the GitHub repo.

    • If your site is a fresh clone of CD Demo, you'll already have cwd_project in web/themes/custom.
  2. Rename this copy to suit your project. This will effectively be the machine name for your theme (e.g., The College of Ursine Studies at Cornell might be named cwd_ursine.). For consistency, we usually name our folders and files "cwd_xxxx".

    • CWD is the legacy name for the web development unit of Custom Development. While it's deprecated now, it's still used in many places, and three letters are more distinctive than two. So for now, I recommend just going with it! 😛
  3. There are a few files in the starter theme that will also need their filenames updated to match:

    • cwd_project.info.yml → cwd_ursine.info.yml

    • cwd_project.libraries.yml → cwd_ursine.libraries.yml

    • cwd_project.theme → cwd_ursine.theme

      • CSS and JavaScript assets should be renamed too, but don't need to match the theme's machine name. Simplifying to ursine.css would be fine, for example.

      • The starter project.scss and project.css files are empty (except for some breakpoint recommendations in comments). The starter project.js is also empty, except for Drupal-specific search code that we commonly need on every project (but also commonly customized).

  4. The "project" machine name must also be updated in the contents of the newly renamed cwd_ursine.info.yml. These instances are marked with a @CUSTOMIZE comment for extra clarity. For example, in the libraries section:

    • - 'cwd_project/global-styling' # @CUSTOMIZE(line 25)
  5. Also in cwd_ursine.info.yml, the front-facing "CWD Starter Theme" name should be set appropriately. (line 5)

    • Optionally, you can also uncomment the libraries reference to custom CKEditor styles. (lines 27 & 28)

    • CKEditor styles are already inherited from the Base Theme, so you should only uncomment these two lines if project-specific styles are needed, and they would not be appropriate to add to the Base Theme itself. If you use custom CKEditor styles, you'll need to add a copy of the css/ckeditor folder from the Base Theme to your child theme for modification, and update the templates/ckeditor_templates.js file as needed.

  6. In cwd_ursine.libraries.yml, the references to filenames for CSS and JavaScript assets (named in step 3 above) should be updated. This is also where you will add any additional custom assets for your project.

  7. There is also a screenshot.png file in the theme which is used in the Drupal CMS. Ask a designer for help updating this!

    • If you want it to match the Base Theme, the typography is done in Avenir Next Medium.
  8. Remove composer.json from your new theme (no need to keep it).

  9. ⚠️ Proceed with "Drupal" steps below, including the very important clean-up of cwd_project.

Drupal

After you create your child theme and commit it to your site repo:

  1. Go to /admin/appearance
  2. Enable your new child theme and set it as the default.
  3. Uninstall cwd_project.
  4. Codify the config for the aforementioned theme changes.
  5. Remove cwd_project from your code repo.

Template sub-folders

Content types and other components

Sub-folders called news, events, slideshow, etc., are meant for content types and other components. Broader sub-folders for components are also ok, whatever works best for your project. (For example, on Biotech, it made sense to have a resources sub-folder, with templates for Service and Instrument components.)

partials

Put "partial" templates in here, such as site-footer.html.twig and incl--article-image.html.twig. These templates do not fill out an entire template, they are pieces of reusable/repeat markup. They can be included straight-up, or with arguments (i.e. include ... with).

Example usage:

  • html.html.twig use of site-footer.html.twig
  • news--full.html.twig use of incl--article-image.html.twig

overrides

Put full template overrides in here, such as views-view.html.twig, media.html.twig, field--post-date.html.twig, _block--with-button.html.twig. These templates are just that: complete templates. They can be included straight-up, or included with arguments, or extended, or embedded.

Example usage:

  • TO DO

About

A starter child theme for cwd_base, providing just the basics for beginning a custom Drupal design.

Resources

Stars

2 stars

Watchers

19 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Latest Stable Version

Starter Child Theme for CD Projects

See also: CD Demo - a Drupal starter-kit and demo site.

Usage

Create a child theme from cwd_project

  1. Grab a copy of this "cwd_project" folder from the GitHub repo.

    • If your site is a fresh clone of CD Demo, you'll already have cwd_project in web/themes/custom.
  2. Rename this copy to suit your project. This will effectively be the machine name for your theme (e.g., The College of Ursine Studies at Cornell might be named cwd_ursine.). For consistency, we usually name our folders and files "cwd_xxxx".

    • CWD is the legacy name for the web development unit of Custom Development. While it's deprecated now, it's still used in many places, and three letters are more distinctive than two. So for now, I recommend just going with it! 😛
  3. There are a few files in the starter theme that will also need their filenames updated to match:

    • cwd_project.info.yml → cwd_ursine.info.yml

    • cwd_project.libraries.yml → cwd_ursine.libraries.yml

    • cwd_project.theme → cwd_ursine.theme

      • CSS and JavaScript assets should be renamed too, but don't need to match the theme's machine name. Simplifying to ursine.css would be fine, for example.

      • The starter project.scss and project.css files are empty (except for some breakpoint recommendations in comments). The starter project.js is also empty, except for Drupal-specific search code that we commonly need on every project (but also commonly customized).

  4. The "project" machine name must also be updated in the contents of the newly renamed cwd_ursine.info.yml. These instances are marked with a @CUSTOMIZE comment for extra clarity. For example, in the libraries section:

    • - 'cwd_project/global-styling' # @CUSTOMIZE(line 25)
  5. Also in cwd_ursine.info.yml, the front-facing "CWD Starter Theme" name should be set appropriately. (line 5)

    • Optionally, you can also uncomment the libraries reference to custom CKEditor styles. (lines 27 & 28)

    • CKEditor styles are already inherited from the Base Theme, so you should only uncomment these two lines if project-specific styles are needed, and they would not be appropriate to add to the Base Theme itself. If you use custom CKEditor styles, you'll need to add a copy of the css/ckeditor folder from the Base Theme to your child theme for modification, and update the templates/ckeditor_templates.js file as needed.

  6. In cwd_ursine.libraries.yml, the references to filenames for CSS and JavaScript assets (named in step 3 above) should be updated. This is also where you will add any additional custom assets for your project.

  7. There is also a screenshot.png file in the theme which is used in the Drupal CMS. Ask a designer for help updating this!

    • If you want it to match the Base Theme, the typography is done in Avenir Next Medium.
  8. Remove composer.json from your new theme (no need to keep it).

  9. ⚠️ Proceed with "Drupal" steps below, including the very important clean-up of cwd_project.

Drupal

After you create your child theme and commit it to your site repo:

  1. Go to /admin/appearance
  2. Enable your new child theme and set it as the default.
  3. Uninstall cwd_project.
  4. Codify the config for the aforementioned theme changes.
  5. Remove cwd_project from your code repo.

Template sub-folders

Content types and other components

Sub-folders called news, events, slideshow, etc., are meant for content types and other components. Broader sub-folders for components are also ok, whatever works best for your project. (For example, on Biotech, it made sense to have a resources sub-folder, with templates for Service and Instrument components.)

partials

Put "partial" templates in here, such as site-footer.html.twig and incl--article-image.html.twig. These templates do not fill out an entire template, they are pieces of reusable/repeat markup. They can be included straight-up, or with arguments (i.e. include ... with).

Example usage:

  • html.html.twig use of site-footer.html.twig
  • news--full.html.twig use of incl--article-image.html.twig

overrides

Put full template overrides in here, such as views-view.html.twig, media.html.twig, field--post-date.html.twig, _block--with-button.html.twig. These templates are just that: complete templates. They can be included straight-up, or included with arguments, or extended, or embedded.

Example usage:

  • TO DO

About

A starter child theme for cwd_base, providing just the basics for beginning a custom Drupal design.

Resources

Stars

2 stars

Watchers

19 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Latest Stable Version

Starter Child Theme for CD Projects

See also: CD Demo - a Drupal starter-kit and demo site.

Usage

Create a child theme from cwd_project

  1. Grab a copy of this "cwd_project" folder from the GitHub repo.

    • If your site is a fresh clone of CD Demo, you'll already have cwd_project in web/themes/custom.
  2. Rename this copy to suit your project. This will effectively be the machine name for your theme (e.g., The College of Ursine Studies at Cornell might be named cwd_ursine.). For consistency, we usually name our folders and files "cwd_xxxx".

    • CWD is the legacy name for the web development unit of Custom Development. While it's deprecated now, it's still used in many places, and three letters are more distinctive than two. So for now, I recommend just going with it! 😛
  3. There are a few files in the starter theme that will also need their filenames updated to match:

    • cwd_project.info.yml → cwd_ursine.info.yml

    • cwd_project.libraries.yml → cwd_ursine.libraries.yml

    • cwd_project.theme → cwd_ursine.theme

      • CSS and JavaScript assets should be renamed too, but don't need to match the theme's machine name. Simplifying to ursine.css would be fine, for example.

      • The starter project.scss and project.css files are empty (except for some breakpoint recommendations in comments). The starter project.js is also empty, except for Drupal-specific search code that we commonly need on every project (but also commonly customized).

  4. The "project" machine name must also be updated in the contents of the newly renamed cwd_ursine.info.yml. These instances are marked with a @CUSTOMIZE comment for extra clarity. For example, in the libraries section:

    • - 'cwd_project/global-styling' # @CUSTOMIZE(line 25)
  5. Also in cwd_ursine.info.yml, the front-facing "CWD Starter Theme" name should be set appropriately. (line 5)

    • Optionally, you can also uncomment the libraries reference to custom CKEditor styles. (lines 27 & 28)

    • CKEditor styles are already inherited from the Base Theme, so you should only uncomment these two lines if project-specific styles are needed, and they would not be appropriate to add to the Base Theme itself. If you use custom CKEditor styles, you'll need to add a copy of the css/ckeditor folder from the Base Theme to your child theme for modification, and update the templates/ckeditor_templates.js file as needed.

  6. In cwd_ursine.libraries.yml, the references to filenames for CSS and JavaScript assets (named in step 3 above) should be updated. This is also where you will add any additional custom assets for your project.

  7. There is also a screenshot.png file in the theme which is used in the Drupal CMS. Ask a designer for help updating this!

    • If you want it to match the Base Theme, the typography is done in Avenir Next Medium.
  8. Remove composer.json from your new theme (no need to keep it).

  9. ⚠️ Proceed with "Drupal" steps below, including the very important clean-up of cwd_project.

Drupal

After you create your child theme and commit it to your site repo:

  1. Go to /admin/appearance
  2. Enable your new child theme and set it as the default.
  3. Uninstall cwd_project.
  4. Codify the config for the aforementioned theme changes.
  5. Remove cwd_project from your code repo.

Template sub-folders

Content types and other components

Sub-folders called news, events, slideshow, etc., are meant for content types and other components. Broader sub-folders for components are also ok, whatever works best for your project. (For example, on Biotech, it made sense to have a resources sub-folder, with templates for Service and Instrument components.)

partials

Put "partial" templates in here, such as site-footer.html.twig and incl--article-image.html.twig. These templates do not fill out an entire template, they are pieces of reusable/repeat markup. They can be included straight-up, or with arguments (i.e. include ... with).

Example usage:

  • html.html.twig use of site-footer.html.twig
  • news--full.html.twig use of incl--article-image.html.twig

overrides

Put full template overrides in here, such as views-view.html.twig, media.html.twig, field--post-date.html.twig, _block--with-button.html.twig. These templates are just that: complete templates. They can be included straight-up, or included with arguments, or extended, or embedded.

Example usage:

  • TO DO

About

A starter child theme for cwd_base, providing just the basics for beginning a custom Drupal design.

Resources

Stars

2 stars

Watchers

19 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Latest Stable Version

Starter Child Theme for CD Projects

See also: CD Demo - a Drupal starter-kit and demo site.

Usage

Create a child theme from cwd_project

  1. Grab a copy of this "cwd_project" folder from the GitHub repo.

    • If your site is a fresh clone of CD Demo, you'll already have cwd_project in web/themes/custom.
  2. Rename this copy to suit your project. This will effectively be the machine name for your theme (e.g., The College of Ursine Studies at Cornell might be named cwd_ursine.). For consistency, we usually name our folders and files "cwd_xxxx".

    • CWD is the legacy name for the web development unit of Custom Development. While it's deprecated now, it's still used in many places, and three letters are more distinctive than two. So for now, I recommend just going with it! 😛
  3. There are a few files in the starter theme that will also need their filenames updated to match:

    • cwd_project.info.yml → cwd_ursine.info.yml

    • cwd_project.libraries.yml → cwd_ursine.libraries.yml

    • cwd_project.theme → cwd_ursine.theme

      • CSS and JavaScript assets should be renamed too, but don't need to match the theme's machine name. Simplifying to ursine.css would be fine, for example.

      • The starter project.scss and project.css files are empty (except for some breakpoint recommendations in comments). The starter project.js is also empty, except for Drupal-specific search code that we commonly need on every project (but also commonly customized).

  4. The "project" machine name must also be updated in the contents of the newly renamed cwd_ursine.info.yml. These instances are marked with a @CUSTOMIZE comment for extra clarity. For example, in the libraries section:

    • - 'cwd_project/global-styling' # @CUSTOMIZE(line 25)
  5. Also in cwd_ursine.info.yml, the front-facing "CWD Starter Theme" name should be set appropriately. (line 5)

    • Optionally, you can also uncomment the libraries reference to custom CKEditor styles. (lines 27 & 28)

    • CKEditor styles are already inherited from the Base Theme, so you should only uncomment these two lines if project-specific styles are needed, and they would not be appropriate to add to the Base Theme itself. If you use custom CKEditor styles, you'll need to add a copy of the css/ckeditor folder from the Base Theme to your child theme for modification, and update the templates/ckeditor_templates.js file as needed.

  6. In cwd_ursine.libraries.yml, the references to filenames for CSS and JavaScript assets (named in step 3 above) should be updated. This is also where you will add any additional custom assets for your project.

  7. There is also a screenshot.png file in the theme which is used in the Drupal CMS. Ask a designer for help updating this!

    • If you want it to match the Base Theme, the typography is done in Avenir Next Medium.
  8. Remove composer.json from your new theme (no need to keep it).

  9. ⚠️ Proceed with "Drupal" steps below, including the very important clean-up of cwd_project.

Drupal

After you create your child theme and commit it to your site repo:

  1. Go to /admin/appearance
  2. Enable your new child theme and set it as the default.
  3. Uninstall cwd_project.
  4. Codify the config for the aforementioned theme changes.
  5. Remove cwd_project from your code repo.

Template sub-folders

Content types and other components

Sub-folders called news, events, slideshow, etc., are meant for content types and other components. Broader sub-folders for components are also ok, whatever works best for your project. (For example, on Biotech, it made sense to have a resources sub-folder, with templates for Service and Instrument components.)

partials

Put "partial" templates in here, such as site-footer.html.twig and incl--article-image.html.twig. These templates do not fill out an entire template, they are pieces of reusable/repeat markup. They can be included straight-up, or with arguments (i.e. include ... with).

Example usage:

  • html.html.twig use of site-footer.html.twig
  • news--full.html.twig use of incl--article-image.html.twig

overrides

Put full template overrides in here, such as views-view.html.twig, media.html.twig, field--post-date.html.twig, _block--with-button.html.twig. These templates are just that: complete templates. They can be included straight-up, or included with arguments, or extended, or embedded.

Example usage:

  • TO DO

About

A starter child theme for cwd_base, providing just the basics for beginning a custom Drupal design.

Resources

Stars

2 stars

Watchers

19 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Latest Stable Version

Starter Child Theme for CD Projects

See also: CD Demo - a Drupal starter-kit and demo site.

Usage

Create a child theme from cwd_project

  1. Grab a copy of this "cwd_project" folder from the GitHub repo.

    • If your site is a fresh clone of CD Demo, you'll already have cwd_project in web/themes/custom.
  2. Rename this copy to suit your project. This will effectively be the machine name for your theme (e.g., The College of Ursine Studies at Cornell might be named cwd_ursine.). For consistency, we usually name our folders and files "cwd_xxxx".

    • CWD is the legacy name for the web development unit of Custom Development. While it's deprecated now, it's still used in many places, and three letters are more distinctive than two. So for now, I recommend just going with it! 😛
  3. There are a few files in the starter theme that will also need their filenames updated to match:

    • cwd_project.info.yml → cwd_ursine.info.yml

    • cwd_project.libraries.yml → cwd_ursine.libraries.yml

    • cwd_project.theme → cwd_ursine.theme

      • CSS and JavaScript assets should be renamed too, but don't need to match the theme's machine name. Simplifying to ursine.css would be fine, for example.

      • The starter project.scss and project.css files are empty (except for some breakpoint recommendations in comments). The starter project.js is also empty, except for Drupal-specific search code that we commonly need on every project (but also commonly customized).

  4. The "project" machine name must also be updated in the contents of the newly renamed cwd_ursine.info.yml. These instances are marked with a @CUSTOMIZE comment for extra clarity. For example, in the libraries section:

    • - 'cwd_project/global-styling' # @CUSTOMIZE(line 25)
  5. Also in cwd_ursine.info.yml, the front-facing "CWD Starter Theme" name should be set appropriately. (line 5)

    • Optionally, you can also uncomment the libraries reference to custom CKEditor styles. (lines 27 & 28)

    • CKEditor styles are already inherited from the Base Theme, so you should only uncomment these two lines if project-specific styles are needed, and they would not be appropriate to add to the Base Theme itself. If you use custom CKEditor styles, you'll need to add a copy of the css/ckeditor folder from the Base Theme to your child theme for modification, and update the templates/ckeditor_templates.js file as needed.

  6. In cwd_ursine.libraries.yml, the references to filenames for CSS and JavaScript assets (named in step 3 above) should be updated. This is also where you will add any additional custom assets for your project.

  7. There is also a screenshot.png file in the theme which is used in the Drupal CMS. Ask a designer for help updating this!

    • If you want it to match the Base Theme, the typography is done in Avenir Next Medium.
  8. Remove composer.json from your new theme (no need to keep it).

  9. ⚠️ Proceed with "Drupal" steps below, including the very important clean-up of cwd_project.

Drupal

After you create your child theme and commit it to your site repo:

  1. Go to /admin/appearance
  2. Enable your new child theme and set it as the default.
  3. Uninstall cwd_project.
  4. Codify the config for the aforementioned theme changes.
  5. Remove cwd_project from your code repo.

Template sub-folders

Content types and other components

Sub-folders called news, events, slideshow, etc., are meant for content types and other components. Broader sub-folders for components are also ok, whatever works best for your project. (For example, on Biotech, it made sense to have a resources sub-folder, with templates for Service and Instrument components.)

partials

Put "partial" templates in here, such as site-footer.html.twig and incl--article-image.html.twig. These templates do not fill out an entire template, they are pieces of reusable/repeat markup. They can be included straight-up, or with arguments (i.e. include ... with).

Example usage:

  • html.html.twig use of site-footer.html.twig
  • news--full.html.twig use of incl--article-image.html.twig

overrides

Put full template overrides in here, such as views-view.html.twig, media.html.twig, field--post-date.html.twig, _block--with-button.html.twig. These templates are just that: complete templates. They can be included straight-up, or included with arguments, or extended, or embedded.

Example usage:

  • TO DO

About

A starter child theme for cwd_base, providing just the basics for beginning a custom Drupal design.

Resources

Stars

2 stars

Watchers

19 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Latest Stable Version

Starter Child Theme for CD Projects

See also: CD Demo - a Drupal starter-kit and demo site.

Usage

Create a child theme from cwd_project

  1. Grab a copy of this "cwd_project" folder from the GitHub repo.

    • If your site is a fresh clone of CD Demo, you'll already have cwd_project in web/themes/custom.
  2. Rename this copy to suit your project. This will effectively be the machine name for your theme (e.g., The College of Ursine Studies at Cornell might be named cwd_ursine.). For consistency, we usually name our folders and files "cwd_xxxx".

    • CWD is the legacy name for the web development unit of Custom Development. While it's deprecated now, it's still used in many places, and three letters are more distinctive than two. So for now, I recommend just going with it! 😛
  3. There are a few files in the starter theme that will also need their filenames updated to match:

    • cwd_project.info.yml → cwd_ursine.info.yml

    • cwd_project.libraries.yml → cwd_ursine.libraries.yml

    • cwd_project.theme → cwd_ursine.theme

      • CSS and JavaScript assets should be renamed too, but don't need to match the theme's machine name. Simplifying to ursine.css would be fine, for example.

      • The starter project.scss and project.css files are empty (except for some breakpoint recommendations in comments). The starter project.js is also empty, except for Drupal-specific search code that we commonly need on every project (but also commonly customized).

  4. The "project" machine name must also be updated in the contents of the newly renamed cwd_ursine.info.yml. These instances are marked with a @CUSTOMIZE comment for extra clarity. For example, in the libraries section:

    • - 'cwd_project/global-styling' # @CUSTOMIZE(line 25)
  5. Also in cwd_ursine.info.yml, the front-facing "CWD Starter Theme" name should be set appropriately. (line 5)

    • Optionally, you can also uncomment the libraries reference to custom CKEditor styles. (lines 27 & 28)

    • CKEditor styles are already inherited from the Base Theme, so you should only uncomment these two lines if project-specific styles are needed, and they would not be appropriate to add to the Base Theme itself. If you use custom CKEditor styles, you'll need to add a copy of the css/ckeditor folder from the Base Theme to your child theme for modification, and update the templates/ckeditor_templates.js file as needed.

  6. In cwd_ursine.libraries.yml, the references to filenames for CSS and JavaScript assets (named in step 3 above) should be updated. This is also where you will add any additional custom assets for your project.

  7. There is also a screenshot.png file in the theme which is used in the Drupal CMS. Ask a designer for help updating this!

    • If you want it to match the Base Theme, the typography is done in Avenir Next Medium.
  8. Remove composer.json from your new theme (no need to keep it).

  9. ⚠️ Proceed with "Drupal" steps below, including the very important clean-up of cwd_project.

Drupal

After you create your child theme and commit it to your site repo:

  1. Go to /admin/appearance
  2. Enable your new child theme and set it as the default.
  3. Uninstall cwd_project.
  4. Codify the config for the aforementioned theme changes.
  5. Remove cwd_project from your code repo.

Template sub-folders

Content types and other components

Sub-folders called news, events, slideshow, etc., are meant for content types and other components. Broader sub-folders for components are also ok, whatever works best for your project. (For example, on Biotech, it made sense to have a resources sub-folder, with templates for Service and Instrument components.)

partials

Put "partial" templates in here, such as site-footer.html.twig and incl--article-image.html.twig. These templates do not fill out an entire template, they are pieces of reusable/repeat markup. They can be included straight-up, or with arguments (i.e. include ... with).

Example usage:

  • html.html.twig use of site-footer.html.twig
  • news--full.html.twig use of incl--article-image.html.twig

overrides

Put full template overrides in here, such as views-view.html.twig, media.html.twig, field--post-date.html.twig, _block--with-button.html.twig. These templates are just that: complete templates. They can be included straight-up, or included with arguments, or extended, or embedded.

Example usage:

  • TO DO

About

A starter child theme for cwd_base, providing just the basics for beginning a custom Drupal design.

Resources

Stars

2 stars

Watchers

19 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Latest Stable Version

Starter Child Theme for CD Projects

See also: CD Demo - a Drupal starter-kit and demo site.

Usage

Create a child theme from cwd_project

  1. Grab a copy of this "cwd_project" folder from the GitHub repo.

    • If your site is a fresh clone of CD Demo, you'll already have cwd_project in web/themes/custom.
  2. Rename this copy to suit your project. This will effectively be the machine name for your theme (e.g., The College of Ursine Studies at Cornell might be named cwd_ursine.). For consistency, we usually name our folders and files "cwd_xxxx".

    • CWD is the legacy name for the web development unit of Custom Development. While it's deprecated now, it's still used in many places, and three letters are more distinctive than two. So for now, I recommend just going with it! 😛
  3. There are a few files in the starter theme that will also need their filenames updated to match:

    • cwd_project.info.yml → cwd_ursine.info.yml

    • cwd_project.libraries.yml → cwd_ursine.libraries.yml

    • cwd_project.theme → cwd_ursine.theme

      • CSS and JavaScript assets should be renamed too, but don't need to match the theme's machine name. Simplifying to ursine.css would be fine, for example.

      • The starter project.scss and project.css files are empty (except for some breakpoint recommendations in comments). The starter project.js is also empty, except for Drupal-specific search code that we commonly need on every project (but also commonly customized).

  4. The "project" machine name must also be updated in the contents of the newly renamed cwd_ursine.info.yml. These instances are marked with a @CUSTOMIZE comment for extra clarity. For example, in the libraries section:

    • - 'cwd_project/global-styling' # @CUSTOMIZE(line 25)
  5. Also in cwd_ursine.info.yml, the front-facing "CWD Starter Theme" name should be set appropriately. (line 5)

    • Optionally, you can also uncomment the libraries reference to custom CKEditor styles. (lines 27 & 28)

    • CKEditor styles are already inherited from the Base Theme, so you should only uncomment these two lines if project-specific styles are needed, and they would not be appropriate to add to the Base Theme itself. If you use custom CKEditor styles, you'll need to add a copy of the css/ckeditor folder from the Base Theme to your child theme for modification, and update the templates/ckeditor_templates.js file as needed.

  6. In cwd_ursine.libraries.yml, the references to filenames for CSS and JavaScript assets (named in step 3 above) should be updated. This is also where you will add any additional custom assets for your project.

  7. There is also a screenshot.png file in the theme which is used in the Drupal CMS. Ask a designer for help updating this!

    • If you want it to match the Base Theme, the typography is done in Avenir Next Medium.
  8. Remove composer.json from your new theme (no need to keep it).

  9. ⚠️ Proceed with "Drupal" steps below, including the very important clean-up of cwd_project.

Drupal

After you create your child theme and commit it to your site repo:

  1. Go to /admin/appearance
  2. Enable your new child theme and set it as the default.
  3. Uninstall cwd_project.
  4. Codify the config for the aforementioned theme changes.
  5. Remove cwd_project from your code repo.

Template sub-folders

Content types and other components

Sub-folders called news, events, slideshow, etc., are meant for content types and other components. Broader sub-folders for components are also ok, whatever works best for your project. (For example, on Biotech, it made sense to have a resources sub-folder, with templates for Service and Instrument components.)

partials

Put "partial" templates in here, such as site-footer.html.twig and incl--article-image.html.twig. These templates do not fill out an entire template, they are pieces of reusable/repeat markup. They can be included straight-up, or with arguments (i.e. include ... with).

Example usage:

  • html.html.twig use of site-footer.html.twig
  • news--full.html.twig use of incl--article-image.html.twig

overrides

Put full template overrides in here, such as views-view.html.twig, media.html.twig, field--post-date.html.twig, _block--with-button.html.twig. These templates are just that: complete templates. They can be included straight-up, or included with arguments, or extended, or embedded.

Example usage:

  • TO DO

About

A starter child theme for cwd_base, providing just the basics for beginning a custom Drupal design.

Resources

Stars

2 stars

Watchers

19 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Latest Stable Version

Starter Child Theme for CD Projects

See also: CD Demo - a Drupal starter-kit and demo site.

Usage

Create a child theme from cwd_project

  1. Grab a copy of this "cwd_project" folder from the GitHub repo.

    • If your site is a fresh clone of CD Demo, you'll already have cwd_project in web/themes/custom.
  2. Rename this copy to suit your project. This will effectively be the machine name for your theme (e.g., The College of Ursine Studies at Cornell might be named cwd_ursine.). For consistency, we usually name our folders and files "cwd_xxxx".

    • CWD is the legacy name for the web development unit of Custom Development. While it's deprecated now, it's still used in many places, and three letters are more distinctive than two. So for now, I recommend just going with it! 😛
  3. There are a few files in the starter theme that will also need their filenames updated to match:

    • cwd_project.info.yml → cwd_ursine.info.yml

    • cwd_project.libraries.yml → cwd_ursine.libraries.yml

    • cwd_project.theme → cwd_ursine.theme

      • CSS and JavaScript assets should be renamed too, but don't need to match the theme's machine name. Simplifying to ursine.css would be fine, for example.

      • The starter project.scss and project.css files are empty (except for some breakpoint recommendations in comments). The starter project.js is also empty, except for Drupal-specific search code that we commonly need on every project (but also commonly customized).

  4. The "project" machine name must also be updated in the contents of the newly renamed cwd_ursine.info.yml. These instances are marked with a @CUSTOMIZE comment for extra clarity. For example, in the libraries section:

    • - 'cwd_project/global-styling' # @CUSTOMIZE(line 25)
  5. Also in cwd_ursine.info.yml, the front-facing "CWD Starter Theme" name should be set appropriately. (line 5)

    • Optionally, you can also uncomment the libraries reference to custom CKEditor styles. (lines 27 & 28)

    • CKEditor styles are already inherited from the Base Theme, so you should only uncomment these two lines if project-specific styles are needed, and they would not be appropriate to add to the Base Theme itself. If you use custom CKEditor styles, you'll need to add a copy of the css/ckeditor folder from the Base Theme to your child theme for modification, and update the templates/ckeditor_templates.js file as needed.

  6. In cwd_ursine.libraries.yml, the references to filenames for CSS and JavaScript assets (named in step 3 above) should be updated. This is also where you will add any additional custom assets for your project.

  7. There is also a screenshot.png file in the theme which is used in the Drupal CMS. Ask a designer for help updating this!

    • If you want it to match the Base Theme, the typography is done in Avenir Next Medium.
  8. Remove composer.json from your new theme (no need to keep it).

  9. ⚠️ Proceed with "Drupal" steps below, including the very important clean-up of cwd_project.

Drupal

After you create your child theme and commit it to your site repo:

  1. Go to /admin/appearance
  2. Enable your new child theme and set it as the default.
  3. Uninstall cwd_project.
  4. Codify the config for the aforementioned theme changes.
  5. Remove cwd_project from your code repo.

Template sub-folders

Content types and other components

Sub-folders called news, events, slideshow, etc., are meant for content types and other components. Broader sub-folders for components are also ok, whatever works best for your project. (For example, on Biotech, it made sense to have a resources sub-folder, with templates for Service and Instrument components.)

partials

Put "partial" templates in here, such as site-footer.html.twig and incl--article-image.html.twig. These templates do not fill out an entire template, they are pieces of reusable/repeat markup. They can be included straight-up, or with arguments (i.e. include ... with).

Example usage:

  • html.html.twig use of site-footer.html.twig
  • news--full.html.twig use of incl--article-image.html.twig

overrides

Put full template overrides in here, such as views-view.html.twig, media.html.twig, field--post-date.html.twig, _block--with-button.html.twig. These templates are just that: complete templates. They can be included straight-up, or included with arguments, or extended, or embedded.

Example usage:

  • TO DO

About

A starter child theme for cwd_base, providing just the basics for beginning a custom Drupal design.

Resources

Stars

2 stars

Watchers

19 watching

Forks

Releases

Packages

Used by

Contributors

Languages