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

Prestashop 1.6 > Get all tags or get tag by name

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

在 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
}

但是没有办法获取所有标签的list/collection。但是像这样的简单查询:

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

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

很简单,可以得到包含所有标签的数组。