Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Drupal テーマ開発入門講座 第7回 テーマ設定のカスタマイズ
Search
アクイアジャパン Acquia Japan
June 29, 2022
Programming
0
160
Drupal テーマ開発入門講座 第7回 テーマ設定のカスタマイズ
https://www.acquia.com/jp/events/webinars/drupal-theming-development-vol7
アクイアジャパン Acquia Japan
June 29, 2022
Tweet
Share
More Decks by アクイアジャパン Acquia Japan
See All by アクイアジャパン Acquia Japan
Auth0 by OktaとDrupalで実践!認証付きアプリケーションの新しいアプローチ
acquiajp
0
57
Drupal 10.3の新機能紹介ウェビナー
acquiajp
0
110
DrupalCon Portland 2024 総まとめウェビナー
acquiajp
0
39
開発者必見!Acquia Cloud IDEで最高のDrupal開発を始めよう
acquiajp
0
63
触って学ぶ!デジタルアセット管理 Acquia DAM ハンズオンウェビナー
acquiajp
0
18
DrupalCon Lille 2023 総まとめウェビナー
acquiajp
0
41
コンテンツ設計手法で変更に強いアプリケーションを実現する〜ローコードによるWebアプリのバックエンド実装 #CNDF2023
acquiajp
0
330
DrupalCon Pittsburgh 2023 総まとめウェビナー
acquiajp
0
77
Acquia製品概要&Site Studioデモのご紹介
acquiajp
0
75
Other Decks in Programming
See All in Programming
Generative AI Use Cases JP (略称:GenU)奮闘記
hideg
1
290
Webの技術スタックで マルチプラットフォームアプリ開発を可能にするElixirDesktopの紹介
thehaigo
2
1k
アジャイルを支えるテストアーキテクチャ設計/Test Architecting for Agile
goyoki
9
3.3k
AI時代におけるSRE、 あるいはエンジニアの生存戦略
pyama86
6
1.2k
What’s New in Compose Multiplatform - A Live Tour (droidcon London 2024)
zsmb
1
470
ピラミッド、アイスクリームコーン、SMURF: 自動テストの最適バランスを求めて / Pyramid Ice-Cream-Cone and SMURF
twada
PRO
10
1.3k
Streams APIとTCPフロー制御 / Web Streams API and TCP flow control
tasshi
2
350
Laravel や Symfony で手っ取り早く OpenAPI のドキュメントを作成する
azuki
2
120
ヤプリ新卒SREの オンボーディング
masaki12
0
130
エンジニアとして関わる要件と仕様(公開用)
murabayashi
0
290
Amazon Bedrock Agentsを用いてアプリ開発してみた!
har1101
0
340
PHP でアセンブリ言語のように書く技術
memory1994
PRO
1
170
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
506
140k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
25
1.8k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
Building Adaptive Systems
keathley
38
2.3k
The Pragmatic Product Professional
lauravandoore
31
6.3k
Site-Speed That Sticks
csswizardry
0
26
A Tale of Four Properties
chriscoyier
156
23k
Automating Front-end Workflow
addyosmani
1366
200k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
0
96
Raft: Consensus for Rubyists
vanstee
136
6.6k
Docker and Python
trallard
40
3.1k
Fashionably flexible responsive web design (full day workshop)
malarkey
405
65k
Transcript
ୈ7ճ ςʔϚઃఆͷΧελϚΠζ Drupal ςʔϚ ։ൃೖߨ࠲
Drupal ςʔϚ։ൃೖߨ࠲γϦʔζ – Drupalʹ͓͚ΔʮςʔϚʯͱɺWebαΠτͷݟͨΛ୲͏ػೳͰ͢ɻຊΣϏφʔγϦʔ ζͰɺDrupalͷςʔϚ։ൃʹؔ͢ΔجૅࣝΛղઆ͠·͢ɻ – DrupalͷϑϩϯτΤϯυपΓʹ͍ͭͯମܥతʹֶͼ͍ͨํɺࣗͰΧελϜςʔϚΛ࡞Ε ΔΑ͏ʹͳΓ͍ͨํɺΞΫΠΞೝఆσϕϩούʔࢼݧΛࢦ͢ํʹ͓͢͢ΊͰ͢ɻ – DrupalΛҰ௨Γૢ࡞ͨ͜͠ͱ͕͋ΔํΛରͱ͍ͯ͠·͢ɻ·ͩDrupalΛ৮ͬͨ͜ͱ͕ແ
͍ํɺॳ৺ऀ͚DrupalνϡʔτϦΞϧಈըʢຊޠʣΛઌʹݟ͓ͯ͘ͱΑΓཧղ͕ਂ ·Γ·͢ɻ
1. ςʔϚݻ༗ͷઃఆ 2. ςʔϚઃఆΛΧελϚΠζ͢Δ 3. ςʔϚͷઃఆΛ༻͢Δ 4. ςʔϚΠϯετʔϧ࣌ʹॳظΛηοτ͢Δ 5. ࿅श
ΞδΣϯμ
ςʔϚݻ༗ͷઃఆ
– ςʔϚͷΠϯετʔϧ – ςʔϚͷΞϯΠϯετʔϧ – σϑΥϧτςʔϚͷΓସ͑ – ৽͍͠ςʔϚͷՃ ʢUpdate
ManagerϞδϡʔϧͰఏڙʣ ※ςʔϚͷՃϞδϡʔϧಉ༷ɺcomposerͰߦ͏ํ๏͕ਪ ͞Ε͍ͯ·͢ɻ – ݸʑͷςʔϚݻ༗ͷઃఆ ཧϝχϡʔʮςʔϚʯͰͰ͖Δ͜ͱ
ݸʑͷςʔϚݻ༗ͷઃఆ ηΫγϣϯλϒͷʮઃఆʯ(/admin/appearance/settings)͔Βɺ ֤ςʔϚ͝ͱʹݻ༗ͷઃఆ͕ߦ͑Δϖʔδ͕༻ҙ͞Ε͍ͯ·͢ɻ
σϑΥϧτͰ༻ҙ͞Ε͍ͯΔઃఆ߲ – ϖʔδཁૉͷදࣔͷઃఆ – ϩΰը૾ͷઃఆ – ͓ؾʹೖΓΞΠίϯͷઃఆ ʹؔͯ͠ɺΧελϜςʔϚଆ ͰԿ͠ͳͯ͘ɺσϑΥϧτ Ͱ༻ҙ͞Ε·͢ɻ
ίϯτϦϏϡʔτςʔϚͷςʔϚઃఆΛ͍ͯΈΑ͏ Bootstrap Barrioͷ߹ ςʔϚಠࣗͷઃఆ߲
ίϯτϦϏϡʔτςʔϚͷςʔϚઃఆΛ͍ͯΈΑ͏ W3CSSͷ߹ ςʔϚಠࣗͷઃఆ߲
ςʔϚઃఆͷΧελϚΠζ Drupal 8Ҏ߱Ͱɺ *.theme ϑΝΠϧ ·ͨ theme-settings.php ϑΝΠϧʹPHPؔΛՃ͢Δ͜ͱʹΑΓɺςʔϚઃఆͷϑΥʔϜ ΛมߋͰ͖·͢ɻ
ςʔϚઃఆΛΧελϚΠζ͢Δ
ςʔϚઃఆΛΧελϚΠζ͢Δํ๏ 1. ςʔϚσΟϨΫτϦʹ *.theme ϑΝΠϧ ͘͠ theme- settings.php ϑΝΠϧΛ༻ҙ͠·͢ɻ 2.
༻ҙͨ͠ϑΝΠϧͰ THEME_form_system_theme_settings_alterؔΛ࣮͠· ͢ɻ
<?php use Drupal\Core\Form\FormStateInterface; function marucha_form_system_theme_settings_alter(&$form, FormStateInterface $form_state) { $form['twitter_url'] =
array( '#type' => 'textfield', '#title' => t('Twitter URL'), '#description' => t(“TwitterΞΧϯτͷURLΛೖྗ͠·͢ɻ"), '#default_value' => theme_get_setting('twitter_url'), ); } γϯϓϧͳΧελϚΠζ theme-settings.php ઃఆϖʔδʹςΩετ ϑΟʔϧυ͕Ճ͞Ε· ͢ɻ
hook_form_system_theme_settings_alter() ͷ༷ – ςʔϚ͕ςʔϚݻ༗ͷઃఆϑΥʔϜΛมߋͰ͖ΔΑ͏ʹ͢ΔϑοΫؔͰ͢ɻ – ͜ͷϑοΫΛ༻͢ΔͱɺϑΥʔϜཁૉͷՃɺσϑΥϧτͷมߋɺϑΥʔ ϜཁૉͷআͳͲɺDrupalͷForm APIͰڐՄ͞Ε͍ͯΔํ๏ͰςʔϚݻ༗ͷઃ ఆϑΥʔϜΛมߋͰ͖·͢ɻ
– ؔ࿈υΩϡϝϯτ – function hook_form_system_theme_settings_alter (Drupal API) – function hook_form_FORM_ID_alter (Drupal API) – Introduction to Form API (Drupal Wiki) – Form and render elements (Drupal API)
ԋश ΧελϜςʔϚͷઃఆϖʔδʹςΩετϑΟʔϧυΛ1ͭՃͯ͠Έ Α͏ – theme-settings.php ϑΝΠϧͷ࡞ – ؔͷ࣮ ԋशͰ༻͢ΔιʔείʔυGithubʹ͋Γ·͢ɻ https://github.com/hmaruyama/my-drupal9-theming/tree/vol7
ςʔϚͷઃఆΛ༻͢Δ
theme_get_settingؔ – ςʔϚͷPHPϑΝΠϧͰɺtheme_get_setting ؔΛݺͼग़͢͜ ͱͰϢʔβʔ͕ςʔϚઃఆϖʔδͰઃఆͨ͠ΛऔಘͰ͖·͢ɻ theme_get_setting('twitter_url');
TwigςϯϓϨʔτͰઃఆΛ༻͢Δ ઃఆΛςϯϓϨʔτϑΝΠϧʹ͢ʹɺϓϦϓϩηεؔͰɺtheme_get_settingؔΛ༻ͯ͠ઃ ఆΛऔಘ͠ɺvariablesྻʹೖ͠·͢ɻ function marucha_preprocess_page(&$variables) { $variables['twitter_url'] = theme_get_setting('twitter_url'); }
marucha.theme ͦ͏͢Δ͜ͱͰɺtwigϑΝΠϧͰ௨ৗͷTwigมͱಉ͡Α͏ʹΞΫηεͰ͖·͢ɻ <li><a href="{{ twitter_url }}" target="_blank">Twitter</a></li> page.html.twig
ԋश ઃఆΛTwigςϯϓϨʔτͰ༻ͯ͠ΈΑ͏ – *.themeϑΝΠϧʹϓϦϓϩηεؔΛ࣮ – TwigςϯϓϨʔτͷฤू ԋशͰ༻͢ΔιʔείʔυGithubʹ͋Γ·͢ɻ https://github.com/hmaruyama/my-drupal9-theming/tree/vol7
ςʔϚΠϯετʔϧ࣌ʹ ॳظΛηοτ͢Δ
ςʔϚʹॳظΛηοτ͢Δ – ςʔϚઃఆʹɺॳظΛઃఆ͢Δ͜ͱ͕ՄೳͰ͢ɻ – ςʔϚσΟϨΫτϦʹ config/install/*.settings.yml ϑΝΠϧΛ࡞͠ɺ͜ͷ தͰՃ͢ΔϑΥʔϜཁૉͷॳظΛΩʔόϦϡʔܗࣜͰηοτ͠·͢ɻ – ͜ͷॳظςʔϚͷΠϯετʔϧ࣌ʹө͞Ε·͢ɻ
logo: use_default: false # ςʔϚͷϩΰը૾Λ༻͠ͳ͍ twitter_url: 'https://twitter.com' # Twitter URLͷσϑΥϧτ config/install/marucha.settings.yml
ԋश ΧελϜςʔϚͷςʔϚઃఆʹॳظΛηοτͯ͠ΈΑ͏ – config/install/*.settings.yml ϑΝΠϧΛ࡞ – ςʔϚΛ࠶Πϯετʔϧͯ͠ɺॳظ͕ηοτ͞ΕΔ͔֬ೝ ԋशͰ༻͢ΔιʔείʔυGithubʹ͋Γ·͢ɻ https://github.com/hmaruyama/my-drupal9-theming/tree/vol7
࿅श
ΧελϜςʔϚͰςʔϚઃఆΛΧελϚΠζ͢ΔࡍʹɺͲͷϑΝΠϧʹϑοΫؔ Λهड़Ͱ͖·͔͢ʁ2ͭબ͍ͯͩ͘͠͞ɻ 1. *.theme 2. src/Form/SettigsForm.php 3. index.php 4. theme-settings.php
࿅श1
ΧελϜςʔϚͰςʔϚઃఆΛΧελϚΠζ͢ΔࡍʹɺͲͷϑΝΠϧʹϑοΫؔ Λهड़Ͱ͖·͔͢ʁ2ͭબ͍ͯͩ͘͠͞ɻ 1. *.theme 2. src/Form/SettigsForm.php 3. index.php 4. theme-settings.php
࿅श1 ਖ਼ղɿ1, 4
ςʔϚݻ༗ͷઃఆʹॳظΛ༻ҙ͢ΔࡍʹɺඞཁͳϑΝΠϧ࣍ͷ͏ͪͲΕ Ͱ͔͢ʁ 1. *.settings.yml 2. config/install/*.settings.yml 3. config/schema/*.schema.yml 4. theme-settings.php
5. *.theme ࿅श2
ςʔϚݻ༗ͷઃఆʹॳظΛ༻ҙ͢ΔࡍʹɺඞཁͳϑΝΠϧ࣍ͷ͏ͪͲΕ Ͱ͔͢ʁ 1. *.settings.yml 2. config/install/*.settings.yml 3. config/schema/*.schema.yml 4. theme-settings.php
5. *.theme ࿅श2 ਖ਼ղɿ2
ຊͷΞδΣϯμऴྃ
1. ςʔϚݻ༗ͷઃఆ 2. ςʔϚઃఆΛΧελϚΠζ͢Δ 3. ςʔϚͷઃఆΛ༻͢Δ 4. ςʔϚΠϯετʔϧ࣌ʹॳظΛηοτ͢Δ 5. ࿅श
ΞδΣϯμ
None