From 484a1834bb663db04a43549e9d6071ab55bf2760 Mon Sep 17 00:00:00 2001 From: alexandrdrvn Date: Thu, 13 Aug 2020 10:15:52 +0300 Subject: [PATCH] feat: add seo urls --- .../extension/d_vuefront/blog/post.php | 381 +++++++++--------- .../extension/d_vuefront/common/home.php | 11 +- .../extension/d_vuefront/common/page.php | 171 ++++---- .../extension/d_vuefront/store/category.php | 8 +- .../extension/d_vuefront/store/product.php | 19 +- .../module/d_vuefront_schema/mapping.json | 2 + .../module/d_vuefront_schema/schema.graphql | 10 + catalog/model/extension/d_vuefront/seo.php | 55 +++ .../d_shopunity/extension/d_vuefront.json | 2 +- 9 files changed, 395 insertions(+), 264 deletions(-) create mode 100644 catalog/model/extension/d_vuefront/seo.php diff --git a/catalog/controller/extension/d_vuefront/blog/post.php b/catalog/controller/extension/d_vuefront/blog/post.php index 6c1c5d6..364e33f 100644 --- a/catalog/controller/extension/d_vuefront/blog/post.php +++ b/catalog/controller/extension/d_vuefront/blog/post.php @@ -1,182 +1,199 @@ -d_blog_module = (file_exists(DIR_SYSTEM . 'library/d_shopunity/extension/d_blog_module.json')); - - if ($this->d_blog_module) { - $this->load->model('extension/module/d_blog_module'); - $this->config_file = $this->model_extension_module_d_blog_module->getConfigFile('d_blog_module', $this->sub_versions); - - $this->setting = $this->model_extension_module_d_blog_module->getConfigData('d_blog_module', 'd_blog_module_setting', $this->config->get('config_store_id'), $this->config_file); - } - } - - public function get($args) - { - if ($this->d_blog_module) { - $this->load->model('extension/d_blog_module/post'); - $this->load->model('extension/d_blog_module/review'); - $this->load->model('extension/' . $this->codename . '/d_blog_module'); - $this->load->model('tool/image'); - $post_info = $this->model_extension_d_blog_module_post->getPost($args['id']); - $post_keyword = $this->model_extension_d_vuefront_d_blog_module->getPostKeyword($args['id']); - - if (!empty($post_keyword['keyword'])) { - $keyword = $post_keyword['keyword']; - } else { - $keyword = ''; - } - - $width = $this->setting['post']['image_width']; - $height = $this->setting['post']['image_height']; - if ($post_info['image']) { - $image = $this->model_tool_image->resize($post_info['image'], $width, $height); - $imageLazy = $this->model_tool_image->resize($post_info['image'], 10, ceil(10 * $height / $width)); - } else { - $image = ''; - $imageLazy = ''; - } - - $review_total_info = $this->model_extension_d_blog_module_review->getTotalReviewsByPostId($post_info['post_id']); - $rating = (int) $review_total_info['rating']; - - return array( - 'id' => $post_info['post_id'], - 'title' => $post_info['title'], - 'name' => $post_info['title'], - 'description' => html_entity_decode($post_info['description'], ENT_QUOTES, 'UTF-8'), - 'shortDescription' => strip_tags(html_entity_decode($post_info['short_description'], ENT_QUOTES, 'UTF-8')), - 'image' => $image, - 'imageLazy' => $imageLazy, - 'datePublished' => iconv(mb_detect_encoding(strftime($this->setting['post']['date_format'][$this->config->get('config_language_id')], strtotime($post_info['date_published']))), "utf-8//IGNORE", strftime($this->setting['post']['date_format'][$this->config->get('config_language_id')], strtotime($post_info['date_published']))), - 'rating' => $rating, - 'next' => $this->vfload->resolver('blog/post/next'), - 'prev' => $this->vfload->resolver('blog/post/prev'), - 'reviews' => $this->vfload->resolver('blog/review/get'), - 'categories' => $this->vfload->resolver('blog/post/categories'), - 'keyword' => $keyword, - 'meta' => array( - 'title' => html_entity_decode($post_info['meta_title'], ENT_QUOTES, 'UTF-8'), - 'description' => html_entity_decode($post_info['meta_description'], ENT_QUOTES, 'UTF-8'), - 'keyword' => html_entity_decode($post_info['meta_keyword'], ENT_QUOTES, 'UTF-8') - ) - ); - } else { - return array(); - } - } - - public function getList($args) - { - if ($this->d_blog_module) { - $this->load->model('extension/d_blog_module/post'); - - if (in_array($args['sort'], array('sort_order', 'model', 'quantity', 'price', 'date_added'))) { - $args['sort'] = 'p.' . $args['sort']; - } elseif (in_array($args['sort'], array('name'))) { - $args['sort'] = 'pd.' . $args['sort']; - } - - $posts = array(); - - $filter_data = array( - 'filter_category_id' => $args['category_id'], - 'sort' => $args['sort'], - 'order' => $args['order'], - 'start' => ($args['page'] - 1) * $args['size'], - 'limit' => $args['size'], - ); - - if (!empty($args['search'])) { - $filter_data['filter_name'] = $args['search']; - $filter_data['filter_description'] = $args['search']; - } - - $post_total = $this->model_extension_d_blog_module_post->getTotalPosts($filter_data); - - $results = $this->model_extension_d_blog_module_post->getPosts($filter_data); - - foreach ($results as $result) { - $posts[] = $this->get(array('id' => $result['post_id'])); - } - - return array( - 'content' => $posts, - 'first' => $args['page'] === 1, - 'last' => $args['page'] === ceil($post_total / $args['size']), - 'number' => (int) $args['page'], - 'numberOfElements' => count($posts), - 'size' => (int) $args['size'], - 'totalPages' => (int) ceil($post_total / $args['size']), - 'totalElements' => (int) $post_total, - ); - } else { - return array( - 'content' => array(), - 'first' => 1, - 'last' => 1, - 'number' => 0, - 'numberOfElements' => 0, - 'size' => 0, - 'totalPages' => 0, - 'totalElements' => 0, - ); - } - } - - public function categories($args) - { - if ($this->d_blog_module) { - $this->load->model('extension/d_blog_module/category'); - $post = $args['parent']; - - $result = $this->model_extension_d_blog_module_category->getCategoryByPostId($post['id']); - $categories = array(); - foreach ($result as $category) { - $categories[] =$this->vfload->data('blog/category/get', array('id' => $category['category_id'])); - } - return $categories; - } else { - return array(); - } - } - public function next($args) - { - if ($this->d_blog_module) { - $this->load->model('extension/d_blog_module/post'); - $post = $args['parent']; - $next_post_info = $this->model_extension_d_blog_module_post->getNextPost($post['id'], 0); - if(empty($next_post_info)) { - return null; - } - return $this->get(array('id' => $next_post_info['post_id'])); - } else { - return array(); - } - } - - public function prev($args) - { - if ($this->d_blog_module) { - $this->load->model('extension/d_blog_module/post'); - $post = $args['parent']; - $prev_post_info = $this->model_extension_d_blog_module_post->getPrevPost($post['id'], 0); - if (empty($prev_post_info)) { - return null; - } - return $this->get(array('id' => $prev_post_info['post_id'])); - - } else { - return array(); - } - } -} +d_blog_module = (file_exists(DIR_SYSTEM . 'library/d_shopunity/extension/d_blog_module.json')); + + if ($this->d_blog_module) { + $this->load->model('extension/module/d_blog_module'); + $this->config_file = $this->model_extension_module_d_blog_module->getConfigFile('d_blog_module', $this->sub_versions); + + $this->setting = $this->model_extension_module_d_blog_module->getConfigData('d_blog_module', 'd_blog_module_setting', $this->config->get('config_store_id'), $this->config_file); + } + } + + public function get($args) + { + if ($this->d_blog_module) { + $this->load->model('extension/d_blog_module/post'); + $this->load->model('extension/d_blog_module/review'); + $this->load->model('extension/' . $this->codename . '/d_blog_module'); + $this->load->model('tool/image'); + $post_info = $this->model_extension_d_blog_module_post->getPost($args['id']); + $post_keyword = $this->model_extension_d_vuefront_d_blog_module->getPostKeyword($args['id']); + + if (!empty($post_keyword['keyword'])) { + $keyword = $post_keyword['keyword']; + } else { + $keyword = ''; + } + + $width = $this->setting['post']['image_width']; + $height = $this->setting['post']['image_height']; + if ($post_info['image']) { + $image = $this->model_tool_image->resize($post_info['image'], $width, $height); + $imageLazy = $this->model_tool_image->resize($post_info['image'], 10, ceil(10 * $height / $width)); + } else { + $image = ''; + $imageLazy = ''; + } + + $review_total_info = $this->model_extension_d_blog_module_review->getTotalReviewsByPostId($post_info['post_id']); + $rating = (int) $review_total_info['rating']; + + return array( + 'id' => $post_info['post_id'], + 'title' => $post_info['title'], + 'name' => $post_info['title'], + 'description' => html_entity_decode($post_info['description'], ENT_QUOTES, 'UTF-8'), + 'shortDescription' => strip_tags(html_entity_decode($post_info['short_description'], ENT_QUOTES, 'UTF-8')), + 'image' => $image, + 'imageLazy' => $imageLazy, + 'datePublished' => iconv(mb_detect_encoding(strftime($this->setting['post']['date_format'][$this->config->get('config_language_id')], strtotime($post_info['date_published']))), "utf-8//IGNORE", strftime($this->setting['post']['date_format'][$this->config->get('config_language_id')], strtotime($post_info['date_published']))), + 'rating' => $rating, + 'next' => $this->vfload->resolver('blog/post/next'), + 'prev' => $this->vfload->resolver('blog/post/prev'), + 'reviews' => $this->vfload->resolver('blog/review/get'), + 'categories' => $this->vfload->resolver('blog/post/categories'), + 'url' => $this->vfload->resolver('blog/post/url'), + 'keyword' => $keyword, + 'meta' => array( + 'title' => html_entity_decode($post_info['meta_title'], ENT_QUOTES, 'UTF-8'), + 'description' => html_entity_decode($post_info['meta_description'], ENT_QUOTES, 'UTF-8'), + 'keyword' => html_entity_decode($post_info['meta_keyword'], ENT_QUOTES, 'UTF-8') + ) + ); + } else { + return array(); + } + } + + public function getList($args) + { + if ($this->d_blog_module) { + $this->load->model('extension/d_blog_module/post'); + + if (in_array($args['sort'], array('sort_order', 'model', 'quantity', 'price', 'date_added'))) { + $args['sort'] = 'p.' . $args['sort']; + } elseif (in_array($args['sort'], array('name'))) { + $args['sort'] = 'pd.' . $args['sort']; + } + + $posts = array(); + + $filter_data = array( + 'filter_category_id' => $args['category_id'], + 'sort' => $args['sort'], + 'order' => $args['order'], + 'start' => ($args['page'] - 1) * $args['size'], + 'limit' => $args['size'], + ); + + if (!empty($args['search'])) { + $filter_data['filter_name'] = $args['search']; + $filter_data['filter_description'] = $args['search']; + } + + $post_total = $this->model_extension_d_blog_module_post->getTotalPosts($filter_data); + + $results = $this->model_extension_d_blog_module_post->getPosts($filter_data); + + foreach ($results as $result) { + $posts[] = $this->get(array('id' => $result['post_id'])); + } + + return array( + 'content' => $posts, + 'first' => $args['page'] === 1, + 'last' => $args['page'] === ceil($post_total / $args['size']), + 'number' => (int) $args['page'], + 'numberOfElements' => count($posts), + 'size' => (int) $args['size'], + 'totalPages' => (int) ceil($post_total / $args['size']), + 'totalElements' => (int) $post_total, + ); + } else { + return array( + 'content' => array(), + 'first' => 1, + 'last' => 1, + 'number' => 0, + 'numberOfElements' => 0, + 'size' => 0, + 'totalPages' => 0, + 'totalElements' => 0, + ); + } + } + + public function categories($args) + { + if ($this->d_blog_module) { + $this->load->model('extension/d_blog_module/category'); + $post = $args['parent']; + + $result = $this->model_extension_d_blog_module_category->getCategoryByPostId($post['id']); + $categories = array(); + foreach ($result as $category) { + $categories[] =$this->vfload->data('blog/category/get', array('id' => $category['category_id'])); + } + return $categories; + } else { + return array(); + } + } + public function next($args) + { + if ($this->d_blog_module) { + $this->load->model('extension/d_blog_module/post'); + $post = $args['parent']; + $next_post_info = $this->model_extension_d_blog_module_post->getNextPost($post['id'], 0); + if(empty($next_post_info)) { + return null; + } + return $this->get(array('id' => $next_post_info['post_id'])); + } else { + return array(); + } + } + + public function prev($args) + { + if ($this->d_blog_module) { + $this->load->model('extension/d_blog_module/post'); + $post = $args['parent']; + $prev_post_info = $this->model_extension_d_blog_module_post->getPrevPost($post['id'], 0); + if (empty($prev_post_info)) { + return null; + } + return $this->get(array('id' => $prev_post_info['post_id'])); + + } else { + return array(); + } + } + + public function url($data) + { + $post_info = $data['parent']; + $result = $data['args']['url']; + + $result = str_replace("_id", $post_info['id'], $result); + $result = str_replace("_name", $post_info['name'], $result); + + + if ($post_info['keyword']) { + $result = '/'.$post_info['keyword']; + } + + return $result; + } +} diff --git a/catalog/controller/extension/d_vuefront/common/home.php b/catalog/controller/extension/d_vuefront/common/home.php index 304d679..4f36eea 100644 --- a/catalog/controller/extension/d_vuefront/common/home.php +++ b/catalog/controller/extension/d_vuefront/common/home.php @@ -10,4 +10,13 @@ public function get() { ) ); } -} \ No newline at end of file + + public function searchUrl($args) { + $this->load->model('extension/d_vuefront/seo'); + + $result = $this->model_extension_d_vuefront_seo->searchKeyword($args['url']); + + + return $result; + } +} diff --git a/catalog/controller/extension/d_vuefront/common/page.php b/catalog/controller/extension/d_vuefront/common/page.php index 62061c9..3256b24 100644 --- a/catalog/controller/extension/d_vuefront/common/page.php +++ b/catalog/controller/extension/d_vuefront/common/page.php @@ -1,77 +1,94 @@ -load->model('extension/'.$this->codename.'/page'); - $information_info = $this->model_extension_d_vuefront_page->getPage($args['id']); - $category_keyword = $this->model_extension_d_vuefront_page->getPageKeyword($args['id']); - - if (!empty($category_keyword['keyword'])) { - $keyword = $category_keyword['keyword']; - } else { - $keyword = ''; - } - - return array( - 'id' => $information_info['information_id'], - 'title' => $information_info['title'], - 'name' => $information_info['title'], - 'description' => html_entity_decode($information_info['description'], ENT_QUOTES, 'UTF-8'), - 'sort_order' => (int)$information_info['sort_order'], - 'meta' => array( - 'title' => html_entity_decode($information_info['meta_title'], ENT_QUOTES, 'UTF-8'), - 'description' => html_entity_decode($information_info['meta_description'], ENT_QUOTES, 'UTF-8'), - 'keyword' => html_entity_decode($information_info['meta_keyword'], ENT_QUOTES, 'UTF-8') - ), - 'keyword' => $keyword - ); - } - - public function getList($args) - { - $this->load->model('extension/'.$this->codename.'/page'); - - if (in_array($args['sort'], array('sort_order', 'title'))) { - $args['sort'] = 'i.' . $args['sort']; - } elseif (in_array($args['sort'], array('name'))) { - $args['sort'] = 'id.' . $args['sort']; - } - - $posts = array(); - - $filter_data = array( - 'sort' => $args['sort'], - 'order' => $args['order'], - 'start' => ($args['page'] - 1) * $args['size'], - 'limit' => $args['size'] - ); - - if (!empty($args['search'])) { - $filter_data['filter_title'] = $args['search']; - $filter_data['filter_description'] = $args['search']; - } - - $page_total = $this->model_extension_d_vuefront_page->getTotalPages($filter_data); - - $results = $this->model_extension_d_vuefront_page->getPages($filter_data); - - foreach ($results as $result) { - $posts[] = $this->get(array('id' => $result['information_id'])); - } - - return array( - 'content' => $posts, - 'first' => $args['page'] === 1, - 'last' => $args['page'] === ceil($page_total / $args['size']), - 'number' => (int)$args['page'], - 'numberOfElements' => count($posts), - 'size' => (int)$args['size'], - 'totalPages' => (int)ceil($page_total / $args['size']), - 'totalElements' => (int)$page_total, - ); - } -} +load->model('extension/'.$this->codename.'/page'); + $information_info = $this->model_extension_d_vuefront_page->getPage($args['id']); + $category_keyword = $this->model_extension_d_vuefront_page->getPageKeyword($args['id']); + + if (!empty($category_keyword['keyword'])) { + $keyword = $category_keyword['keyword']; + } else { + $keyword = ''; + } + + return array( + 'id' => $information_info['information_id'], + 'title' => $information_info['title'], + 'name' => $information_info['title'], + 'description' => html_entity_decode($information_info['description'], ENT_QUOTES, 'UTF-8'), + 'sort_order' => (int)$information_info['sort_order'], + 'meta' => array( + 'title' => html_entity_decode($information_info['meta_title'], ENT_QUOTES, 'UTF-8'), + 'description' => html_entity_decode($information_info['meta_description'], ENT_QUOTES, 'UTF-8'), + 'keyword' => html_entity_decode($information_info['meta_keyword'], ENT_QUOTES, 'UTF-8') + ), + 'keyword' => $keyword, + 'url' => $this->vfload->resolver('common/page/url') + ); + } + + public function getList($args) + { + $this->load->model('extension/'.$this->codename.'/page'); + + if (in_array($args['sort'], array('sort_order', 'title'))) { + $args['sort'] = 'i.' . $args['sort']; + } elseif (in_array($args['sort'], array('name'))) { + $args['sort'] = 'id.' . $args['sort']; + } + + $posts = array(); + + $filter_data = array( + 'sort' => $args['sort'], + 'order' => $args['order'], + 'start' => ($args['page'] - 1) * $args['size'], + 'limit' => $args['size'] + ); + + if (!empty($args['search'])) { + $filter_data['filter_title'] = $args['search']; + $filter_data['filter_description'] = $args['search']; + } + + $page_total = $this->model_extension_d_vuefront_page->getTotalPages($filter_data); + + $results = $this->model_extension_d_vuefront_page->getPages($filter_data); + + foreach ($results as $result) { + $posts[] = $this->get(array('id' => $result['information_id'])); + } + + return array( + 'content' => $posts, + 'first' => $args['page'] === 1, + 'last' => $args['page'] === ceil($page_total / $args['size']), + 'number' => (int)$args['page'], + 'numberOfElements' => count($posts), + 'size' => (int)$args['size'], + 'totalPages' => (int)ceil($page_total / $args['size']), + 'totalElements' => (int)$page_total, + ); + } + + public function url($data) + { + $page_info = $data['parent']; + $result = $data['args']['url']; + + $result = str_replace("_id", $page_info['id'], $result); + $result = str_replace("_name", $page_info['name'], $result); + + + if ($page_info['keyword']) { + $result = '/'.$page_info['keyword']; + } + + return $result; + } +} diff --git a/catalog/controller/extension/d_vuefront/store/category.php b/catalog/controller/extension/d_vuefront/store/category.php index 3618af7..7b075e7 100644 --- a/catalog/controller/extension/d_vuefront/store/category.php +++ b/catalog/controller/extension/d_vuefront/store/category.php @@ -10,6 +10,10 @@ public function get($args) $this->load->model('extension/'.$this->codename.'/category'); $this->load->model('tool/image'); $category_info = $this->model_catalog_category->getCategory($args['id']); + if (empty($category_info)) { + return array(); + } + $category_keyword = $this->model_extension_d_vuefront_category->getCategoryKeyword($args['id']); if (!empty($category_keyword['keyword'])) { @@ -114,13 +118,13 @@ public function url($data) $result = str_replace("_id", $category_info['id'], $result); $result = str_replace("_name", $category_info['name'], $result); - + if ($category_info['keyword']) { $result = '/'.$category_info['keyword']; } - + return $result; } } diff --git a/catalog/controller/extension/d_vuefront/store/product.php b/catalog/controller/extension/d_vuefront/store/product.php index 914e31d..9856586 100644 --- a/catalog/controller/extension/d_vuefront/store/product.php +++ b/catalog/controller/extension/d_vuefront/store/product.php @@ -105,7 +105,7 @@ public function get($args) $popup_height = $this->config->get('config_image_popup_height'); $description_length = $this->config->get('config_product_description_length'); } - + if ($product_info['image']) { $image = $this->model_tool_image->resize($product_info['image'], $width, $height); $imageLazy = $this->model_tool_image->resize($product_info['image'], 10, ceil(10 * $height / $width)); @@ -160,6 +160,7 @@ public function get($args) 'attributes' => $this->vfload->resolver('store/product/attribute'), 'reviews' => $this->vfload->resolver('store/review/get'), 'options' => $this->vfload->resolver('store/product/option'), + 'url' => $this->vfload->resolver('store/product/url'), 'keyword' => $keyword, 'meta' => array( 'title' => html_entity_decode($product_info['meta_title'], ENT_QUOTES, 'UTF-8'), @@ -282,4 +283,20 @@ public function images($data) return $images; } + + public function url($data) + { + $product_info = $data['parent']; + $result = $data['args']['url']; + + $result = str_replace("_id", $product_info['id'], $result); + $result = str_replace("_name", $product_info['name'], $result); + + + if ($product_info['keyword']) { + $result = '/'.$product_info['keyword']; + } + + return $result; + } } diff --git a/catalog/controller/extension/module/d_vuefront_schema/mapping.json b/catalog/controller/extension/module/d_vuefront_schema/mapping.json index ad1dc81..8a2a400 100755 --- a/catalog/controller/extension/module/d_vuefront_schema/mapping.json +++ b/catalog/controller/extension/module/d_vuefront_schema/mapping.json @@ -13,6 +13,8 @@ "home": "common/home/get", + "searchUrl": "common/home/searchUrl", + "uploadFile": "common/file/upload", "countriesList": "common/country/getList", diff --git a/catalog/controller/extension/module/d_vuefront_schema/schema.graphql b/catalog/controller/extension/module/d_vuefront_schema/schema.graphql index eb61cb1..4620ad7 100755 --- a/catalog/controller/extension/module/d_vuefront_schema/schema.graphql +++ b/catalog/controller/extension/module/d_vuefront_schema/schema.graphql @@ -126,6 +126,7 @@ type Page { title: String @deprecated(reason: "Changed to name!") name: String description: String + url(url: String): String keyword: String meta: Meta sort_order: Int @@ -163,6 +164,7 @@ type Post { next: Post prev: Post meta: Meta + url(url: String): String } type PostResult { @@ -216,6 +218,7 @@ type Product { images(limit: Int = 3): [productImage] keyword: String meta: Meta + url(url: String): String } type productAttribute { @@ -412,6 +415,12 @@ type Total { text: String } +type SearchUrlResult { + url: String + type: String + id: String +} + type RootMutationType { uploadFile(file: Upload): FileResult accountLogin(email: String, password: String): LoginResult @@ -471,5 +480,6 @@ type RootQueryType { accountAddressList: [AccountAddress] accountAddress(id: String): AccountAddress checkoutLink: CheckoutLinkResult + searchUrl(url: String): SearchUrlResult } diff --git a/catalog/model/extension/d_vuefront/seo.php b/catalog/model/extension/d_vuefront/seo.php new file mode 100644 index 0000000..ffa2cb9 --- /dev/null +++ b/catalog/model/extension/d_vuefront/seo.php @@ -0,0 +1,55 @@ += '3.0.0.0') { + $parts = explode('/', preg_replace("/^\//", "", $keyword)); + + // remove any empty arrays from trailing + if (utf8_strlen(end($parts)) == 0) { + array_pop($parts); + } + + foreach ($parts as $part) { + $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE keyword = '" . $this->db->escape($part) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "'"); + + if ($query->num_rows) { + $url = explode('=', $query->row['query']); + + if ($url[0] == 'product_id') { + $type = 'product'; + $id = $url[1]; + } + + if ($url[0] == 'category_id') { + $type = 'category'; + $id = $url[1]; + } + + if ($url[0] == 'manufacturer_id') { + $type = 'manufacturer'; + $id = $url[1]; + } + + if ($url[0] == 'information_id') { + $type = 'page'; + $id = $url[1]; + } + } else { + break; + } + } + } else { + // $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` LIKE 'product_id=".(int)$product_id."'"); + } + + return array( + 'type' => $type, + 'id' => $id, + 'url' => $keyword + ); + } +} diff --git a/system/library/d_shopunity/extension/d_vuefront.json b/system/library/d_shopunity/extension/d_vuefront.json index 324b38b..ab191cc 100755 --- a/system/library/d_shopunity/extension/d_vuefront.json +++ b/system/library/d_shopunity/extension/d_vuefront.json @@ -44,7 +44,7 @@ "catalog/controller/extension/d_vuefront", "catalog/controller/extension/module/d_vuefront_schema", "catalog/model/extension/d_vuefront", - "catalog/view/javascript/d_vuefront" + "catalog/view/javascript/d_vuefront", "system/library/d_graphql" ], "changelog": [