我发现这个资源,我已经成功地落实到我自己的安装,因为我有同样的问题,因为你:
https://bitbucket.org/Bobadevv/acf-flexible-content-fishpig
基本上,这教会了我通过使用如下条件语句:
if ($flexLayout["acf_fc_layout"] == "fct_text_image") {
您可以过滤掉灵活的内容并相应地显示内容。
编辑:在这方面做了更多的工作后,我可以确认它完美的工作,并应该按照您的需求做同样的工作。
让我们开始灵活的内容:
if ($post->getMetaValue('content')):
$flex = $post->getMetaValue('content');
$pos = 0;
foreach ($flex as $flexLayout) {
所以在这里我们主要治疗flex内容作为中继器领域。我通过添加一个循环计数器来做一些改动,这样你就可以拥有动态ID(如果你需要多个js实例)
在那个循环中,你需要加载你希望与flex块关联的每个HTML块。首先,我们需要定义块Magento的方式(在wordpress.xml
布局文件):
<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中指定的标识匹配。
- 处理flex内容字段就好像它是普通的ACF中继器。
您可以冲洗并根据需要重复。
很显然,整个结构都在我跟你联系的回购协议上,我只是握着你的手,因为那里没有太多的文档。