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

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

11 сентября 2011 г. Ruslan Brest Просмотров: 9699 RSS 10
Howto » OpenCart

Буду краток:

Рецепт приготовления:

diff --git a/public_html/admin/controller/catalog/category.php b/public_html/admin/controller/catalog/category.php
index d449b87..4a33c14 100644
--- a/public_html/admin/controller/catalog/category.php
+++ b/public_html/admin/controller/catalog/category.php
@@ -108,6 +108,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');
 
@@ -406,6 +408,7 @@ class ControllerCatalogCategory extends Controller {
 			$output[$result['category_id']] = array(
 				'category_id' => $result['category_id'],
 				'name'        => $name,
+				'keyword'     => $result['keyword'],
 				'sort_order'  => $result['sort_order'],
 				'selected'    => $selected,
 				'action'      => $action,
diff --git a/public_html/admin/language/english/catalog/category.php b/public_html/admin/language/english/catalog/category.php
index 88a5549..669bb3a 100644
--- a/public_html/admin/language/english/catalog/category.php
+++ b/public_html/admin/language/english/catalog/category.php
@@ -9,6 +9,7 @@ $_['text_image_manager']     = 'Image Manager';
 
 // Column
 $_['column_name']            = 'Category Name';
+$_['column_seo_keyword']     = 'SEO Keyword';
 $_['column_sort_order']      = 'Sort Order';
 $_['column_action']          = 'Action';
 
diff --git a/public_html/admin/language/russian/catalog/category.php b/public_html/admin/language/russian/catalog/category.php
index 6acd92a..faa975b 100644
--- a/public_html/admin/language/russian/catalog/category.php
+++ b/public_html/admin/language/russian/catalog/category.php
@@ -9,6 +9,7 @@ $_['text_image_manager']     = 'Менеджер изображений';
 
 // Column
 $_['column_name']            = 'Название категории';
+$_['column_seo_keyword']     = 'SEO URL';
 $_['column_sort_order']      = 'Порядок сортировки';
 $_['column_action']          = 'Действие';
 
diff --git a/public_html/admin/model/catalog/category.php b/public_html/admin/model/catalog/category.php
index 27a35f4..ffbee94 100644
--- a/public_html/admin/model/catalog/category.php
+++ b/public_html/admin/model/catalog/category.php
@@ -193,7 +193,7 @@ class ModelCatalogCategory extends Model {
 	}
 
 	public function getCategoriesByParentId($parent_id = 0) {
-		$query = $this->db->query("SELECT *, (SELECT COUNT(parent_id) FROM " . DB_PREFIX . "category WHERE parent_id = c.category_id) AS children FROM " . DB_PREFIX . "category c LEFT JOIN " . DB_PREFIX . "category_description cd ON (c.category_id = cd.category_id) LEFT JOIN " . DB_PREFIX . "category_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.parent_id = '" . (int)$parent_id . "' AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "' ORDER BY c.sort_order, cd.name");
+		$query = $this->db->query("SELECT *, (SELECT COUNT(parent_id) FROM " . DB_PREFIX . "category WHERE parent_id = c.category_id) AS children FROM " . DB_PREFIX . "category c LEFT JOIN " . DB_PREFIX . "category_description cd ON (c.category_id = cd.category_id) LEFT JOIN " . DB_PREFIX . "category_to_store c2s ON (c.category_id = c2s.category_id) LEFT JOIN `".DB_PREFIX."url_alias` ua ON ( ua.query = CONCAT('category_id=', c.category_id) ) WHERE c.parent_id = '" . (int)$parent_id . "' AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "' ORDER BY c.sort_order, cd.name");
 
 		return $query->rows;
 	}
diff --git a/public_html/admin/view/template/catalog/category_list.tpl b/public_html/admin/view/template/catalog/category_list.tpl
index 76cdd01..b5d9af9 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>
@@ -41,6 +42,7 @@
               <?php } else { ?>
                 <td class="left"><?php echo $category['indent']; ?><?php echo $category['name']; ?></td>
               <?php } ?>
+              <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> ]
@@ -49,7 +51,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>
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 для интернет-магазинов
Комментариев: 10
  1. очень-очень полезна!

  2. Notice: Undefined index: keyword in \home\mydomain.com\admin\controller\catalog\category.php on line 105

    105. 'keyword' => $result['keyword'],

  3. 2011-09-18 в 16:42:30 | Ruslan Brest

    elko, а какая версия Opencart? В 1.5.1.1 (1.5.1.2) такую строку можно найти только в 411 строке. В заголовке указано, что этот патч для 1.5.x. С предыдущими версиями OC не сталкивался.

  4. Еще вопрос появился, в версии 1.5.1.3 в admin/model/catalog/category.php такой строки нет $query = $this->db->query("SELECT *, (SELECT COUNT(parent_id) FROM " . DB_PREFIX . "category WHERE parent_id = c.category_id) AS children FROM " . DB_PREFIX . "category c LEFT JOIN " . ....

    я пока не очень силен в php, можете подсказать какой код нужно сюда вставлять?

  5. 2011-12-10 в 07:20:23 | Ruslan Brest

    Deus, пардон, времени сейчас нет - постараюсь в воскресенье или субботу посмотреть, чем 1.5.1.3 отличается.

  6. для 1.5.1.3 одна поправка:

    $query = $this->db->query("SELECT *, (SELECT COUNT(parent_id) FROM " . DB_PREFIX . "category WHERE parent_id = c.category_id) AS children FROM " . DB_PREFIX . "category c LEFT JOIN " . DB_PREFIX . "category_description cd ON (c.category_id = cd.category_id) LEFT JOIN " . DB_PREFIX . "category_to_store c2s ON (c.category_id = c2s.category_id) LEFT JOIN oc_url_alias ua ON ( ua.query = CONCAT('category_id=', c.category_id) ) WHERE c.parent_id = '" . (int)$parent_id . "' AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "' ORDER BY c.sort_order, cd.name");

  7. День добрый.

    А что с 1.5.5.1?

    В admin/model/catalog/category.php

    $query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "category_path` WHERE category_id = '" . (int)$data['parent_id'] . "' ORDER BY `level` ASC");

    Что с этим делать?

    Спасибо!

  8. 2013-03-05 в 06:13:05 | Ruslan Brest

    На 1.5.5 не смотрел. Попробуйте:

    SELECT * FROM oc_category_path
     LEFT JOIN oc_url_alias ua ON
     ( ua.query = CONCAT('category_id=', category_id) )
     WHERE category_id = 60 ORDER BY `level` ASC

    То есть

    $query = $this->db->query("SELECT * FROM `"
     . DB_PREFIX . "category_path` LEFT JOIN "
     . DB_PREFIX . "url_alias ua ON (ua.query = CONCAT('category_id=', category_id) )
     WHERE category_id = '" . (int)$data['parent_id']
     . "' ORDER BY `level` ASC");
  9. Не пашет. Т.е. отображается все кроме собственно самих SEO. если не сложно гляньте пожалуста.

    admin/model/catalog/category.php

    https://dl.dropbox.com/u/17011540/category.php

    С меня VQMod:)

  10. 2013-03-06 в 01:36:58 | Ruslan Brest

    О, да. Зачем же вы мне подсунули совершенно левый запрос откуда-то из середины функции addCategory?! Видно ведь и по коду в дифф-файле, и по логике, что надо модифицировать функцию, возвращающую список категорий. В 1.5.5 - это getCategories.

    Опубликовал для 1.5.5 в новой заметке: http://rb.labtodo.com/page/opencart-155-admin-pokaz-seo-keyword-v-spiske-kategorij

    Там есть и архив со всеми измененными файлами.

    VQmod я люто ненавижу, но спасибо за предложение. Присылайте, включу в архив и vqmod вариант.

    Логин через Фейсбук сейчас работает? Вроде поправил на скорую руку, но нет полной уверенности, что через FB меня логинило.

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

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

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

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

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

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