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
170
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
100
Drupal 10.3の新機能紹介ウェビナー
acquiajp
0
170
DrupalCon Portland 2024 総まとめウェビナー
acquiajp
0
65
開発者必見!Acquia Cloud IDEで最高のDrupal開発を始めよう
acquiajp
0
110
触って学ぶ!デジタルアセット管理 Acquia DAM ハンズオンウェビナー
acquiajp
0
22
DrupalCon Lille 2023 総まとめウェビナー
acquiajp
0
46
コンテンツ設計手法で変更に強いアプリケーションを実現する〜ローコードによるWebアプリのバックエンド実装 #CNDF2023
acquiajp
0
340
DrupalCon Pittsburgh 2023 総まとめウェビナー
acquiajp
0
79
Acquia製品概要&Site Studioデモのご紹介
acquiajp
0
84
Other Decks in Programming
See All in Programming
[JAWS DAYS 2025] 最近の DB の競合解決の仕組みが分かった気になってみた
maroon1st
0
140
Swift Testingのモチベを上げたい
stoticdev
2
140
ソフトウェアエンジニアの成長
masuda220
PRO
12
2.1k
PRレビューのお供にDanger
stoticdev
1
240
CDKを使ったPagerDuty連携インフラのテンプレート化
shibuya_shogo
0
110
Domain-Driven Design (Tutorial)
hschwentner
13
22k
コミュニティ駆動 AWS CDK ライブラリ「Open Constructs Library」 / community-cdk-library
gotok365
2
250
The Clean ArchitectureがWebフロントエンドでしっくりこないのは何故か / Why The Clean Architecture does not fit with Web Frontend
twada
PRO
2
460
color-scheme: light dark; を完全に理解する
uhyo
7
500
TCAを用いたAmebaのリアーキテクチャ
dazy
0
210
5分で理解する SOLID 原則 #phpcon_nagoya
shogogg
1
390
Rubyと自由とAIと
yotii23
6
1.8k
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
49
2.3k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
227
22k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
134
33k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
27
1.9k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Facilitating Awesome Meetings
lara
53
6.2k
GitHub's CSS Performance
jonrohan
1030
460k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
The Language of Interfaces
destraynor
156
24k
Code Reviewing Like a Champion
maltzj
521
39k
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