php-尝试优化代码以基于多个/不同条件输出值

基本上,我有这个if else条件,该条件检查节点的实体类型并根据条件输出值.如下代码所示,如​​果实体类型为press_release,则在标记输出Press Release;如果实体类型为访谈,则输出采访.

问题在于,一旦存在多个条件,就很难维护,是否有缩短方法

{% for newsdesk in accordion.entity.field_newsdesk_and_press %}

    {% if article.entity.getType == 'press_release' %}

         <a href="#" class="tag-label">Press Release</a>

    {% endif %}


   {% if article.entity.getType == 'interview' %}

         <a href="#" class="tag-label">interview</a>

    {% endif %}

{% endfor %}

解决方法:

事实是,page.html.twig可能是做这种事情的第二坏模板(以html.html.twig为首,其次是node.html.twig).相反,您最好在现场执行此操作.

模板建议

但是首先,启用Twig调试非常重要.只需遵循:Debugging Twig templates.从现在开始,您将在HTML文档中将模板建议打印为HTML注释.请参见我的“ Article”内容类型的body字段的示例输出

<!-- THEME DEBUG -->
<!-- THEME HOOK: 'field' -->
<!-- FILE NAME SUGGESTIONS:
   * field--node--body--article.html.twig
   * field--node--body.html.twig
   * field--node--article.html.twig
   * field--body.html.twig
   x field--text-with-summary.html.twig
   * field.html.twig
-->
<!-- BEGIN OUTPUT from 'core/themes/classy/templates/field/field--text-with-summary.html.twig' -->

<div property="schema:text" data-quickedit-field-id="node/1/body/en/teaser" class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item quickedit-field"><p>Elitphas sellus laoreet consequa laoreetc maecenas aesent iam ras fames. Volutpat sacras feugiatm hendre lacusp esent quamsusp uada netus. Duinulla sque teger justop justov metiam. Uisque vestibu tcras pretium llam lum llam. Consec ctetur llaut necinte magnap vel proin. Justo teger sedinteg vulput ligula arcu litora telluss eger. Roin massan quamnull nibh vitaenu sduis felis rproin ndisse. Ipsumves nullap teger mussed condim sacras.</p></div>

<!-- END OUTPUT from 'core/themes/classy/templates/field/field--text-with-summary.html.twig' -->

列出的模板前面的小x表示当前正在使用的模板.在实际字段输出的顶部,将打印出硬盘驱动器上当前模板文件的相对路径.现在,您可以复制该模板,将其粘贴到主题的模板中,然后根据评论建议之一对其进行重命名.可能尽可能不同.

因此,在您的情况下,将是:

> field–node–field-newsdesk-and-press-press-release.html.twig
> field–node–field-newsdesk-and-press-interview.html.twig

在其中,您可以编辑标记以适合您的需求.通过hook_theme_suggestions_HOOK_alter,现有模板建议也可以轻松扩展为尊重视图模式.

我仍然认为这不是理想的解决方案(尽管已广泛采用这种方式).管理许多模板可以变得非常快.另外:后端中的实际Field UI变得越来越无用.

我建议以编程方式创建两个伪字段,而这些伪字段可以简单地放在每个节点类型的“管理显示”设置中.或完全在预处理功能中以编程方式再次执行此操作.但这将远远超出您的问题范围,如果您自己没有完成,则最好单独询问.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...