Ужасное расположение - php и html / таблицы перемешаны - PullRequest
0 голосов
/ 04 июля 2011

В настоящее время я работаю над проектом, в котором файл 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>

Ответы [ 7 ]

2 голосов
/ 04 июля 2011

Чтобы улучшить читабельность, попробуйте использовать Альтернативный синтаксис PHP в выводе HTML.

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

Вместо:

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

Закрывающие блоки немного большеинтуитивно понятнее, чем просто фигурная скобка.

0 голосов
/ 04 июля 2011

Я бы потратил время, чтобы потратить ваше время на CMS, такую ​​как WordPress или Drupal , и узнать, как применять стили CSS и PHP к CMS.В частности, поскольку я знаком с WordPress, я могу с уверенностью заявить, что разработка темы для WordPress позволяет смешивать прямой PHP.

Если использование CMS не вариант, то вам, вероятно, следует решить создатьAPI для ваших функций, создайте надлежащую документацию для этих функций API и попросите вашего разработчика отозвать API для другого уровня абстракции.

Я не рекомендую использовать такую ​​систему шаблонов, каккак Smarty, поскольку это создает еще один уровень сложности для ваших разработчиков в освоении.PHP в его нынешнем виде прекрасно работает.

0 голосов
/ 04 июля 2011

Я бы сначала начал разбирать все отступы, я знаю, что это банально, но он будет в 10 раз удобнее для чтения, чем до его оптимизации.

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

если вы собираетесь перемежать <?php if(true == true) { ?> с <?php } ?>, попробуйте убедиться, что они совпадают.

Тем не менее, как общее правило для макета, таблицы в таблицах - это 90-е годы: попробуйте прочитать о позиционировании CSS с использованием элементов div и выложить их с помощью CSS вместо HTML.

0 голосов
/ 04 июля 2011

Используйте шаблонизатор, такой как Smarty. Теперь, если вы спросите окружающих, большинство людей по той или иной причине ненавидят Smarty, поэтому сначала сделайте свое исследование. Однако замечательно, когда вы хотите, чтобы CSS / HTML были в одном месте, а бизнес-логика - в другом.

Независимо от того, чем вы в конечном итоге пользуетесь, проведите небольшое исследование шаблона проектирования MVC - это гораздо более чистый способ в целом поддерживать порядок.

0 голосов
/ 04 июля 2011

Было бы лучше позволить дизайнеру создать совершенно новый макет, а затем добавить в него логику PHP.Если вы перепишите это, я настоятельно рекомендую использовать шаблонизатор.

0 голосов
/ 04 июля 2011

Я рекомендую вам использовать шаблонизатор, например Smarty Template Engine

. Вы можете легко реализовать.

0 голосов
/ 04 июля 2011

Ммм.Вот несколько советов:

1) Используйте таблицы только тогда, когда вы хотите показать таблицу.В самом деле.Почти 95% случаев могут и должны быть выполнены с использованием divs.

2) Используйте шаблонизатор!так что вы не испортите свой HTML с вашим PHP-кодом (и дизайнер не сломает его).Хорошими шаблонизаторами являются Smarty (самый популярный) и TemplatePower

Надеюсь, это поможет.Приветствия

...