Magentoめも

Magento2 管理画面themeの作成

管理画面側のテンプレートを触りたい場合はthemeを作成するとできるようです。
作成したthemeをmodule側に設定し、フックポイントをObserverでフックしてやればテンプレートから受け取った値をゴニョゴニョすることもできそうです。

設定ファイルの作成

app/design/adminhtml/VendorName/ThemeName/ の構成になります。
VendorName = Yassujp
ThemeName = blank とします。

app/design/adminhtml/Yassujp/blank/theme.xml

<theme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Config/etc/theme.xsd">
    <title>Yassujp Blank</title>
    <parent>Magento/backend</parent>
</theme>

app/design/adminhtml/Yassujp/blank/registration.php

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::THEME,
    'adminhtml/Yassujp/blank',
    __DIR__
);

module側に定義追加

app/code/Yassujp/HelloWorld/etc/module.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Module/etc/module.xsd">
    <module name="Yassujp_HelloWorld" setup_version="1.0.1">
        <sequence>
            <module name="Magento_Theme"/>
        </sequence>
    </module>
</config>

app/code/Yassujp/HelloWorld/etc/di.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <type name="Magento\Theme\Model\View\Design">
        <arguments>
            <argument name="themes" xsi:type="array">
                <item name="adminhtml" xsi:type="string">Yassujp/blank</item>
            </argument>
        </arguments>
    </type>
</config>

これで準備がようやく完了です。

コマンドラインにて以下を実行します。

$ php bin/magento setup:upgrade

変更したいテンプレートをコピー

今回は管理画面でSALES - Orders - View で確認できる注文詳細の左下 Order Total の Notes for this Order 部分に Price のテキストフィールドを追加してみます。

該当するテンプレートは以下のパスになります。
vendor\magento\module-sales\view\adminhtml\templates\order\view\history.phtml

コピー先のパスは以下になります。
app\design\adminhtml\Yassujp\blank\Magento_Sales\templates\order\view\history.phtml

あとはこのテンプレートに追加するだけです。
Statusの下に以下のように記述してみました。

            <div class="admin__field">
                <label for="history_price" class="admin__field-label">
                    <?php echo __('Price') ?>
                </label>
                <div class="admin__field-control">
                    <input name="history[price]"
                           type="text"
                           id="history_price"
                           class="admin__control-text"
                           value="" />
                </div>
            </div>

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS