Вопрос: Организация каталога на UMI

B
На сайте с 10.03.2017
Offline
52
926

Добрый день,

не совсем уверен, что написал в правильную тему, но все же прошу помочь.

для правильной оптимизации нужно сделать разветвленный каталог, вида:

- Носки

-- Авторские носки

---Красные

---Оранжевые

...

и т.д.

На данный момент реализован 1 и 2 уровень.

Вопросов 2:

1) Как добавить раздел третьего уровня, находясь в админке? (знаю, что вопрос тупой, но в мануалах по юми - старая версия, видимо, несколько расходится, либо уже рекомендуют писать код)

либо как вариант - добавить отображаемый фильтр, чтобы они вел на новую страницу с соответствующими товарами?

2) Реально ли на юми привязать 1 товар к 2 каталогам? Как это сделать? Придется ли прописывать rel canonical - и где в юми это сделать.

Заранее спасибо.

S
На сайте с 13.10.2014
Offline
171
#1

первый вопрос

1. Войти в раздел Каталог админки

2. выбрать раздел, в котором вы хотите создать подкатегорию

3. нажать синюю кнопку "добавить раздел"

4. заполнить форму

5. сохранить изменения

второй вопрос

да. реально

1. открыть товар на редактирование в админке

2. в поле "виртуальные копии" выбрать раздел(ы) в котором будет лежать копия вашего товара. Надо понимать, что в данном случае новый товар не создается, поэтому при изменении параметров товара они поменяются во всех подкатегориях сразу.

3. сохранить товар

B
На сайте с 10.03.2017
Offline
52
#2
silicoid:
Надо понимать, что в данном случае новый товар не создается, поэтому при изменении параметров товара они поменяются во всех подкатегориях сразу.

огромное спасибо, а что произойдет с урлом товара? получится, что он будет доступен по нескольким урлам?

katenuha
На сайте с 13.06.2013
Offline
161
#3
baranki:
огромное спасибо, а что произойдет с урлом товара? получится, что он будет доступен по нескольким урлам?

Да, будет. Но на этот случай есть canonical, который ставится на все виртуальные копии и ссылаются на оригинал товара.

B
На сайте с 10.03.2017
Offline
52
#4

katenuha, чертовски логично. а мне вручную это в админке как прописать? или он автоматически проставится?

katenuha
На сайте с 13.06.2013
Offline
161
#5
baranki:
katenuha, чертовски логично. а мне вручную это в админке как прописать? или он автоматически проставится?

Нужно в custom.php добавить функцию(макрос) и вызвать в файле шаблона карточки товара

%custom makeRelCanonical()%
Это если у вас tpl

Сам код макроса:

public function makeRelCanonical($page_id = false){

$current_page_id = cmsController::getInstance()->getCurrentElementId();
$hierarchy_col = umiHierarchy::getInstance();
$domain_col = domainsCollection::getInstance();

if($page_id == false){
if($current_page_id == false){
return '';
}
if(defined('VIA_HTTP_SCHEME')){
throw new publicException('cant get current element via HTTP SCHEME MODE');
}
$page_id = $current_page_id;
$page = $hierarchy_col->getElement($page_id, true, true);
$object_id = $page->getObjectId();
$parents_ids = $hierarchy_col->getObjectInstances($object_id, true, true);
if(count($parents_ids) == 0 || count($parents_ids) == 1 || $parents_ids[0] == $page_id){
return '';
}
$first_parent_id = $parents_ids[0];
$path = $hierarchy_col->getPathById($first_parent_id);
$domain_id = $hierarchy_col->getElement($first_parent_id, true, true)->getDomainId();
$domain_name = $domain_col->getDomain($domain_id)->getHost();

return '<link rel="canonical" href="' . 'http://' . $domain_name . $path . '"/>';
}else{
$page_id = intval($page_id);
if($page_id == 0){
throw new publicException('wrong id given');
}
$page = $hierarchy_col->getElement($page_id, true, true);
if($page == false){
throw new publicException('page with id = ' . $page_id . ' not found');
}
$object_id = $page->getObjectId();
$parents_ids = $hierarchy_col->getObjectInstances($object_id, true, true);
if(count($parents_ids) == 0 || count($parents_ids) == 1 || $parents_ids[0] == $page_id){
return '';
}
$first_parent_id = $parents_ids[0];
$path = $hierarchy_col->getPathById($first_parent_id);
$domain_id = $hierarchy_col->getElement($first_parent_id, true, true)->getDomainId();
$domain_name = $domain_col->getDomain($domain_id)->getHost();

return '<link rel="canonical" href="' . 'http://' . $domain_name . $path . '"/>';
}
}

вот тут можно почитать документацию

B
На сайте с 10.03.2017
Offline
52
#6

спасибо за подробный ответ.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий