これは、次のような条件文を使用することで教えてくれました:
if ($flexLayout["acf_fc_layout"] == "fct_text_image") {
柔軟なコンテンツをフィルタリングして適切に表示することができます。
EDIT:この作業をさらに進めていくうちに、完全に機能していることを確認して、必要に応じて同じことを行う必要があります。
はのは、柔軟なコンテンツを開始してみましょう:
if ($post->getMetaValue('content')):
$flex = $post->getMetaValue('content');
$pos = 0;
foreach ($flex as $flexLayout) {
は、そこでここでは、基本的にリピーターフィールドとしてフレックスコンテンツを処理しています。ループカウンタを追加して少しずれているので、動的IDを持つことができます(複数のjsインスタンスが必要な場合)
フレックスブロックに関連付ける各HTMLブロックをロードする必要があります。まず、我々は(wordpress.xml
レイアウトファイルで)ブロックにMagentoの方法を定義する必要があります。
<reference name="flexible_content">
<block name="fct_cta_carousel" template="wordpress/fct/fct_cta_carousel.phtml" type="core/template"/>
そして、上記ループ内:
$this->getChild('fct_cta_carousel')->setData("flex_layout", $flexLayout)->setData('pos',$pos);
echo $this->getChildHtml('fct_cta_carousel', false);
ブロックPHTML次のようになります。
<?php
$flexLayout = $this->getFlexLayout();
if ($flexLayout[acf_fc_layout] == "cta_carousel") {
if ($flexLayout[carousel_visibility] == 1) {
$carouID = "homepage-carousel-" . $this->getPos(); //To enable multiple carousels, we need a dynamic ID, based on position in flex content.
echo '<div class="featured-products featured-products-alt featured-products-visible">';
echo '<h2>' . $flexLayout[cta_row_title_carousel] . '</h2>';
echo '<div id="'. $carouID .'" class="featured-carousel">';
foreach($flexLayout[cta_rows_carousel] as $row){
echo '<div class="carousel-prod">';
echo '<div class="col">';
echo '<div class="img-overlay">';
echo '<img src="'.$row[cta_row_image].'" alt="'. $row['cta_row_title'] .'">';
echo '</div>';
echo '<h3>' . $row['cta_row_title'] . '</h3>';
echo '<a href="'.$row['cta_row_url'].'" class="cover-link"><span class="hide">'.$row['cta_row_title'] . '</span></a>';
echo '</div>';
echo '</div>';
}
echo '</div>';
echo '</div>';
本質的にこれは次のとおりです。
- フレックスレイアウトを開始します
- ループ内のフレックスコンテンツがACFで指定されたIDと一致するかどうかを確認します。
- フレックスコンテンツフィールドをそのままのACFリピーターのように処理します。
必要に応じてすすぎリピートできます。
明らかに、構造全体がそのレポにあります。私はあなたにリンクしました。