2016-08-24 3 views
0

У меня есть группа полей с одним полем содержимого, содержащим код post_builder, который содержит 2 подполя, image_2_column_text и image_right_text_left.Magento 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 Pro: 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") { 

Вы можете отфильтровать вашу гибкий контент и отображение вещь соответственно.

EDIT: Сделав больше работы над этим, я могу подтвердить, что он отлично работает и должен делать то же самое для ваших нужд.

Давайте начать гибкое содержание:

if ($post->getMetaValue('content')): 
    $flex = $post->getMetaValue('content'); 
     $pos = 0; 
     foreach ($flex as $flexLayout) { 

Таким образом, здесь мы по существу обработку гибкого контента в качестве поля ретранслятора. Я немного отклонился, добавив счетчик циклов, чтобы иметь динамические идентификаторы (в случае необходимости нескольких экземпляров js).

В этом цикле вам нужно загрузить каждый блок HTML, который вы хотите связать с блоком flex.Во-первых, мы должны определить преграждает путь 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.
  • Процессы полей гибкого содержимого, как если бы это был повторитель ACF.

Вы можете промывать и повторять по мере необходимости.

Очевидно, что вся структура находится на том репо, с которым я вас связал, я просто держу вас за руку, так как там не так много документации.

Смежные вопросы