我一直在文章覆盖中使用 Joomla 的自定义字段,但我没有运气仅在使用字段时添加标记。 我对 PHP 的了解非常有限。
这是我的声明:
<?php if(isset($this->item->jcfields[x]) === true && empty($this->item->jcfields[x]) === false): ?>
<div class="name"><?php echo $this->item->jcfields[x]->value; ?></div>
<?php endif; ?>
以我有限的理解,这似乎是检查该字段是否有内容并且不为空。如果为 true,则显示将字段值包装在 div 中的第二行。 这有效。
相反,如果该字段为空,则应跳过第二行,这不会创建包装 div。
实际上,div 是通过任何一种方式创建的。
我错过了什么?
我采用了不同的方式,因为 Joomla 字段没有使用上面的代码将输出注册为空。
相反,我检索了该字段的值并搜索了文本:
<?php
$word = "https";
$mystring = ($this->item->jcfields[x]->value);
if(strpos($mystring, $word) == false){echo "";
} else{
echo "<div class='facebook-link'>" . $mystring . "</div>";
}
?>
与此 CSS 结合:
.facebook-link a {font-size: 25px; display: inline-block; text-indent: -999em; text-decoration:none;}
.facebook-link a:after {font-family: "FontAwesome"; display: block; text-indent: 0;content: "\f09a";}
PHP 代码已添加到文章覆盖中,并包装在外部包装器中,该包装器被指定为 css 网格,网格模板列设置为重复{8, 40px)。
最终结果是页面用户定义的任何社交媒体帐户的一行链接图标。
如在 J4 论坛上发布的那样,对于自定义文本字段来获取与文章模板覆盖一起使用的条件检查,请使用额外的 strlen() > 0 检查。
<?php if (isset($this->item->jcfields[1]) && strlen($this->item->jcfields[1]->value) > 0) : ?>
<p> Custom field value set to: <?php echo $this->item->jcfields[1]->value; ?></p>
<?php endif; ?>