2

呼叫所有 opencart 大师。在尝试了解类别页面的排序功能时(按名称、评级、价格等排序)。p.sort_order-ASC里面的线catalog/controller/product/category.php让我很困惑。在 SQL 中,排序查询的构建类似于类似的东西,ORDER BY table.field_name ASC/DESC但我无法推断p.sort_order-ASC. 它是否设置为要传递给 javascript 函数的值?

$this->data['sorts'] = array();

        $this->data['sorts'][] = array(
            'text'  => $this->language->get('text_default'),
            'value' => 'p.sort_order-ASC',
            'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.sort_order&order=ASC' . $url)
        );
4

2 回答 2

3

OpenCart 获取您在那里的值并根据这些值对其进行排序,因此它按p.sort_order(这是product表的别名psort_order字段)排序,然后是排序方式,即ASC升序

于 2013-05-22T15:06:17.193 回答
0

其实线

'value' => 'p.sort_order-ASC',

在模板文件(例如catalog/view/theme/default/template/product/category.tpl)中用于突出显示(选择)选定的排序类型。在提到的控制器中,sortandorder是从GET- 具体地从被命中并由该行定义的 URL 获得的:

'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.sort_order&order=ASC' . $url)

如您所见,URL 包含从模板获取必要值并将其推送到模板的&sort和参数。&order

在模板中有这个条件:

    <?php foreach ($sorts as $sorts) { ?>
    <?php if ($sorts['value'] == $sort . '-' . $order) { ?>
    <option value="<?php echo $sorts['href']; ?>" selected="selected"><?php echo $sorts['text']; ?></option>
    <?php } else { ?>

因此,如果$sort . '-' . $order从 URL 中获取的值与排序的相同,<option>则选择 。

现在清楚了吗?

于 2013-05-30T13:24:29.537 回答