タグ付けされた質問 「layout」

最終的にテンプレートファイルをレンダリングするブロック階層を定義するために使用されるxmlファイルを示します。

5
すべてのテーマに表示されるモジュールレイアウトの作成方法
状況は次のとおりです。いくつかの自作モジュールがあり、すべてデフォルトのテーマを使用してテストおよび動作しています。次に、新しいテーマを購入してインストールしました。新しいテーマに切り替えられ、モジュールは表示されません。いくつかの試行/失敗テストの後、対応するレイアウトとテンプレートファイルを、最近インストールしたテーマの対応するフォルダーにコピーする必要があることがわかりました。 だから、私の質問は次のとおりです。モジュールのセットアップ後にインストールされたテーマですべてのモジュールを動作させるにはどうすればよいですか?

2
レイアウト更新用のCMS XMLハンドル
cmsハンドルを使用してcmsページのレイアウトを更新しようとしたいくつかのシナリオがありました。たとえば、ルートを参照してページテンプレートを設定するcms_index_indexハンドルを使用しようとしました。これは失敗し、ホームページのcmsページの表示設定で管理システムを介してこのレイアウトを更新する必要がありました。 また、cms_pageハンドルを使用して、参照にブロックを追加しようとしました。これも失敗し、管理システムを介してレイアウトの更新を実装する必要がありました。 ルートテンプレートをcmsページに割り当てることはできないことを読みました。それは正しいですか、誰でもその理由を説明できますか? また、CMSハンドルがleft、right、rootなどの標準参照を使用できるようにする方法があるのだろうかと思いました。私は頭やコンテンツなどをうまく参照できるようです。

2
ブロックを他のコンテナに移動する方法
初めてなので、サインインとストアスイッチャーをからheader.panelに移動するための回避策を探していheader.containerます。私はこのコードを試したところ、うまくいきません <referenceContainer name="header.container"> <referenceBlock class="Magento\Store\Block\Switcher" name="store.settings.language" template="switch/languages.phtml"> </referenceBlock> </referenceContainer>

6
ホームページからページタイトル(h1)を削除する方法、cms_index_index.xmlが機能しない
カスタムテーマのホームページのメインタイトルを削除しようとしています(lumaテーマの上で実行されています)。 私は現在のcms_index_index.xmlファイルの完全なコンテンツを次のように削除するために通常のタグを追加しようとしました(そして、既にここで回答済みです): <?xml version="1.0"?> <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd"> <body> <referenceBlock name="page.main.title" remove="true"/> </body> </page> 私はすでに次のような他のアプローチを試しました <referenceBlock name="page.main.title" display="false"/> そして <referenceBlock name="cms_page" display="false"/> 成功もなし。キャッシュがクリーンアップされ、ファイルが展開されています。作業中のcms_index_index.xmlファイルは、フォルダーにあります /app/design/frontend/<vendor>/<theme>/Magento_Cms/layout 他にどんなオプションがありますか?なぜこのアプローチは機能しないのですか?

2
Magento 2:コントローラーアクションから「表示」に変数を渡す
Magento 1で、コントローラーアクションから「ビュー」にデータを渡す場合(レイアウトのブロックなど) 経由でグローバルレジストリに値/オブジェクトを追加します Mage::register 実行後にブロックオブジェクトを直接フェッチし、フェッチしたブロックオブジェクトにデータプロパティを設定します loadLayout phtmlファイル内のブロックオブジェクトのメソッドを呼び出し、ブロックオブジェクトにモデル/データベースレイヤーを使用して、コントローラーアクションで以前に保存されたデータを読み取らせる ブロックオブジェクトメソッドを使用してデータベースから読み取ることは、Magento 2でも引き続き機能するようです。これは、特定の種類の操作に適しています。しかしながら、 Magento 2にはグローバルレジストリがありません(またはありますか?) レイアウトシステムは、ファクトリを介してページオブジェクトを作成することで機能するようになりました。Magento1と同じ方法でブロック参照を取得することはできません。 Magento 2では、コントローラーアクションからビューに直接データを渡すことはできますか?それとも、これはMagentoの勇敢な新しいDesign Pattern™の世界のパターンでもありますか?これがあまりにも直接的なパターンである場合、テンプレートに表示したい計算された情報があるが、その情報をステートフルシステムに保存したくない場合(つまり、データベース) 私はこれを自分で一緒にハックするいくつかの異なる方法を考えることができますが、Magento 2 がどのようにあなたにそれを望んでいるかに興味があります。 注:このようなものを使用して、コントローラーアクションでブロックインスタンスをフェッチすることが可能であることを認識しています $resultPage = $this->resultPageFactory->create(); $block = $resultPage->getLayout()->getBlock('catalog.wysiwyg.js'); var_dump(spl_object_hash($block)); Magento 2コアコードはこれを頻繁に行います。しかしながら-ブロックオブジェクトがコントローラオブジェクトにフェッチと思わに利用可能であるとは異なるオブジェクトphtmlのいずれかを介してテンプレート$thisまたは$block(前者($this後(一方、実際にテンプレートを描画オブジェクトであると思われる)$block)があるように思われますMagento Blockタイプのインスタンス)。 #File: path/to/template.phtml var_dump(spl_object_hash($block)); var_dump(spl_object_hash($this)); コントローラーアクションメソッドにデータを設定すると、phtmlテンプレートでデータが利用できなくなり、spl_object_hash上記の結果を比較すると、3つの異なるハッシュが得られるため、「あるように見えます」と言います。しかし、私はこれに十分慣れていないので、上記のエラーは他のエラーになる可能性があります。したがって、ブロックにデータを設定してテンプレートで取得できた場合は、それについて聞いてみたいです!

