在drupal模板中实现addtag
我的模板中有代码:在drupal模板中实现addtag,drupal,drupal-7,drupal-theming,Drupal,Drupal 7,Drupal Theming,我的模板中有代码: $query = new EntityFieldQuery(); $entities = $query->entityCondition('entity_type', 'node') ->propertyCondition('type', 'article') ->propertyCondition('status', 1) ->fieldCondition('field_show_on', 'tid', $group[
$query = new EntityFieldQuery();
$entities = $query->entityCondition('entity_type', 'node')
->propertyCondition('type', 'article')
->propertyCondition('status', 1)
->fieldCondition('field_show_on', 'tid', $group['identifier'], '=') // taxonomy identifier
->fieldCondition('field_perks_categories', 'tid', $categories['tid'], '=')
->fieldCondition('field_perks_sub_categories', 'tid', $subcategory['tid'], '=')
->execute();
我有另一个名为“artc_order”的表,其中包含nid、手动订购物品的重量
我想实现这一点:
对于我的模板文件,如何做到这一点?也许对您的案例使用
db\u select
而不是EntityFieldQuery()
是有用的。您不能将JOIN
直接添加到EntityFieldQuery
,因为它不受支持,可能在Drupal 8中
您的查询可以用db\u select
重写,如下所示:
$query = db_select('node', 'n')
->fields('n', array('nid'))
->leftJoin('field_data_field_show_on', 'fso', 'fso.entity_id = n.nid') // You can use INNER if you need
->leftJoin('field_data_field_perks_categories', 'fpc', 'fpc.entity_id = n.nid') // Same thing here
->leftJoin('field_data_field_perks_sub_categories', 'fpsc', 'fpsc.entity_id = n.nid') // And here also
->leftJoin('order', 'o', 'o.nid = n.nid') // Join artc_order
->condition('n.type', 'article', 'LIKE')
->condition('fso.field_show_on_tid', $group['identifier'])
->condition('fso.field_perks_categories_tid', $categories['tid'])
->condition('fso.field_perks_sub_categories_tid', $subcategory['tid'])
->condition('n.status', 1)
->orderBy('o.weight')
->execute();
PS:我不能测试这个查询,因为我没有你的数据库,但差不多就是这样
PS2:在template.php文件中使用查询不是一种干净的方法,我知道在某些极端情况下,我们需要这样做,但我认为Drupal有很多钩子,可以让我们直接在自定义模块中找到所需的内容,而不是template.php(这只是我的观点,我可能是错的)关于我的问题的另一个链接。然而,它是在模块上实现的。我可以在模板上实现它吗?谢谢,那很有帮助。我使用更像你的查询和它的工作