2012-05-13 66 views
0

我昨天在網站上工作,一切都很好。我正在將它移植到使用Smarty。由於Smarty模板文件實際上並沒有太多的功能,所以我有最後一頁要更改哪些不需要進行任何測試。我救了我的工作,關閉了所有的東西,然後離開了。今天早些時候,我查看了該網站,發現它已經無法使用。它爲所有頁面顯示不正確的模板。我從來沒有改變任何與我的服務器設置,所以不能成爲問題。以前工作完美的頁面不再有效。我已經五重檢查了我的工作,看不出有什麼問題。爲了不發佈我擁有的每一件東西,我將分享您想要查看的任何我的代碼。只需發表評論,我將進行編輯。任何想法可能會出錯?我正在使用Smarty 3.1.8和PHP 5.3.3。Smarty沒有選擇正確的模板來顯示

Live site

+0

那麼,訪問您的鏈接似乎一切正常?你可以澄清什麼不工作(也許粘貼一個tpl文件不是渲染)。不過,我用Smarty檢查的默認設置是模板和緩存目錄 - 它們是可寫的嗎?你有正確的權限?我能看到的唯一問題是[index.css](http://bama.ua.edu/~tscrompton/annotation/browse/index.css)是一個404 –

+0

它似乎是隨機選擇不同的模板來顯示。我給出的鏈接應該指向一個帶有四個鏈接到其他頁面的頁面。而且,其他網頁應該很明顯,它們在URL中的關鍵字不正確。我對所用的所有目錄和文件擁有必要的權限。我在三個不同的機器和兩個不同的瀏覽器上試過這個。我沒有使用緩存。 '/ st8/tscrompton/includes/Smarty-templates'中唯一的模板是'footer.tpl'。其他人與他們相應的PHP腳本'(index.php - > index.tpl)'在同一個目錄中。 –

+0

並且隨機地,它似乎選擇一個特定的隨機模板並使用該模板很長一段時間,然後它會改變它的想法(可能每當我做任何改變?)。 –

回答

0

的混淆發生是因爲幾乎所有的模板被命名爲同樣的事情。根據this thread,我發現當Smarty編譯模板時,它只考慮文件名,而不是該文件的完整路徑。因此,您必須指定一個編譯ID,爲此目的最好是當前正在執行的腳本的父目錄。如果您只使用__FILE__常數,則如果您在同一目錄中使用多個腳本來顯示相同​​模板,則最終可能會有多個同一模板的編譯結果。所以我使用dirname(__FILE__)作爲我的編譯ID,其中應該是爲大家工作。