6
Magentoのフッターにjsを読み込む
<reference name="footer"> <action method="addItem"> <type>skin_js</type> <file>js/fabric/tool/controller_tool.js</file> </action> </reference> 上記のコードを使用して、jsをフッターにロードしました。しかし、Magentoはエラーを投げます 無効なメソッドMage_Page_Block_Html_Footer :: addItem(Array([0] => skin_js [1] => js / fabric / tool / controller_tool.js))) フッターにjsをロードする必要があります。この問題を克服する方法。

4
getChildHtml()にデータを渡すか、子ブロックのメソッドを呼び出します
getChildHtml()呼び出しにデータを渡すことができます。その理由は、ブロックの出力は製品タイプに依存しているからです。したがって、出力を決定できるように、製品をgetChildHtmlに渡します。 私はこれを内部で行っていtemplate/checkout/cart/item/default.phtmlます。 理想的には、呼び出しは次のようになります。 echo $this->getChildHtml('child_block_name', $_item); 次に、ブロックはアイテムから製品タイプを取得し、正しい出力を表示できます。 このデータを渡すことは絶対に不可能であるgetChildHtmlため、コアブロックを書き換えずにこのタイプの動作をどのように実現できるか 私が現在持っている2つのソリューションは次のとおりです(どちらも非常に魅力的ではありません): 1-ヘルパーを作成し、ブロックとテンプレートにalaをレンダリングさせる代わりに、ヘルパーを介してhtml出力にアクセスします $this->helper('my_module')->getItemHtml($_item); 2-子ブロックにアクセスし、テンプレート内のその上でsetData: $this->getChild('child_name')->setData('item', $_item); echo $this->getChildHtml('child_name') Magentoアーキテクチャに関しては、2番は2つの悪のうち小さいほうだと思いますが、テンプレートの内部は見苦しいです。
12 layout  blocks 

3
名前のないレイアウトからブロックを削除する
サードパーティの拡張機能で宣言されているmagento 2のレイアウトからブロックを削除したいのですが、ブロックに名前がありません。 それをしてもいいですか? ブロックは次のように宣言されています <referenceContainer name="before.body.end"> <block class="Magento\Backend\Block\Template" template="[Vendor_Module]::template.phtml"/> </referenceContainer> 使えない <referenceBlock name="..." remove="true" /> ご覧のとおり、名前はありません。

