我在我的页面上使用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