2016-08-24 48 views
0

我有一个字段组,其中包含一个灵活内容字段,代码为post_builder,其中包含2个子字段image_2_column_textimage_right_text_leftMagento w/Fishpig Wordpress和高级自定义字段

我填充这些字段用于后和我已经添加以下代码上的Magento后视图模板内:

<?php echo $post->getMetaValue('post_builder') ?>

这将返回一个序列化的阵列如下:

a:2:{i:0;s:19:"image_2_column_text";i:1;s:21:"image_right_text_left";}

我的意思是如何循环添加项目,并将我添加到Wordpress文章的内容取出?

有似乎是在下列文件来处理这个代码,但它不会正确呈现:是app/code/community/Fishpig/Wordpress/Addon/ACF/Model/Field/Renderer/Flexible/Content.php

我使用的版本如下:

  • Magento的:1.9.2.4
  • 的WordPress:4.6.0
  • ACF临:5.4.2
  • Fishpig的WordPress:4.2.0.19
  • Fishpig ACF:1.4.0.8

回答

0

我发现这个资源,我已经成功地落实到我自己的安装,因为我有同样的问题,因为你:

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中继器。

您可以冲洗并根据需要重复。

很显然,整个结构都在我跟你联系的回购协议上,我只是握着你的手,因为那里没有太多的文档。

相关问题