清除模板HTML代码块的方法,该代码块仅采用标题/内容参数,其中内容可能很大并且用新行填充

I am using Accordion (jQuery) on my school webserver. Currently, my coding-scheme uses PHP/HTML/CSS/Javascript. I started noticing an opportunity for automation/templating when writing the entries for the Accordion modules. I write the following code:

<h3>Title</h3>
<div class="nobg">
  <p class="nobg">
    <!-- Entry text -->
  </p>
</div>

so I am looking for pointers for the best way to template that code based on the following needs:

  • Adjustable parameters: Title, Content
  • When making new modules with a large content 'parameter', the creation of that parameter should maintain readability.

Since I am already on PHP, I was thinking maybe some sort of template function:

<? php accordion_entry("Title", "Entry Text" ?>

But the text is usually a lot of HTML: like the following:

<a href="EnablerIIG/GSM0107_full.pdf">PDF</a>
  <p>
    The release date is 2007 but the pinout seems to check out (I did some small verifications with my PCB). Also, the reference documents are all valid!
  </p>

I would like to write that HTML myself in the designated spot where the module will eventually manifest as a whole. Perhaps even cooler would be something like this:

<accordion-entry title="Title">
    <a href="EnablerIIG/GSM0107_full.pdf">PDF</a>
    <p>
      The release date is 2007 but the pinout seems to check out (I did some small verifications with my PCB). Also, the reference documents are all valid!
    </p>
</accordion-entry>

I have no idea how to get started creating such a mechanism, or if it's too much trouble to bother.

I found my temporary solution, until someone comes along with something better! Please review! I am no PHP Expert!! :D

The PHP Function:

<?php

function accordionEntry($title, $entry)
{
    echo '<h3>' . $title . '</h3>';
    echo '<div class="nobg">';
    echo '  <p class="nobg">';
    echo $entry;                //  <!-- Entry text -->
    echo '  </p>';
    echo '</div>';
}

?>

The PHP function call:

<?php accordionEntry(
    "GSM0107IG001 - Integration Manual",

    '<a href="EnablerIIG/GSM0107_full.pdf">PDF</a>
    <p>
        The release date is 2007 but the pinout seems to check out (I did some small verifications with my PCB). Also, the reference documents are all valid!
    </p>');
?>

Create a partial, and load your content into it along with settings

accordian.phtml (just use .html if you want, doesn't really matter)

<accordion-entry title="<?php $title ?>">
   <?php $content ?>
</accordion-entry>

page.html

<div><?= renderPartial('accordian.phtml',array(
                                   'title'=>'GSM0107IG001 - Integration Manual',
                                   'content' => '<p>your html</p>'
                                    )); ?>

partial.php

function partial($partial, $settings){
     //will load html from indicated file, and merge passed settings and content into place before returning all $html
     // this allows the reuse of the 'partial()' function for other snippets

     $template = file_get_contents($partial);

     //$settings should be an array, and then your keys can be extracted as variables that match the $settings variables (such as $title) that exist in the .html partial file

     extract($settings);  //will assign any keys in your array, such as 'title' to php variables of the same name... so in this case $title, and $content

     echo $template;

}