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
180
0
Share
Drupal テーマ開発入門講座 第7回 テーマ設定のカスタマイズ
https://www.acquia.com/jp/events/webinars/drupal-theming-development-vol7
アクイアジャパン Acquia Japan
June 29, 2022
More Decks by アクイアジャパン Acquia Japan
See All by アクイアジャパン Acquia Japan
Auth0 by OktaとDrupalで実践!認証付きアプリケーションの新しいアプローチ
acquiajp
0
220
Drupal 10.3の新機能紹介ウェビナー
acquiajp
0
260
DrupalCon Portland 2024 総まとめウェビナー
acquiajp
0
120
開発者必見!Acquia Cloud IDEで最高のDrupal開発を始めよう
acquiajp
0
210
触って学ぶ!デジタルアセット管理 Acquia DAM ハンズオンウェビナー
acquiajp
0
49
DrupalCon Lille 2023 総まとめウェビナー
acquiajp
0
90
コンテンツ設計手法で変更に強いアプリケーションを実現する〜ローコードによるWebアプリのバックエンド実装 #CNDF2023
acquiajp
0
400
DrupalCon Pittsburgh 2023 総まとめウェビナー
acquiajp
0
110
Acquia製品概要&Site Studioデモのご紹介
acquiajp
0
130
Other Decks in Programming
See All in Programming
AI 時代のソフトウェア設計の学び方
masuda220
PRO
29
12k
エージェンティックRAGにAWSで入門しよう!
har1101
7
1.1k
AIエージェントの隔離技術の徹底比較
kawayu
0
460
密結合なバックエンドから TypeScript のコードを生成する
kemuridama
1
730
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
300
AI時代のUIはどこへ行く?その2!
yusukebe
19
6.6k
Lessons from Spec-Driven Development
simas
PRO
0
140
ふつうのFeature Flag実践入門
irof
7
3.6k
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
250
ローカルLLMを使ってB2Bサービスを作っていての学び
yaotti
0
140
AIチームを指揮するOSS「TAKT」活用術 / How to Use “TAKT,” an OSS Tool for Orchestrating AI Teams
nrslib
6
830
プロパティの順序で型推論が壊れる!? TypeScript6.0の修正からContext-Sensitivityの仕組みを追う
bicstone
2
1.3k
Featured
See All Featured
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
Visualization
eitanlees
152
17k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
130
Information Architects: The Missing Link in Design Systems
soysaucechin
0
960
The browser strikes back
jonoalderson
0
1.1k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
220
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
250
It's Worth the Effort
3n
188
29k
Context Engineering - Making Every Token Count
addyosmani
9
940
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
1.6k
The World Runs on Bad Software
bkeepers
PRO
72
12k
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