免责声明:如果您从未使用过ACF灵活内容来构建网站,请保留仇恨及其所有内容 - 只是寻求帮助。
我创建了一个100%模块化的网站,使用灵活内容完成。
我有以下页面:
Home, About, Services, Blog, Portfolio, Contact
所有使用灵活内容设置样式的页面都是PAGES。
我为服务和投资组合创建了一个自定义字段,我使用WP Query来显示每个单独的项目。这些是CUSTOM字段。如果邮件类型为“服务”,则显示此字段组。不是一个页面。
因此,当您点击它时,您会转到single-[custom-post-type].php
,但我只有single.php
才能保持动态,这是有效的。
问题在于,当我在服务或项目组合中展示灵活的内容页面模板时,我添加了一些项目,我需要转到每个项目并设置布局。
如何在服务或投资组合自定义字段中保持所有相同的布局?
答案 0 :(得分:1)
首先创建你的ACF Master块,例如,一个推荐部分,这将在块内有转发器字段等。在这个例子中,我们将其称为Testimonial Master。
然后创建另一个名为Testimonial Block的灵活内容字段,其中包含您选中要显示或隐藏的复选框。
现在,您将在所选父页面或“选项”页面上填充推荐大师。然后,您应该将推荐块添加到您希望该块出现的任何页面。
然后你会检查页面上的推荐栏是否在页面上,如果它在页面上,那么你将检查推荐大师是否有值,如果它有一个值,那么你可以从推荐大师中提取值。
<?php
if( have_rows('page_structure') ):
while ( have_rows('page_structure') ) :
the_row();
if( get_row_layout() == 'testimonial_block' ):
if( get_sub_field('testimonial_block_toggle') == 'show' ):?>
<div class="testimonials">
<?php the_sub_field('testimonial_master_title', 1); ?>
</div>
<?php endif;
endif;
endwhile;
endif;
?>
&#34; 1&#34;是页面ID,如果您在母版页上填充了该字段,请使用此ID。或者,如果您使用ACF选项页面插件,请更改&#34; 1&#34;到&#34;&#39;选项&#39;&#34;。
以下是有关从其他帖子获取值的更多文档,包括转发器字段的值。
https://www.advancedcustomfields.com/resources/how-to-get-values-from-another-post/
编辑:根据您的示例自定义标题
创建一个自定义头文件并添加该头块的代码。
现在为文本区域创建高级自定义字段。例如header_text_block,将其设置为WYSIWYG编辑器。
现在在您的代码中使用:
<?php the_field('header_text_block');?>
然后,您将在每个页面上使用完全相同的标题,但是它可以让您为每个页面单独编辑文本。
编辑:此代码的示例以及
的示例另外我觉得你很困惑,只有1个php / html文件?你可以使用page.php。
这是我所说的一个例子,1个php文件:
<?php if( have_rows('page_structure') ):
while ( have_rows('page_structure') ) : the_row();
if( get_row_layout() == 'page_featured' ):
$image = get_sub_field('page_featured_image');
if( !empty($image) ):?>
<img src="<?php echo $image['url']; ?>" alt="<?php echo $image['alt']; ?>">
<?php endif;
endif;
if( get_row_layout() == 'page_breadcrumbs' ):
if( !in_array( 'hide', get_sub_field('page_breadcrumbs_hide') ) ):?>
<?php if ( function_exists('yoast_breadcrumb') ) {yoast_breadcrumb('<p id="breadcrumbs">','</p>');}?>
<?php else :
endif;
endif;
endwhile;
endif;
?>
然后在页面编辑器上看起来像这样:
然后,您可以根据需要编辑每个部分,并将部分拖放到您想要的部分,这样可以轻松进行拆分测试。
所有样式都是相同的,只是你可以更改内容,如果你想要你可以添加更容易改变样式的能力。它只使用1个PHP文件作为模板。