简体   繁体   中英

How do I add html into php functions?

I'm using Processwire for my blog.

I know I can call the blog posting loops by using

<?php newsList(); ?>

in index.php but I don't know how to implement html codes in index.php into my blog_functions.php.

Is there any way to do this ?

<div class="blog_item">
  <div class="clearfix"></div>
  <div class="oi_blog_post_meta">
    <div class="oi_blog_post_date">
      <div class="oi_date_d colored">13 July
        <span class="oi_year">2014</span>
      </div>
      <div class="oi_post_cat">
        Java Script</div>
    </div>
    <h5 class="oi_blog_post_title">
                                                                                                        <a href="quisque-consequat-felis-id-lorem-congue/index.html">Quisque Consequat Felis Lorem Congue </a>
                                                                                                    </h5>
    <div class="oi_post_descr_preview">
      Proin sed odio eu turpis sagittis pretium a et metus. Quisque consequat tellus at dolor adipiscing viverra. Cras ligula lectus, viverra tempor ultrices sed, rhoncus quis nulla. Fusce adipiscing, velit nec sodales laoreet,</div>
  </div>
  <div class="oi_post_meta_data_holder">
    <a class="oi_image_link" href="quisque-consequat-felis-id-lorem-congue/index.html">
                                                                                                        <img class="img-responsive" src="
                                                                                                            <?=$config->urls->templates;?>assets/wp-content//uploads/2014/07/photography-movement-13-600x600.jpg" alt="Quisque Consequat Felis Lorem Congue" />
                                                                                                        </a>
    <div class="oi_post_tringle"></div>
  </div>
  <div class="clearfix"></div>

</div>
</div>

and here's my blog_functions.php

function newsList(){

    // Grab the page name from the url

    $thisCategory = wire("page")->name;

    // If the category is not called "news" then output the category name as a selector for the find.

    if($thisCategory !="news") {
        $category = "article_category.name=" . $thisCategory;
    }   

    // Get the news posts - limited to ten for later pagination

    $newsposts = wire("pages")->find("parent=/news-articles/, $category, template=TUT_news, limit=10");

    $out =" ";

    //Loop through the pages

    foreach($newsposts as $newspost){
        $out .="<div class='clearfix'>";
        if($newspost->article_thumbnails){
            $out .="<a href='{$newspost->article_thumbnails->url}' class=''>";
            $out .="<img class='align_left' src='{$newspost->article_thumbnails->getThumb(listingthumb)}'>";
            $out .="</a>";

        }
        $out .="<a href='{$newspost->url}'><h3>{$newspost->title}</h3></a>";
        $out .="<p>{$newspost->article_introtext}</p>";
        $out .="</div>";

    }
    // Pagination

    $out .="<div class='pagination'>";
    $out .= $newsposts->renderPager(array(

                    'nextItemLabel' => "Next",
                    'previousItemLabel' => "Prev",
                    'listMarkup' => "<ul>{out}</ul>",
                    'itemMarkup' => "<li>{out}</li>",
                    'linkMarkup' => "<a href='{url}'>{out}</a>"   

                    ));
    $out .="</div>";

    echo $out;

}

echo the HTML part inside the PHP Script and the browser will parse it as usual.

<?php
echo "<html>
            put html contents here.
      </html>";
?>

Take care of the " and ' while mixing HTML with PHP.

The best way would be to use MVC pattern.

However in your case you can edit your index.php and simply put HTML there

example:

<html>
  <body> 
      <h1>Test page</h1>
      <?php newsList(); ?>
  </body>
</html>

Notice that function newlist() already outputs html to standard output. Using MVC pattern with some template system for views(for example TWIG) can give you a lot more possiblities to work on data passed by controller to view.

The way I've been told to do it (Told by my friends who are full time developers) is to actually close the php tags and put the raw html in between like so:

<?php if($i==true){ ?> <p>Html goes here :)</p> <?php } ?>

If you wanted to print more php into that html you could simply add more <?php ?> tags and add whatever you need in there!

<?php if($i==true){ ?> <p>My name is <?php echo $nameVariable; ?>! :)</p> <?php } ?>

Here is another example (Bigger code block):

<?php 
              $subjects = show_subjects("all");
              if($subjects == ""){
                echo "<h4 style='text-align: center'>No subjects were found</h4>";
                // echo "<tr class='subject-row'><td id='name'>$items['name'] </td><td id='owner-username'>$items['username']</td><td><a href='#' class='edit-subject' id=\"$items['subject_ID']\"> Edit</a> • <a href='#' class='delete-subject' id=\"$items['subject_ID']\"> Delete</a></td></tr>";
              }else{
              foreach($subjects as $items){
            ?>
              <tr class='subject-row'><td id='name'><?php echo $items['name']; ?></td><td id='owner-username'><?php echo $items['username']; ?></td><td><a href='#' class='edit-subject' id='<?php echo $items['subject_ID']; ?>'> Edit</a> • <a href='#' class='delete-subject' id='<?php echo $items['subject_ID']; ?>'> Delete</a></td></tr>
         <?php
              }
            }
         ?>

Or you could use the EOT function built into PHP

$variable
echo <<<EOT
    <h1>{$variable}</h1>
    <div class='div'>More html here</div>
EOT;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM