Как PHP, если еще заявление и вернуть разные div? - PullRequest
0 голосов
/ 18 февраля 2011

Я пытаюсь создать оператор if-else, который будет возвращать разные div. Я считаю, что это терпит неудачу, потому что в операторе else слишком много '.

<?php $blogentryid = get_the_ID(); 

if ($blogentryid=="1572") {
echo '<div>Hello</div>'
}

else {
echo '<div class="socialnews2"><!-- start div social-->

                                <div class="twitternews2">
                                <a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" data-text="<?php the_title(); ?>" d
ata-url="<?php the_permalink() ?>" data-via="giantmangocom">Tweet</a>
                                <script type="text/javascript">
                                //async script, twitter button fashiolista.com style
                                (function() {
                                var s = document.createElement('SCRIPT');
                                var c = document.getElementsByTagName('script')[0];
                                s.type = 'text/javascript';
                                s.async = true;
                                s.src = 'http://platform.twitter.com/widgets.js';
                                c.parentNode.insertBefore(s, c);
                                 })();
                                </script>
                                </div>
                        </div>
                                <div class="facebooknews2">
<iframe src="http://www.facebook.com/plugins/like.php?href=<?php echo urlencode(get_permalink($post->ID)); ?>&amp;layout=button_count&
amp;show_faces=false&amp;width=80&amp;action=like&amp;colorscheme=light;height=21"" scrolling="no" frameborder="0" style="border:none; overflow:hidden; wid
th:80px; height:21px;" allowTransparency="true"></iframe>
                                </div>'

}

?>

Ответы [ 5 ]

4 голосов
/ 18 февраля 2011

Если вы хотите показать условный контент, откройте и закройте теги <?php вместо использования операторов echo.

<?php if ($blogentryid == "1572") { ?>

<div>Hello</div>

<?php } else { ?>

<div class="socialnews2"><!-- start div social-->
... rest of content here

<? } ?>

Это также гарантирует, что ваш php-код внутри div будет оценен так, как вы предполагали.

0 голосов
/ 18 февраля 2011

Для многострочных строк, которые являются такими же сложными, как та, которую вы предлагаете, я бы предложил просто завершить ваш php-блок перед выводом. Например:

<?php
    if($outputDiv1){?>
       <div id="1">Plain old unescaped html code</div>
     <?php }else{ //output div 2 ?>
        <div id="2">More html</div>
     <?php } ?>

Я считаю, что этот метод намного проще. Если вам нужен доступ к переменной php из html, вы просто открываете другой блок php, например <input name="name" type="text" value="<?php echo $someVal; ?>" />

0 голосов
/ 18 февраля 2011

Этот код повсюду.

В конце каждой строки исполняемого кода перед точкой синтаксиса должен быть символ точки с запятой (";").Когда вы пытаетесь собрать PHP плюс HTML, нет необходимости выводить все .Ниже приведена очищенная версия вашего кода.

Как видите, когда вам не нужна логика PHP, вы можете завершить php ?> и вернуться к обычному HTML.Похоже, у вас была эта идея, но вы заключили все это в заявление echo.Это сработало бы, но вы смешали несколько <?php echo $whatever; ?> утверждений. Посмотрите на вычищенный код, который я разместил, и вы сможете увидеть, где вы ошиблись.

<?php 
    $blogentryid = get_the_ID(); 

    if ($blogentryid=="1572") {
        echo '<div>Hello</div>';
    } else {
?>
<div class="socialnews2"><!-- start div social-->'
    <div class="twitternews2">
        <a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" data-text="<?php the_title(); ?>" data-url="<?php the_permalink() ?>" data-via="giantmangocom">
            Tweet
        </a>
        <script type="text/javascript">
        //async script, twitter button fashiolista.com style
        (function() {
            var s = document.createElement('SCRIPT');
            var c = document.getElementsByTagName('script')[0];
            s.type = 'text/javascript';
            s.async = true;
            s.src = 'http://platform.twitter.com/widgets.js';
            c.parentNode.insertBefore(s, c);
            })();
        </script>
    </div>
    <div class="facebooknews2">
        <iframe src="http://www.facebook.com/plugins/like.php?href=<?php echo urlencode(get_permalink($post->ID)); ?>&amp;layout=button_count&amp;show_faces=false&amp;width=80&amp;action=like&amp;colorscheme=light;height=21"" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:80px; height:21px;" allowTransparency="true"></iframe>
    </div>
</div>
<?php
} // end :: if
?>
0 голосов
/ 18 февраля 2011

вы не можете иметь тег <?php ?> внутри тега <?php ?>.

<?php .. data-text="<?php the_title(); ?>" ...?>

возможно сделать что-то вроде этого:

<?php echo '... data-text="'; echo the_title(); echo '...'; ?>
0 голосов
/ 18 февраля 2011

' в ваших разделах javascript необходимо экранировать: \', иначе PHP будет рассматриваться как конец строки, которую вы выводите.

Для больших текстовых объектов такого типа смотрите HEREDOC s, которые позволяют выводить многострочные строки, не беспокоясь о кавычках.

Кроме того, вы не можете вставлять блоки php в строки, как вы:

echo 'hello<?php echo "there" ?>'

не будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...