Ruslan Brest, rb.labtodo.com
Backend web-developer: CodeIgniter, PHP, MySQL, OpenCart, PrestaShop, MaxSite CMS

Opencart 1.5.5 (admin): показ SEO Keyword в списке категорий

5 марта 2013 г. Ruslan Brest Просмотров: 6536 RSS 6
Howto » OpenCart

Добавляется колонка на странице категорий в админ-части:

Для предыдущий версий - см. список связанных статей внизу.

commit 078537f3d45ecbf7908169e55251243c463ac593
Author: Ruslan Brest <rb@labtodo.com>
Date:   Tue Mar 5 14:42:44 2013 +0200
    [+] Opencart 1.5.5 (admin): показ SEO Keyword в списке категорий
diff --git a/public_html/admin/controller/catalog/category.php b/public_html/admin/controller/catalog/category.php
index d82776a..32a02a4 100644
--- a/public_html/admin/controller/catalog/category.php
+++ b/public_html/admin/controller/catalog/category.php
@@ -157,6 +157,7 @@ class ControllerCatalogCategory extends Controller {
 			$this->data['categories'][] = array(
 				'category_id' => $result['category_id'],
 				'name'        => $result['name'],
+				'keyword'     => $result['keyword'],
 				'sort_order'  => $result['sort_order'],
 				'selected'    => isset($this->request->post['selected']) && in_array($result['category_id'], $this->request->post['selected']),
 				'action'      => $action
@@ -168,6 +169,7 @@ class ControllerCatalogCategory extends Controller {
 		$this->data['text_no_results'] = $this->language->get('text_no_results');
 
 		$this->data['column_name'] = $this->language->get('column_name');
+		$this->data['column_seo_keyword'] = $this->language->get('column_seo_keyword');
 		$this->data['column_sort_order'] = $this->language->get('column_sort_order');
 		$this->data['column_action'] = $this->language->get('column_action');
 
diff --git a/public_html/admin/language/english/catalog/category.php b/public_html/admin/language/english/catalog/category.php
index 7c26ba9..bbec2cd 100644
--- a/public_html/admin/language/english/catalog/category.php
+++ b/public_html/admin/language/english/catalog/category.php
@@ -11,6 +11,7 @@ $_['text_clear']             = 'Clear';
 
 // Column
 $_['column_name']            = 'Category Name';
+$_['column_seo_keyword']     = 'SEO Keyword';
 $_['column_sort_order']      = 'Sort Order';
 $_['column_action']          = 'Action';
 
diff --git a/public_html/admin/model/catalog/category.php b/public_html/admin/model/catalog/category.php
index a90b74c..021cbb9 100644
--- a/public_html/admin/model/catalog/category.php
+++ b/public_html/admin/model/catalog/category.php
@@ -205,7 +205,14 @@ class ModelCatalogCategory extends Model {
 	} 
 	
 	public function getCategories($data) {
-		$sql = "SELECT cp.category_id AS category_id, GROUP_CONCAT(cd1.name ORDER BY cp.level SEPARATOR ' > ') AS name, c.parent_id, c.sort_order FROM " . DB_PREFIX . "category_path cp LEFT JOIN " . DB_PREFIX . "category c ON (cp.path_id = c.category_id) LEFT JOIN " . DB_PREFIX . "category_description cd1 ON (c.category_id = cd1.category_id) LEFT JOIN " . DB_PREFIX . "category_description cd2 ON (cp.category_id = cd2.category_id) WHERE cd1.language_id = '" . (int)$this->config->get('config_language_id') . "' AND cd2.language_id = '" . (int)$this->config->get('config_language_id') . "'";
+		$sql = "SELECT cp.category_id AS category_id, GROUP_CONCAT(cd1.name ORDER BY cp.level SEPARATOR ' > ') AS name, c.parent_id, c.sort_order, ua.keyword";
+		$sql .= " FROM " . DB_PREFIX . "category_path cp";
+		$sql .= " LEFT JOIN " . DB_PREFIX . "category c ON (cp.path_id = c.category_id)";
+		$sql .= " LEFT JOIN " . DB_PREFIX . "url_alias ua ON (ua.query = CONCAT('category_id=', cp.category_id))";
+		$sql .= " LEFT JOIN " . DB_PREFIX . "category_description cd1 ON (c.category_id = cd1.category_id)";
+		$sql .= " LEFT JOIN " . DB_PREFIX . "category_description cd2 ON (cp.category_id = cd2.category_id)";
+		$sql .= " WHERE cd1.language_id = '" . (int)$this->config->get('config_language_id')
+			. "' AND cd2.language_id = '" . (int)$this->config->get('config_language_id') . "'";
 		
 		if (!empty($data['filter_name'])) {
 			$sql .= " AND cd2.name LIKE '%" . $this->db->escape($data['filter_name']) . "%'";
diff --git a/public_html/admin/view/template/catalog/category_list.tpl b/public_html/admin/view/template/catalog/category_list.tpl
index 45ca090..0e37f56 100644
--- a/public_html/admin/view/template/catalog/category_list.tpl
+++ b/public_html/admin/view/template/catalog/category_list.tpl
@@ -23,6 +23,7 @@
             <tr>
               <td width="1" style="text-align: center;"><input type="checkbox" onclick="$('input[name*=\'selected\']').attr('checked', this.checked);" /></td>
               <td class="left"><?php echo $column_name; ?></td>
+              <td class="left"><?php echo $column_seo_keyword; ?></td>
               <td class="right"><?php echo $column_sort_order; ?></td>
               <td class="right"><?php echo $column_action; ?></td>
             </tr>
@@ -37,6 +38,7 @@
                 <input type="checkbox" name="selected[]" value="<?php echo $category['category_id']; ?>" />
                 <?php } ?></td>
               <td class="left"><?php echo $category['name']; ?></td>
+              <td class="left"><?php echo $category['keyword']; ?></td>
               <td class="right"><?php echo $category['sort_order']; ?></td>
               <td class="right"><?php foreach ($category['action'] as $action) { ?>
                 <a href="<?php echo $action['href']; ?>"><?php echo $action['text']; ?></a>
@@ -45,7 +47,7 @@
             <?php } ?>
             <?php } else { ?>
             <tr>
-              <td class="center" colspan="4"><?php echo $text_no_results; ?></td>
+              <td class="center" colspan="5"><?php echo $text_no_results; ?></td>
             </tr>
             <?php } ?>
           </tbody>

Файлы для скачивания:

Opencart 1.5.5 (admin): показ SEO Keyword в списке категорий

  • diff - для автоматического или ручного переноса изменений;
  • папка со всеми измененными файлами - для тех, кому удобней сравнивать и переносить изменения инструментами вроде WinMerge, Beyond Compare, Meld;
  • xml - для тех, кто пользуется vqMod.
twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru digg.com friendfeed.com liveinternet.ru livejournal.ru yandex.ru del.icio.us
Более 1000 готовых шаблонов Opencart для интернет-магазинов
Комментариев: 6
  1. https://dl.dropbox.com/u/17011540/SEO_Keywords_in_Admin_Categories.xml

    ВиКъю удобен тем, что не надо менять первоисточник, но это уже на любителя

    FB заработал, правда после логина кидает на главную.

    з.ы. Спасибо за оперативную работу, очень нравится ваш ресурс, очень много интересноу и полезной инфы!

  2. 2013-03-09 в 20:25:35 | Ruslan Brest

    Спасибо, добавил в архив.

    vqMod удобен только пользователям и ровно до тех пор, пока всё идёт гладко и идеально. Как только начинается активная работа с магазином - оно превращается в большую занозу в заднице.

  3. 2013-03-11 в 22:48:47 | Сергей

    спасибо за дополнение:)

    а не подскажите как можно оптимизировать seo url на opencart, если товаров много (у меня порядка 90 000)?

  4. 2013-03-14 в 03:52:59 | Ruslan Brest

    Не понял, что значит оптимизировать seo url.

    Если вдруг речь об автоматической их генерации и проверке на дубликаты - поищите модули или частные решения в блогах и на форумах. Может быть Deadcow Seo. Если не ошибаюсь, он этим и занимается. Может и другие есть. Не пользуюсь, поэтому не знаю.

  5. 2013-03-19 в 22:07:14 | Сергей
    Не понял, что значит оптимизировать seo url.

    Попробуйте завести 100 000 товаров и включить seo url:)

    Помогает индексация всех полей в url_alias

    и вот это решение http://opencartforum.ru/topic/1348-тормозит-ужасно-решено/page__st__40

  6. 2013-03-20 в 02:53:24 | Ruslan Brest

    На ста тысячах половину опенкарта переписывать и оптимизировать надо, там проблем хватает. Только лишь добавление индексов не спасёт. На форуме есть обсуждения, читайте там.

Оставьте комментарий!

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Имя и сайт используются только при регистрации

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email. При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д., а также подписку на новые комментарии.

Авторизация  Facebook. MaxSiteAuth. Loginza

(обязательно)