Prestashop 1.6>获取所有标签或按名称获取标签

时间:2017-11-20 16:09:47

标签: list tags prestashop-1.6

我正在尝试从prestashop获取标记ID,但TagsCore不提供所有标记的列表,也不包含按名称获取标记的方法?是否有可能不以某种方式编写自定义函数?感谢

1 个答案:

答案 0 :(得分:1)

在TagCore中你有结构:

public function __construct($id = null, $name = null, $id_lang = null)
{
    $this->def = Tag::getDefinition($this);
    $this->setDefinitionRetrocompatibility();

    if ($id) {
        parent::__construct($id);
    } elseif ($name && Validate::isGenericName($name) && $id_lang && Validate::isUnsignedId($id_lang)) {
        $row = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow('
        SELECT *
        FROM `'._DB_PREFIX_.'tag` t
        WHERE `name` = \''.pSQL($name).'\' AND `id_lang` = '.(int)$id_lang);

        if ($row) {
            $this->id = (int)$row['id_tag'];
            $this->id_lang = (int)$row['id_lang'];
            $this->name = $row['name'];
        }
    }
}

所以,如果你打电话:

$tag = new Tag(null, "stringtag", $id_lang);
if($tag->id !== null){
    // stringtag exists for that id_lang
}

但是没有获取所有标签的列表/集合的方法。但是一个简单的查询,如:

Db::getInstance()->executeS('SELECT * FROM `'._DB_PREFIX_.'tag`')

Db::getInstance()->executeS('SELECT * FROM `'._DB_PREFIX_.'tag` WHERE `id_lang`='.$id_lang)

非常简单,可以使用所有标记获取数组。