2016-06-14 66 views
1

我沒有編碼多年,我可能已經忘記了所有內容,但我正在嘗試重新開始開發我的個人網站。 我想將div標題和div頁腳放在.php文件中,所以我不必在修改的情況下手動修改每一個頁面。 我的想法是這樣的:單獨的.php中的頁眉和頁腳,當前頁面突出顯示

頭,footer.php

<?php function head() 
     {echo '<ul> 
       <li><a href="tutorial.html"' if($current == "tutorial") {echo 'class="menu_link_active"';} else {echo 'class="menu_link"';} '>Tutorials</a></li> 
       <li><a href="contact.html"' if($current == "contact") {echo 'class="menu_link_active"';} else {echo 'class="menu_link"';} '>Contatti</a></li> 
       </ul>';} 

function foot() 
    {echo '...html...';} ?> 

函數頭()應該認識到當前頁面高亮顯示。 然後在我的網站的網頁包括我的頭,footer.php這樣的:

<head><?php include("php/header-footer.php"); ?><head> 

調用到兩個函數:

<body><?php $current = "projemi"; 
      head();?> 
     ...html code... 
     <?php foot(); ?></body> 

我的問題是: 1)頁面顯示這個錯誤:----語法錯誤,意想不到的'if'(T_IF),期待','或';'----並且它引用head函數。錯誤在哪裏? 2)這是正確的過程,以獲得我想要的,或者你會建議不同的東西?

非常感謝你們,並原諒我的英文不好!

+1

您在回顯後缺少分號。嘗試更好地識別您的代碼以查看此類錯誤。 –

回答

3

您必須將值傳遞給函數使用

<?php 
     function head($current){ 
     echo '<ul> 
      <li><a href="tutorial.html"'; 
     if($current == "tutorial") { 
       echo 'class="menu_link_active"'; 
     }else { 
       echo 'class="menu_link"'; 
     } 
     echo '>Tutorials</a></li><li><a href="contact.html"'; 
     if($current == "contact") { 
       echo 'class="menu_link_active"'; 
      } else { 
       echo 'class="menu_link"'; 
      } 
      echo '>Contatti</a></li></ul>'; 
     } 
    ?> 

調用函數一樣

<?php 
    $current = 'someVal'; 
    head($current); 
    ?> 
+0

看起來像真正的問題是你沒有用分號結束你的陳述。但功能也不正確。 – ksealey

+0

它工作完美ksealey,謝謝!我完全忘記了括號內的$ current(並關閉了echo函數,當然) – Brigo

2

好了,你忘了先用分號結束你的迴音聲明過,因此,錯誤。

echo '<ul> 
       <li><a href="tutorial.html"'; if($current == "tutorial") {echo 'class="menu_link_active"';} else {echo 'class="menu_link"';} '>Tutorials</a></li> 
       <li><a href="contact.html"'; if($current == "contact") {echo 'class="menu_link_active"';} else {echo 'class="menu_link"';} '>Contatti</a></li> 
       </ul>'; 

此外,建議,我相信這將是更有效的(我建議只開發一個MVC-like系統,但是這是你想要做什麼有點點點太複雜):

echo '<ul> 
       <li><a href="tutorial.html"'.(($current === 'tutorial') ? 'class="menu_link_active"' : 'class="menu_link"').'>Tutorials</a></li> 
       <li><a href="contact.html"'.(($current === 'contact') ? 'class="menu_link_active"' : 'class="menu_link"').'>Contatti</a></li> 
       </ul>'; 
+0

謝謝CristianHG! 我問你一個問題,你是說用另一種方式編寫代碼會更有效率嗎?在表現,易讀性或其他方面的效率? – Brigo

+0

表現和審美。速記如果語句表現更好,字符少,並使您的代碼看起來更專業和標準化:) – CristianHG