【问题标题】:joomla custom field markup phpjoomla自定义字段标记php
【发布时间】:2021-03-14 15:32:50
【问题描述】:

我一直在文章覆盖中使用 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 是以任何一种方式创建的。

我错过了什么?

【问题讨论】:

  • 供您参考,isset()!empty() 的组合是一种非常常用的反模式。请阅读:stackoverflow.com/a/4559976/2943403 如果您正在从事 Joomla 工作,请加入 Joomla Stack Exchange 并在那里提出您的 Joomla 问题,以吸引对 CMS 有深入了解的观众。

标签: php joomla3.0


【解决方案1】:

我采取了不同的方式,因为 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-grid,grid-template-columns 设置为 repeat{8, 40px)。

最终结果是页面用户定义的任何社交媒体帐户的一排链接图标。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多