【发布时间】:2010-11-19 15:12:10
【问题描述】:
我今天花了很多时间研究扩展我继承的一个 drupal 站点,确信我面临的问题归结为我定制的 SQL 查询。
我已经意识到 SQL 没问题(在 PHPMYadmin 中检查并在 drupal 网站中执行了各种操作)。所以我很高兴我能从我需要的数据库中获取所有结果,循环它们并以特定标记将它们输出到页面上。
我遇到的问题是循环显示的位置。我似乎无法弄清楚主题系统或理解 template.php 中发生的事情。
让我解释一下:
我需要更改的代码位于 template.php 文件中。我的理解是这个文件允许你覆盖某些功能和主题元素。
在 template.php 文件中,这是我需要更改的代码:
//old function from original development
function abc($node,$submitted,$node_url) {
//execute code
}
所以我在函数 abc() 中添加了我的代码,因为我希望它在输出旧代码的地方输出。
这是我的 sql 和循环的伪代码:
function abc($node,$submitted,$node_url) {
$sql = 'my sql query'
$results =db_query($sql);
while ($data = db_fetch_array($results)) {
//output my results here
}
}
让我相信 sql 错误的是我应该得到 23 个结果,但我得到了更多的重复条目。在浪费了很多时间寻找错误的地方并仔细检查了 sql 之后,我意识到这是多次执行 sql 和循环的函数,而不是 sql 返回重复条目。我是这样做的:
function abc($node,$submitted,$node_url) {
$sql = 'my sql query'
$results =db_query($sql);
$x = 1;
while ($data = db_fetch_array($results)) {
if ($x == 1) {
echo '<p style="background-color:#ccc;">'. $x . '. '.$data['title'] . '</p>';
}else{
echo '<p>'. $x . '. '.$data['title'] . '</p>';
}
$x = $x + 1;
}
}
在执行代码时,我希望增加的数字会继续处理尽可能多的重复条目,并将第一个条目的背景设置为灰色,但事实并非如此。在结果 23 处,它将自身重置为 1 并将该条目的背景着色为灰色,向我表明它是多次执行 sql 和循环的函数。
我不完全确定这个 abc() 函数是什么,除了当我将代码放入其中时,输出会显示在特定页面上我需要它的位置,而其他任何地方都没有(没有重复的条目) .
当我从这个函数中取出我的代码时(仍然在 template.php 中),我的代码输出在所有页面的头部,这是不可取的。
是否有人对可能发生的事情有任何想法,我可以在哪里查找此函数是什么或知道我确定代码显示的方法?
我一直在阅读一些关于主题等的内容,但是使用其他人的代码正在变成一个有点混乱的噩梦。
提前干杯!
【问题讨论】:
-
“abc”只是您在此处用于实际函数名称的别名吗?通常在 template.php 中,函数名称很重要,因为它表明了被你的 template.php 文件所在的主题所覆盖的模块函数。您能否提供完整函数名称及其覆盖的模块的详细信息?
-
叫我愤世嫉俗,但它可能被称为 abc 和 poss 一样无害。
-
您不应将其他信息作为答案发布,而应将其嵌入您的原始问题中,以免答案被您的信息淹没。此外,这将使您更容易为您提供帮助,因为无需通读答案即可获取所有信息,这些信息可能因赞成/反对票而有序或不有序。您应该将信息复制到您的问题中,将其标记为附加信息并删除您的“答案”。
-
听起来你在 Drupal 学习曲线中处于困难的一边(我们都经历过),你可能会发现你在 irc 上的#drupal 上得到了一些很好的帮助。
标签: php sql drupal function templates