3
Magento 2でAJAXを使用してHTMLをレンダリングする方法
Magento 2でAJAXを介してHTMLをレンダリングする最良の方法を見つけようとしています。 方法1:レイアウトなしでコントローラーを使用する ファイル Foo/Bar/Controller/Popin/Content.php <?php namespace Foo\Bar\Controller\Popin; use Magento\Framework\App\Action\Action; use Magento\Framework\App\Action\Context; /** * Class Content */ class Content extends Action { /** * Content constructor. * * @param Context $context */ public function __construct( Context $context ) { parent::__construct($context); } /** * */ public function execute() { /** @var …

1
Magento 2カスタムテーマレイアウトxmlおよびcssが機能しない
新しいテーマを作成しましたが、問題なく機能していましたが、数日後、機能していないものがあることに気付きました。 default_head_blocks.xmlが、含まれているcssファイル(ホストと外部の両方)を取得しなくなった default.xmlは親のものを上書きしていません。 何が原因なのかわかりません。/ var /フォルダーと/ pub / static / frontend /を削除してみました
12 layout  theme  css 

1
Magento 2:XMLを介してコンテナー内にテキストを追加する方法
フッターのリンクリストの前に1行のテキストを表示しようとしています。これを行うためのテンプレートファイルを作成することは、このタスクのリソースの無駄遣いのようです。私はそれを理解していたので、Magento\Framework\View\Element\Textレイアウトにブロックを含むテキストを出力できました。 XML <referenceContainer name="footer"> <container name="footer.column.about_us" htmlTag="div" htmlClass="column about-us" before="-"> <container name="column.about_us.label" htmlTag="div" htmlClass="label"> <block class="Magento\Framework\View\Element\Text" name="about_us.label"> <arguments> <argument name="data" xsi:type="array"> <item name="text" xsi:type="string">About Us</item> </argument> </arguments> </block> </container> <block class="Magento\Framework\View\Element\Html\Links" name="footer_links.about_us"> <arguments> <argument name="css_class" xsi:type="string">footer links</argument> </arguments> </block> </container> </referenceContainer> 上記は何も出力せず、これがサポートされているかどうか、私が間違っているだけなのか、これを達成するためのより適切な方法があるかどうかはわかりません。 明確にするために、私が現在見ているのは: <div class="column about-us"> <ul class="footer links">...</ul> </div> …

1
Magento 2:モジュールシーケンスインパクトレイアウトはXMLの読み込み順序を処理しますか?
ファイル内の<sequence/>タグはmodule.xml、MagentoがレイアウトハンドルXMLファイルを処理する順序に影響しますか?私の予備調査はnoと言っていますが、それは間違っているようですので、そうでないことの確認/証明を探しています(証明==レイアウトハンドルXMLファイルパスが生成およびロードされるソースコードポイント) シーケンスタグがレイアウトハンドルXMLファイルの読み込み順序に影響しない場合、これらのファイルが読み込まれるモジュールの順序を変更する方法はありますか? 私が解決しようとしている特定の問題は、コンテナが実際にページに追加される前に次のものをロードしているかどうかです <referenceContainer name="product.info.media"> <action method="unsetChild"> <argument name="block" xsi:type="string">product.info.media.image</argument> </action> </referenceContainer> Magento barfs。

6
Magento 2のreferenceBlockの「名前」を見つける
ページからいくつかのブロックを削除したい。たとえば、ロゴのコンテナを削除したいとします。 次に/app/design/frontend/MYVENDORNAME/MYTHEMENAME/Magento_Theme/layout/default.xml、次のコードで作成します。 <page layout="3columns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd"> <referenceBlock name="logo" remove="true"/> </page> この場合、ベーステーマのファイルを検索して、この参照ブロックの名前(name = "logo")を見つけることができました。 問題は、ブロックの名前を見つけるより良い方法があるかどうかです。MagentoのXMlファイルで使用されているすべての名前のリストがあるはずです。それとも何らかのリファレンスですか? たとえば、メニューを削除したいとします(<div class="sections nav-sections">...</div>)。その名前を知るにはどうすればいいですか
11 magento2  layout  xml 

1
getChildHtmlとgetBlockHtmlの違いは何ですか
あらすじ 違いは何であるgetChildHtmlとはgetBlockHtml? テンプレートでcms / blockタイトルを取得するにはどうすればよいですか? 基本的にフッターを自分のフッターに置き換え、自分のフッターを設定しました。<?= $this->getChildHtml('...') ?>これは、使用するまで機能しませんでした<?= $this->getBlockHtml('...') ?>。 レイアウトXML: <layout> <default> <block type="core/template" name="custom_footer" as="footer" template="page/html/footer.phtml"> <block type="cms/block" name="child_1"> <action method="setBlockId"><block_id>footer_child_1</block_id></action> </block> </block> </layout> </default> テンプレート(機能しません): <footer> <div class="row"> <div class="col-sp4"><?= $this->getChildHtml('child_1') ?></div> </div> </footer> テンプレート(作品): <footer> <div class="row"> <div class="col-sp4"><?= $this->getBlockHtml('child_1') ?></div> </div> </footer> 解決: 最初に、次の方法でフッターをオーバーライドする必要がありlocal.xmlました。 <default> …

2
Mage_Pageモジュールにページレイアウトを追加するにはどうすればよいですか?
私はコアというアップグレードMagentoの後に発見されたMage_Pageのは、config.xml手動で編集されていた、そして今、私は上書きコアをしていない方法でXMLを変更するために探しています。 コアXMLの例を次に示します。 <config> <modules> <Mage_Page> <version>1.6.0.0</version> </Mage_Page> </modules> <global> <models> <page> <class>Mage_Page_Model</class> </page> </models> <blocks> <page> <class>Mage_Page_Block</class> </page> </blocks> <page> <layouts> <empty module="page" translate="label"> <label>Empty</label> <template>page/empty.phtml</template> <layout_handle>page_empty</layout_handle> </empty> <one_column module="page" translate="label"> <label>1 column</label> <template>page/1column.phtml</template> <layout_handle>page_one_column</layout_handle> <is_default>1</is_default> one_columnまたはのような別のレイアウトを追加しようとしていますempty。による上書きconfig.xmlはapp/code/local/Mage/Page/etc/config.xmlうまくいかなかったようですが、コアに触れずにどうすればいいですか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.