我在我的頁面上使用PHP代碼時遇到了麻煩,在我的正文內容區域內。我在這個網站,Drupal的網站和其他網站上不知疲倦地搜索,所以我很抱歉如果答案是在某個地方,但我無法找到它,我需要幫助。在正文內容區域內使用PHP變量
我們有很多信息可以在我們的網站中重複使用,我想將它們作爲變量存儲在PHP文件中。我們現在在我們的網站上執行此操作,但我正在使用Drupal重寫整個網站。因此,例如,我們銷售軟件,並且我希望爲我們的每個產品網址提供一個變量,以用於網站上的各種「添加到購物車」按鈕。我不想將產品網址硬編碼到每個鏈接中,而是希望能夠在任何drupal頁面上調用PHP變量。
我無法獲得任何工作;我已閱讀了幾條建議,但都沒有成功。我嘗試將變量設置爲自己的塊,然後在創建新頁面時從頁面內調用它們。我可以在頁面上回顯變量,但只能在其內部的塊中顯示,我不能調用它們並讓它們從其他塊或內容區域回顯。我嘗試過使用全局關鍵字(按照一個建議),但這並不適合我。
我希望這是有道理的。其他信息?我使用的是Drupal 6.x,我在創建頁面時已經啓用了PHP代碼,我已經啓用了PHP過濾器模塊,我可以獲取PHP代碼來渲染,因此我知道它正在工作,但它不工作在我需要的地方是。我是Drupal的新手,所以如果任何人都可以幫助並儘可能地解釋他們對我的建議,我會非常感激!
在此先感謝。
編輯11年3月15日
試圖進一步解釋,我會發布一些示例代碼。我還沒有這樣做,因爲現在還沒有多少東西可以顯示出來,我認爲這可能會使問題更加混淆。
因此,我製作了一個Drupal'頁面',用於我們的軟件試用版下載。我想要設置的PHP變量用於我們的下載鏈接;我想把它們放在一個地方,以便將來下載鏈接需要改變時,我只需要在一個地方這樣做。你看,我們有各種網站頁面上的下載鏈接。我們的「立即購買」鏈接也是如此。這裏是頁面代碼:
<p>Try [product] free for 30 days.</p>
<!--<p>[token_custom_ewintry]</p>-->
<p><?php global $ewintry; ?><a href="<?php print $ewintry; ?>">Download for Windows PC</a></p>
<p><?php global $emactry; ?><a href="<?php print $emactry; ?>">Download for Mac OS X</a></p>
<p><?php global $ebbtry; ?><a href="<?php print $ebbtry; ?>">Download for BlackBerry</a></p>
<?php
$ebbtryprint = variable_get("ebbtry", "default");
print $ebbtryprint;
?>
<p><a href="<?php print $ewmtry; ?>">Download for Windows Mobile</a></p>
<p><?php global $ipewlstorelink; ?>iPhone, iPad, iPod touch owners: <a href="<?php print $ipewlstorelink; ?>">Download [product] on the iTunes App Store</a>. You'll be able to create 10 cards for free to try [product] before you buy!</p>
對於這個例子,我已經在我試過的一切。你會看到我對全局變量的調用,這從來沒有奏效。我在我創建的自定義塊中定義了全局變量,並放置在我的「content top」區域中。我明白,該地區顯然沒有任何東西能夠訪問我的頁面的內容,因爲這些調用從未奏效。
我有一個自定義的令牌,我昨天用令牌模塊;它從來沒有工作,但後來我讀了一個不同的帖子,默認情況下,令牌在主體內容區域可用,我需要一個特殊的過濾器。我還沒有找到一個過濾器,所以我不知道這個解決方案將工作。
我有我的調用variable_get。現在,這確實奏效了。我在我的template.php頁面中定義了variable_set。在我的代碼示例中,我的值使用上面的打印調用進行打印。不過,我今天早上看了這個頁面,我不認爲這是我需要的答案。因爲現在我必須在打印所有頁面之前調用variable_get,對嗎?而這並不能解決問題,因爲我只想把所有的東西都放在一個地方打電話到任何地方。我嘗試將variable_get調用放入自定義塊中,但是我再次無法從我的主體內容區域訪問「content top」中的任何內容。variable_get調用打印'content top'中的值,但不會在內容區域的下方重新打印。
所以也許這個代碼會幫助別人來幫助我。我現在要詳細看看CCK,因爲這是我還沒有嘗試過的唯一的其他建議。如果有人能提供幫助,請提前致謝。
你需要發佈你的代碼,或至少一些它的樣本。 – 2011-03-14 14:44:03
也許現在是時候重新思考你的應用程序是如何放在一起的,這就是所謂的重構,它在我看來你非常需要這樣做。在php中的全局變量被認爲是一個壞習慣http://blog.case.edu/gps10/2006/07/22/why_global_variables_in_php_is_bad_programming_practice。在某些情況下,你可以使用常量,也許靜態類變量會是更好的選擇?不是真的很舒服,但它看起來像你非常需要記錄你自己如何Drupal處理這樣的事情,只是「順其自然」,以保持標準。 – 2011-03-14 14:52:11
除了Poelinca的回答:將PHP放入你的身體(即數據庫)也被認爲是一個不好的習慣。這是Drupal中一個非常不幸的「特性」,它會導致更多的麻煩,然後解決。 – berkes 2011-03-14 19:22:05