CMSページのタイトルを通常のレイアウトの外側に移動します
-
13-12-2019 - |
質問
私は 1列レイアウトのCMSページを持っています。ページのメインコンテナの外側のページのタイトルを移動したいのですが。現在の設定は次のとおりです。
<div class="main-container col1-layout">
<div class="main">
<div class="page-title">
<h1>Page Title</h1>
</div>
<p>Some content here..</p>
</div>
</div>
</div>
.
ページタイトル要素はメインコンテナの外側に座っています。これはXMLアップデートを通して行うことができますか?
解決
単純なレイアウトアップデートXMLではこれを行うことはできません。これを実現する最も簡単な方法は、CMSページに固有の新しいルートテンプレートを作成することです。これについての手順を以下に示します。
1。レイアウト更新XMLファイル
CMS > Pages > [Select your CMS Page] > Design > Layout Update XML
セクションに進みます。このレイアウトの更新コードをそこに置く。
<!-- removing default page heading block -->
<reference name="content">
<remove name="page_content_heading" />
</reference>
<!-- defines new root template;add new page head block -->
<reference name="root">
<action method="setTemplate">
<template>custom/page/cms_1column.phtml</template>
</action>
<block type="core/template" name="cms_page_heading" as="cms_page_heading" template="cms/content_heading.phtml"/>
</reference>
.
このコードは基本的に3つのアクションを実行します。
-
デフォルトのCMSページの見出しブロックをレイアウトから削除します。そのため、CMSページで表示しているデフォルトのタイトルセクションを最終的に削除します。
-
新しいルートテンプレート、CMSページの
custom/page/cms_1column.phtml
を定義します。なぜこれが必要なのか説明します。 -
再度CMSページの見出しブロックを再定義していますが、今回は
root
ブロックの内部ではなく、content
ブロック内の内部ではありません。
2。カスタムルートテンプレート
を定義します新しいファイルapp\design\frontend\[package]\[theme]\template\custom/page/cms_1column.phtml
を作成し、そのファイルにapp\design\frontend\[package]\[theme]\template\page/1column.phtml
のすべてのコンテンツをコピーします。その後、このファイル内の見出しブロックをこのファイルの中に呼び出します。
<div class="wrapper">
<?php echo $this->getChildHtml('global_notices') ?>
<div class="page">
<?php echo $this->getChildHtml('header') ?>
<?php echo $this->getChildHtml('cms_page_heading') ?>
<div class="main-container col1-layout">
<div class="main">
...
.
<?php echo $this->getChildHtml('cms_page_heading') ?>
このパートはCMSページの見出しブロックをレンダリングし、それは layout-div ブロックを上回ります。必要に応じて、必要に応じてCMSページの見出しブロックの位置を調整できます。
このカスタムCMSページの見出しブロックを追加するためだけに新しいルートテンプレートを使用しています。これはコアファイルの触れを避け、したがってこの場合は最良の解決策になるでしょう。
他のヒント
これは私のXMLを実行することはできません。XML
以下のように<cms_page translate="label">
<label>CMS Pages (All)</label>
<reference name="content">
<block type="core/template" name="page_content_heading" template="cms/content_heading.phtml"/>
<block type="page/html_wrapper" name="cms.wrapper" translate="label">
<label>CMS Content Wrapper</label>
<action method="setElementClass"><value>std</value></action>
<block type="cms/page" name="cms_page"/>
</block>
</reference>
</cms_page>
.
CMSページのページタイトルは、Content Area内で呼ばれるcontent_heading.phtml
から来ています。
だからメインコンテナを並べたい場合は、1column.phtml
のように状態を付けることができます
<?php if(Mage::app()->getRequest()->getRouteName() === 'cms' && $this->getContentHeading()):?>
<div class="page-title">
<h1><?php echo $this->getContentHeading(); ?></h1>
</div>
<?php endif; ?>
.
または良い方法は、CMSページ用の独自のルートファイルを設定して、そのファイルの変更を必要に応じて設定できます。
CMSページの新しいレイアウトの手順に従うことができますこちら