Перейти к содержанию

Синхронизация OpenCart 2.0 c 1C


Гость vadim

Рекомендуемые сообщения

  • 2 месяца спустя...
  • Ответов 64
  • Создана
  • Последний ответ
  • 3 месяца спустя...
Ошибку нашел.

Для людей, которые занимаются seo.

 

 

[spoiler=Сохраняем имя категории:]

private function initCategory($category, $parent, $data = array(), $language_id) {

 

$result = array(

'status' => isset($data['status']) ? $data['status'] : 1

,'top' => isset($data['top']) ? $data['top'] : 1

,'category_store' => isset($data['category_store']) ? $data['category_store'] : array(0)

,'keyword' => isset($data['keyword']) ? $data['keyword'] : ''

,'image' => (isset($category->Картинка)) ? (string)$category->Картинка : ((isset($data['image'])) ? $data['image'] : '')

,'sort_order' => (isset($category->Сортировка)) ? (int)$category->Сортировка : ((isset($data['sort_order'])) ? $data['sort_order'] : 0)

,'column' => 1

);

 

$result['category_description'] = array(

$language_id => array(

'name' => (isset($data['name'])? $data['name'] : (string)$category->Наименование

,'meta_keyword' => (isset($data['category_description'][$language_id]['meta_keyword'])) ? $data['category_description'][$language_id]['meta_keyword'] : ''

,'meta_description' => (isset($data['category_description'][$language_id]['meta_description'])) ? $data['category_description'][$language_id]['meta_description'] : ''

,'description' => (isset($category->Описание)) ? (string)$category->Описание : ((isset($data['category_description'][$language_id]['description'])) ? $data['category_description'][$language_id]['description'] : '')

,'seo_title' => (isset($data['category_description'][$language_id]['seo_title'])) ? $data['category_description'][$language_id]['seo_title'] : ''

,'seo_h1' => (isset($data['category_description'][$language_id]['seo_h1'])) ? $data['category_description'][$language_id]['seo_h1'] : ''

),

);

 

$result['category_description'][$language_id]['meta_title'] = (isset($data['category_description'][$language_id]['meta_title'])) ? $data['category_description'][$language_id]['meta_title'] : '';

return $result;

}

 

 

 

[spoiler=И сохраняем url, перенося выделенный код]

private function insertCategory($xml, $parent = 0, $language_id) {

 

$this->load->model('catalog/category');

 

foreach ($xml as $category){

 

if (isset($category->Ид) && isset($category->Наименование) ){

$id = (string)$category->Ид;

 

$data = array();

 

$query = $this->db->query('SELECT * FROM `' . DB_PREFIX . 'category_to_1c` WHERE `1c_category_id` = "' . $this->db->escape($id) . '"');

 

if ($query->num_rows) {

$category_id = (int)$query->row['category_id'];

$data = $this->model_catalog_category->getCategory($category_id);

$data['category_description'] = $this->model_catalog_category->getCategoryDescriptions($category_id);

$data = $this->initCategory($category, $parent, $data, $language_id);

$this->model_catalog_category->editCategory($category_id, $data);

}

else {

$data = $this->initCategory($category, $parent, array(), $language_id);

//$category_id = $this->getCategoryIdByName($data['category_description'][1]['name']) ? $this->getCategoryIdByName($data['category_description'][1]['name']) : $this->model_catalog_category->addCategory($data);

$category_id = $this->model_catalog_category->addCategory($data);

$this->db->query('INSERT INTO `' . DB_PREFIX . 'category_to_1c` SET category_id = ' . (int)$category_id . ', `1c_category_id` = "' . $this->db->escape($id) . '"');

}

 

$this->CATEGORIES[$id] = $category_id;

}

 

if (!$query->num_rows) {

//только если тип 'translit'

if ($this->config->get('exchange1c_seo_url') == 2) {

$cat_name = "category-" . $data['parent_id'] . "-" . $data['category_description'][$language_id]['name'];

$this->setSeoURL('category_id', $category_id, $cat_name);

}

}

 

if ($category->Группы) $this->insertCategory($category->Группы->Группа, $category_id, $language_id);

}

 

unset($xml);

}

 

 

Спасибо

Ссылка на комментарий
Поделиться на другие сайты

  • 3 месяца спустя...
  • 4 недели спустя...
  • 4 недели спустя...
  • 11 месяцев спустя...
  • 2 недели спустя...
  • 1 месяц спустя...

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...