如果是的话,我怎么能把它变成一个衬里,如果是的话,显示一个`<a>`, else show a `<p>`</p></a>

时间:2011-11-02 13:28:30

标签: php html if-statement

我有这个代码,我希望尽可能小。
正如您所看到的,我们重复了很多相同的HTML代码,但稍作修改。

<?php if( ! $liked_before): // If not liked before, show the link a href?>
<a href="javascript:;" id="action-like">
    <div class="action_like" title="Like">
        <abbr title="Like">Like</abbr>
    </div>
</a>

<?php elseif($liked_before): // else dim it and make non clickable ?>

<p id="action-like" rel="liked_before">
        <div class="action_like" title="You Like this" style="opacity: 0.5;">
             <abbr title="You Like this">Like</abbr>
        </div>
</p>
<?php endif; ?>

对于我如何将其浓缩为更少的问题,我感到很困惑 我也直接使用与上面相同的代码,所以我有2个if if语句 如您所见,唯一改变的是:

  • a href=...代码添加到p代码
  • 标题'喜欢' - &gt; '你喜欢这个'
  • p标记必须具有rel,因为它在javascript中使用。

有什么想法可以让我更精简吗?
某种内联回声。
你会怎么做?

6 个答案:

答案 0 :(得分:7)

我会保留原样。

从您的示例中,您还要修改<p><a>标记内的HTML(样式和缩写属性),并将一些东西混合在一起解决这个微不足道的“问题”只会导致管理代码的可读性和难度较低。特别是从效率的角度来看,这里没有任何好处。

答案 1 :(得分:1)

这听起来好像可以使用更好的CSS来整理。您可以使用1个带有“喜欢”类的标签来区分这两个标签。非常整洁的代码只有两个不同的标签。

答案 2 :(得分:1)

我会选择

  • 跳过else条件,您不需要它。它既可以被喜欢也可以不受欢迎。
  • 在两种情况下将其包裹在p(或更确切地说是div)内。
  • 仅在检查时输出a元素。执行检查,一次打开,一次打开。
  • 使用CSS设置不透明度。

答案 3 :(得分:0)

这样的东西?

<html><?php echo $booleanCondition ? '<b>blah</b>' : '<i>blah</i>';?><html>

答案 4 :(得分:0)

为了在答案中列出实际答案:

创建一个打印此函数的函数,并在整个php文件中将该函数作为单行代码调用。

答案 5 :(得分:-4)

像这样:

<?php 
   function getHtml($liked_before){
      $title='';
      $styleAttr='';
      if( ! $liked_before){ // If not liked before, show the link a href
          $title='Like';
      }
      else{ // else dim it and make non clickable
          $title='You Like this';
          $styleAttr=' style="opacity: 0.5;"';
      }

      $html='<div class="action_like" title="'.$title.'"'.$styleAttr.'><abbr title="'.$title.'">Like</abbr></div>';

      if( ! $liked_before){ // If not liked before, show the link a href
          $html='<a href="javascript:;" id="action-like">'.$html.'</a>';
      }
      else{ // else dim it and make non clickable
          $html='<p id="action-like" rel="liked_before">'.$html.'</p>';
      }
      return $html;
  }
?>