如何在编辑 product/category 时检查 SEO 关键字是否已存在 - Opencart

How to check if SEO keyword already exist when edit product/category - Opencart

当我编辑 product/category 时,我如何检查 seo 关键字是否已存在于数据库中?我需要它用于自定义用途

取决于您使用的是什么版本的 OpenCart。在 OpenCart 3 中,当您尝试保存已存在的 SEO URL - 您将收到一条消息

尽管有一个地方,您可以在其中搜索所有 OpenCart SEO URL。您会在 设计 - SEO URL 中找到它

如果您想以编程方式检查,则可以使用以下函数检查是否存在 SEO。这将适用于所有版本。

function check_seo($keyword = ''){
    if(version_compare(VERSION, '3.0.0.0', '<')){ // below 3.0.0.0 version
        $SQL = "SELECT * FROM " . DB_PREFIX . "url_alias WHERE `keyword` LIKE '" . $this->db->escape($keyword)."'";
    }else{
        $SQL = "SELECT * FROM " . DB_PREFIX . "seo_url WHERE `keyword` LIKE '" . $this->db->escape($keyword)."'";
    }
    $found =  $this->db->query($SQL." LIMIT 1")->num_rows;

    if($found){
        // SEO already exists
    }else{
        // You can use this $keyword for SEO
    }
}

例如,如果您只想检查 mac 类别 SEO,请检查下面的查询和图像,

查询:

SELECT * FROM `oc_url_alias` WHERE `query` LIKE 'category_id=%' AND `keyword` LIKE 'mac'

正在检查重复的 SEO

控制器

$url_alias_info = $this->model_catalog_url_alias->getUrlAlias($this->request->post['keyword']);

if ($url_alias_info && isset($this->request->post['category_id']) && $url_alias_info['query'] != 'category_id=' . $this->request->post['category_id']) {
 $json['error'] = 'SEO exist';
}

型号

public function getUrlAlias($keyword) {
  $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE keyword = '" . $this->db->escape($keyword) . "'");

  return $query->row;
}