【问题标题】:Terrible Layout - php and html/tables intermxed糟糕的布局 - php 和 html/tables 混合
【发布时间】:2011-07-03 22:47:49
【问题描述】:

我目前正在做一个项目,其中 Index.php 文件基本上充当布局页面,并且基本上使用表格进行布局。

请看下面的内容。这只是代码的一小部分,还有更多类似的。

我需要将此文件传递给前端开发人员/设计师,以便他可以更改布局以及更改代码以使用 CSS 而不是表格进行布局。但我认为这是一团糟,设计师可能无法理解和修改它。

构建和组织这段代码的最佳方式是什么,以便

1)代码变得更加简洁、结构化和有条理。

2)设计师更容易理解和改变布局。

<table width="770" border="0" cellspacing="0" cellpadding="0" align="center">

  <tr><td colspan="3"><?php include("header.inc.php"); ?>

      </td></tr>    

<tr>


    <?php
    if ($xview == "main" || $show_sidebar_always)
    {
    ?>


    <td width="185" id="sidebar_left" valign="top">

        <table width="90%" class="buttons" cellpadding="0" align="center">

        <tr>
        <td>
        <!-- Begin Version 5.0 -->
        <a href="index.php?cityid=0"><?php echo $lang['HOME_LINK']; ?></a>
        <!-- End Version 5.0 -->
        </td>
        </tr>

        <tr>
        <td>
        <a href="<?php echo $postlink; ?>"><?php echo $lang['POST_LINK']; ?></a>
        </td>
        </tr>


        <?php if($enable_calendar) { ?>
        <tr>
        <td>
        <a href="<?php echo $posteventlink; ?>"><?php echo $lang['POST_EVENT_LINK']; ?></a>
        </td>
        </tr>
        <?php } ?>

        <?php if($enable_images) { ?>
        <tr>
        <td>
        <a href="<?php echo $postimagelink; ?>"><?php echo $lang['POST_IMG_LINK']; ?></a>
        </td>
        </tr>
        <?php } ?>


        <?php if($forum_dir) { ?>
        <tr>
        <td>
        <a href="<?php echo $forum_dir; ?>" target="_blank"><?php echo $lang['FORUM_LINK']; ?></a>
        </td>
        </tr>
        <?php } ?>
        <tr>
            <td>
            <?php if($auth->id) { ?>
            <a href="index.php?view=myaccount" title="">My Account</a>
            <a href="index.php?view=bookmarks" title="">Watch List</a>

            <a href="index.php?view=login&amp;logout" title="">Logout</a>
            <?php }else{ ?>
            <a href="index.php?view=login" title="">Login</a>
            <a href="index.php?view=register" title="">Sign up</a>
            <?php } ?>
            </td>
        </tr>
        </table>
        <br>

【问题讨论】:

  • 请不要建议使用模板引擎。我不想使用一个,模板引擎不能做任何事情,而 php 不能。我不想再增加一层复杂性。
  • 我完全同意,模板引擎很烂。
  • 我了解标准而不是使用表格等。我没有编写此代码,但我需要修改它。如果可能,请使用此上下文向我展示一个好的应用程序如何分离关注点。
  • 您介意开发人员直接在 PHP 中编码吗?
  • @mc10 如果您的意思是使用 php 而不是模板引擎,那很好。 PHP 比使用模板引擎好得多。

标签: php css templates layout


【解决方案1】:

为了提高可读性,请尝试在 HTML 输出中使用 Alternative PHP Syntax

<?php if($enable_calendar): ?>
     ...
     ...
<?php endif; ?>

代替:

<?php if($enable_calendar) { ?>
     ...
     ...
<?php } ?>

闭合块比闭合花括号更直观。

【讨论】:

    【解决方案2】:

    最好让设计师创建一个全新的布局,然后将PHP逻辑添加到其中。如果你重写这个,我强烈建议使用模板引擎。

    【讨论】:

      【解决方案3】:

      嗯。以下是一些建议:

      1) 仅当您想显示表格时才使用表格。真的。几乎 95% 的案例都可以而且必须使用 div 来完成。

      2) 使用模板引擎!所以你不会用你的 php 代码弄乱你的 html (并且设计者不会破坏它)。好的模板引擎是 Smarty(最流行的)和 TemplatePower

      希望这会有所帮助。干杯

      【讨论】:

        【解决方案4】:

        我建议您使用模板引擎,例如 Smarty Template Engine

        您可以轻松实现。

        【讨论】:

          【解决方案5】:

          使用像 Smarty 这样的模板引擎。现在,如果您四处打听,大多数人出于某种原因讨厌 Smarty,因此请先进行研究。但是,如果您希望 CSS/HTML 放在一个地方,而业务逻辑放在另一个地方,那就太好了。

          无论您最终使用什么,都对 MVC 设计模式进行一些研究——这通常是一种更简洁的方式来保持事物井井有条。

          【讨论】:

          • 是的,我了解 MVC。然而,这是我目前拥有的,这就是它的编写方式,我不能把所有的代码都扔掉。所以我需要一个改进现有代码的解决方案。
          【解决方案6】:

          我会首先整理所有的缩进,我知道这是一个老生常谈的东西,但它的可读性会比你开始优化它之前提高 10 倍。

          <table>
              <tr>
                  <td><?php echo "hi"; ?></td>
                  <td>cell 2</td>
              </tr>
          </table>
          

          如果您要将&lt;?php if(true == true) { ?&gt;&lt;?php } ?&gt; 穿插,请确保它们对齐。

          不过,作为布局的一般规则,表格中的表格是 90 年代的:P 尝试使用 div 元素阅读 CSS 定位,并使用 CSS 而不是在 HTML 中布置它们。

          【讨论】:

            【解决方案7】:

            我会花时间将您的时间投入到 WordPressDrupal 等 CMS 上,并学习如何将 CSS 和 PHP 样式应用于 CMS。特别是,由于我熟悉 WordPress,我可以自信地说,为 WordPress 开发主题可以让您直接混合 PHP。

            如果不能选择使用 CMS,那么您可能应该决定为您的函数创建一个 API,为这些 API 函数创建适当的文档,并要求您的开发人员取消 API,以获得另一层抽象。

            我确实建议使用 Smarty 之类的模板系统,因为它会给开发人员的学习带来另一层困难。就目前而言,PHP 非常好。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2022-11-25
              • 2014-09-07
              • 2021-11-21
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多