如何使用Drupal的node_load()防止无限递归?
我正在使用Ubercart产品和product_kit模块。这非常适用于从相关产品套件到包含的产品的链接,但我也希望从单个产品链接到它可能属于的任何套件。
我想我可以在SKU /型号上进行数据库搜索(轻松完成该部分),然后使用node_load($ nid)获取相关工具包。
到目前为止我有这个:
function amh_shop_nodeapi(&$node, $op, $a3 = null, $a4 = null)
{
if ($node->type == 'product') {
if ($op == 'load') {
error_log("product::load");
$bundles = array();
$results = db_query('SELECT DISTINCT n.nid FROM {node} n RIGHT JOIN {uc_products} up ON up.nid = n.nid WHERE up.model LIKE "%s /%" OR up.model LIKE "%/ %s /%" OR up.model LIKE "%/ %s"', $node->model, $node->model, $node->model);
while ($bundle = db_fetch_object($results)) {
error_log("bundle::load");
$bundles[] = node_load($bundle->nid);
}
}
}
}
但是,由于产品套件也在加载产品,我最终会进行递归循环。
我想我的问题实际上分为两部分:
问题是这篇文章的标题:我该如何防止这种递归?
可能会回答第一个问题的略有不同的问题:我应该在加载节点时执行此操作,还是稍后在此过程中执行此操作(例如,在查看或更改时)?
没有找到相关结果
已邀请:
4 个回复
豹芜澈
矾醒忻
浩挎
缝皋