metrpro

Формирование URL в хлебных крошках

Recommended Posts

Прошу подсказать, где находится функция формирования хлебных крошек - хочу её слегка препарировать, возвращаясь к вопросу про обратный слэш. Спасибо

Поделиться сообщением


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

Тут

/apps/system/lib/sitebill.php

    /**
     * Get category breadcrumbs
     * @param array $params
     * @param array $category_structure
     * @param string $url
     * @return string
     */
    function get_category_breadcrumbs( $params, $category_structure, $url = '' ) {
        $rs = '';
        
        
        if ( !isset($params['topic_id']) || is_array($params['topic_id']) ) {
            return $rs;
        }
        
        if((int)$params['topic_id']==0){
        	return $rs;
        }
        if(!isset($category_structure['catalog'][$params['topic_id']])){
        	return $rs;
        }
        
        //foreach ( $category_structure['childs'][0] as $item_id => $catalog_id ) {
        if($category_structure['catalog'][$params['topic_id']]['url']!=''){
        	$ra[] = '<a href="'.rtrim($url,'/').'/'.$category_structure['catalog'][$params['topic_id']]['url'].'">'.$category_structure['catalog'][$params['topic_id']]['name'].'</a>';
        }else{
        	$ra[] = '<a href="'.rtrim($url,'/').'/topic'.$params['topic_id'].'.html">'.$category_structure['catalog'][$params['topic_id']]['name'].'</a>';
        }
        
        $parent_category_id = $category_structure['catalog'][$params['topic_id']]['parent_id'];
        while ( $category_structure['catalog'][$parent_category_id]['parent_id'] != 0 ) {
            if ( $j++ > 100 ) {
                return;
            }
	        if($category_structure['catalog'][$parent_category_id]['url']!=''){
	        	$ra[] = '<a href="'.rtrim($url,'/').'/'.$category_structure['catalog'][$parent_category_id]['url'].'">'.$category_structure['catalog'][$parent_category_id]['name'].'</a>';
	        }else{
	        	$ra[] = '<a href="'.rtrim($url,'/').'/topic'.$parent_category_id.'.html">'.$category_structure['catalog'][$parent_category_id]['name'].'</a>';
	        }
            $parent_category_id = $category_structure['catalog'][$parent_category_id]['parent_id'];
        }
        if ( $category_structure['catalog'][$parent_category_id]['name'] != '' ) {
       	 	if($category_structure['catalog'][$parent_category_id]['url']!=''){
	        	$ra[] = '<a href="'.rtrim($url,'/').'/'.$category_structure['catalog'][$parent_category_id]['url'].'">'.$category_structure['catalog'][$parent_category_id]['name'].'</a>';
	        }else{
	        	$ra[] = '<a href="'.rtrim($url,'/').'/topic'.$parent_category_id.'.html">'.$category_structure['catalog'][$parent_category_id]['name'].'</a>';
	        }
        }
        if(Multilanguage::is_set('LT_BC_HOME', '_template')){
        	$ra[]='<a href="'.SITEBILL_MAIN_URL.'/">'.Multilanguage::_('LT_BC_HOME', '_template').'</a>';
        }else{
        	$ra[]='<a href="'.SITEBILL_MAIN_URL.'/">'.Multilanguage::_('L_HOME').'</a>';
        }
      	//$ra[]='<a href="'.SITEBILL_MAIN_URL.'/">'.Multilanguage::_('L_HOME').'</a>';
        $rs = implode(' / ', array_reverse($ra));
        return $rs;
    }

 

Поделиться сообщением


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

а как сделать такую структуру и какой код написать и как?
Сайтглавная/Город/РазделПродажаквартир/1комнатная чтобы был переход к соответствующему разделу

а как быть если например город не выбран?  нажав например просто на раздел продажа 1комнт квартир?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, doma сказал:

а как быть если например город не выбран?  нажав например просто на раздел продажа 1комнт квартир?

если быть честным до конца, то ответ на этот вопрос должен давать тот, кто заказывает такие крошки)))

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

другими словами в карточке это может быть

Италия\Сицилия\Квартиры на Сицилии\Квартиры в Палермо\студии в Палермо

а в странице условно "Квартиры в Палермо" это уже может иметь вид

Италия\Вся недвижимость на Сицилии\Жилая недвижимость на Сицилии

Крошки это не только и не столько путеуказатель, но еще и дополнительная перелинковка для разброса веса.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 28.07.2016 в 18:49, metrpro сказал:

Спасибо, теперь все стало нормуль!

А можно код который изменили. Хочу настроить хлебные крошки с /

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
17 часов назад, mykvartira сказал:

А можно код который изменили. Хочу настроить хлебные крошки с /

Поставьте везде слэш перед закрывающими кавычками тега <a href>

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, metrpro сказал:

Поставьте везде слэш перед закрывающими кавычками тега <a href>

<a href="'.rtrim($url,'/').'/'.$category_structure['catalog'][$params['topic_id']]['url'].'/">'.$category_structure['catalog'][$params['topic_id']]['name'].'</a>';

Поделиться сообщением


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

Опишу что изменил, может поможет.

Переходим, как указывали выше ребята, /apps/system/lib/sitebill.php

Находим

<a href="'.rtrim($url,'/').'/'.$category_structure['catalog'][$params['topic_id']]['url'].'">

Меняем на

<a href="'.rtrim($url,'/').'/'.$category_structure['catalog'][$params['topic_id']]['url'].'/'.'">

 

В этом куске также ввел изменения, но не результата не заметил, может этот параметр для более глубокой вложенности. Но раз делаем, то делаем везде 

<a href="'.rtrim($url,'/').'/'.$category_structure['catalog'][$parent_category_id]['url'].'">

Меняем

<a href="'.rtrim($url,'/').'/'.$category_structure['catalog'][$parent_category_id]['url'].'/'.'">

и 3 последняя замена для одноязычных сайтов (как я понял, можно прописать еще и в мультиязычность )

Находим

<a href="'.rtrim($url,'/').'/'.$category_structure['catalog'][$parent_category_id]['url'].'">

Меняем

<a href="'.rtrim($url,'/').'/'.$category_structure['catalog'][$parent_category_id]['url'].'/'.'">

 

Скорее всего выполнил все правильно. Если что разработчики и люди поправят. 

Если не хотите потерять изменения, скопируйте файл со всем путем в свой шаблон.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, mykvartira сказал:

Опишу что изменил, может поможет.

Переходим, как указывали выше ребята, /apps/system/lib/sitebill.php

Находим


<a href="'.rtrim($url,'/').'/'.$category_structure['catalog'][$params['topic_id']]['url'].'">

Меняем на


<a href="'.rtrim($url,'/').'/'.$category_structure['catalog'][$params['topic_id']]['url'].'/'.'">

 

В этом куске также ввел изменения, но не результата не заметил, может этот параметр для более глубокой вложенности. Но раз делаем, то делаем везде 


<a href="'.rtrim($url,'/').'/'.$category_structure['catalog'][$parent_category_id]['url'].'">

Меняем


<a href="'.rtrim($url,'/').'/'.$category_structure['catalog'][$parent_category_id]['url'].'/'.'">

и 3 последняя замена для одноязычных сайтов (как я понял, можно прописать еще и в мультиязычность )

Находим


<a href="'.rtrim($url,'/').'/'.$category_structure['catalog'][$parent_category_id]['url'].'">

Меняем


<a href="'.rtrim($url,'/').'/'.$category_structure['catalog'][$parent_category_id]['url'].'/'.'">

 

Скорее всего выполнил все правильно. Если что разработчики и люди поправят. 

Если не хотите потерять изменения, скопируйте файл со всем путем в свой шаблон.

а где и что в итоге поменялось ? что то не заметили существенных изменений у вас на сайте. если можно выложите скрин до и после.
И еще вопрос у вас после "Возможно, Вас заинтересуют..." и перед картой идет блок рекламы от гугл -подскажите что за формат вы выбрали, так как искали такой формат но так и не нашли в гугл кабинете

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, doma сказал:

а где и что в итоге поменялось ?

Иногда некоторые изменения носят скрытых характер, но не отнюдь бессмысленны.

Что изменилось, надеюсь убрал возможные дубли.

2018-01-14_183630.thumb.jpg.d6caf1b5735bbd04e3a8104266cce907.jpg

 

Что касаемо гугл рекламы, называется она  "объявления в фиде"

Там очень много рекламы для запутывания пользователя

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Только что, mykvartira сказал:

Иногда некоторые изменения носят скрытых характер, но не отнюдь бессмысленны.

Что изменилось, надеюсь убрал возможные дубли.

2018-01-14_183630.thumb.jpg.d6caf1b5735bbd04e3a8104266cce907.jpg

 

Что касаемо гугл рекламы, называется она  "объявления в фиде"

Там очень много рекламы для запутывания пользователя

странно -мы что то видимо не понимаем о чем речь :) можно поподробнее ?
у нас в объявлении в самом верху хлебные крошки такие
главна / продажа квартир / 2 комнатная квартира

а ссылка такого рода

sssait.ru/prodam/2-komnatnuyu-kvartiru/realty5122735

что у нас не правильно?

Поделиться сообщением


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

Предже чем помочь, нужно вам просмотреть код страницы вашего объявления.

Найти примерно такой код

<a href="/">Главная</a> / <a href="/doma-uchastki/">Дома-участки</a> / <a href="/doma-uchastki/doma-kottedji/">Дома, Коттеджи</a> / <a href="/doma-uchastki/doma-kottedji/prodaja/">Продажа</a>

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

Скорее всего у вас будет так 

<a href="/">Главная</a> / <a href="/doma-uchastki">Дома-участки</a> / <a href="/doma-uchastki/doma-kottedj">Дома, Коттеджи</a> / <a href="/doma-uchastki/doma-kottedji/prodaja">Продажа</a>

Сложно объяснять с конца. Вы сперва подумайте как у вас страницы будут идти с / или без /

вашсайт.рф/продам      или продам/

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Только что, mykvartira сказал:

Предже чем помочь, нужно вам просмотреть код страницы вашего объявления.

Найти примерно такой код


<a href="/">Главная</a> / <a href="/doma-uchastki/">Дома-участки</a> / <a href="/doma-uchastki/doma-kottedji/">Дома, Коттеджи</a> / <a href="/doma-uchastki/doma-kottedji/prodaja/">Продажа</a>

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

Скорее всего у вас будет так 


<a href="/">Главная</a> / <a href="/doma-uchastki">Дома-участки</a> / <a href="/doma-uchastki/doma-kottedj">Дома, Коттеджи</a> / <a href="/doma-uchastki/doma-kottedji/prodaja">Продажа</a>

Сложно объяснять с конца. Вы сперва подумайте как у вас страницы будут идти с / или без /

вашсайт.рф/продам      или продам/

если брать категорию "продажа однокомнатных квартир" то у нас вот так ссылка идет
ssssaiiiit.ru/prodam/1-komnatnuyu-kvartiru

без слеша на конце

а вот если перейти в само объявление в этой категории то вот так строка в браузере отображается
ssssssssaiiiit.ru/prodam/1-komnatnuyu-kvartiru/realty9343/

в конце слеш уже есть

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, doma сказал:

если брать категорию "продажа однокомнатных квартир" то у нас вот так ссылка идет
ssssaiiiit.ru/prodam/1-komnatnuyu-kvartiru

без слеша на конце
 

Если выполните мои рекомендации и не только мои, то будет с /

А как у вас ссылка на категории из меню. Меню на главной которое ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Только что, mykvartira сказал:

Если выполните мои рекомендации и не только мои, то будет с /

А как у вас ссылка на категории из меню. Меню на главной которое ?

да -на главной вот такая-ssssaiiiit.ru/prodam/1-komnatnuyu-kvartiru

так с / или без / формировать вроде нужно не в хлебных крошках :)))

вроде кбыла тема про какую то настройку в редирект 301 вроде это где то в коде сайтбилла правится поскольку даже бывает такое что после обхода роботом робот видит 2 объявления и говорит что мол обнаружен дубль страницы? поскольку видит
1) страница  ssssssssaiiiit.ru/prodam/1-komnatnuyu-kvartiru/realty9343/  - слеш в конце есть
2) и 2-ю страницу такую же с таким же содержанием  ssssssssaiiiit.ru/prodam/1-komnatnuyu-kvartiru/realty9343 - но без слеша в конце

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, doma сказал:

да -на главной вот такая-ssssaiiiit.ru/prodam/1-komnatnuyu-kvartiru

так с / или без / формировать вроде нужно не в хлебных крошках :)))

вроде кбыла тема про какую то настройку в редирект 301 вроде это где то в коде сайтбилла правится поскольку даже бывает такое что после обхода роботом робот видит 2 объявления и говорит что мол обнаружен дубль страницы? поскольку видит
1) страница  ssssssssaiiiit.ru/prodam/1-komnatnuyu-kvartiru/realty9343/  - слеш в конце есть
2) и 2-ю страницу такую же с таким же содержанием  ssssssssaiiiit.ru/prodam/1-komnatnuyu-kvartiru/realty9343 - но без слеша в конце

Да все правильно, сео уровень повышен, редирект настроен. 

У меня все страницы идут с /, через редирект.

А сейчас нас троил чтобы хлебные крошки имели ссылки с /

 

А вот на счет что там формировать смотрите сами, но как вы думаете это нормально?!?!?

С главной показывает ссылки на категории с /, а с объявлений ссылки на те же категории без /. Мне кажется это неправильно! Одна страница должна иметь один адрес

А вы смотрите сами.

Поделиться сообщением


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

Дмитрий и Костя подскажите что правильно а что нет?

мы так и не совсем поняли пользователя :)
вот смотрите 
если смотреть с главной страницы то ссылка на меню идет без /
сайт.ru/ofisnoe-pomeshchenie

если перейти в само объявление то в строке браузера у нее адрес со / на конце
сайт.ru/ofisnoe-pomeshchenie/realty13455/
при этом в меню категории так же без / и имеют вид
сайт.ru/ofisnoe-pomeshchenie
и там же в самом объявлении хлебные крошки имеют вид
сайт.ru/ofisnoe-pomeshchenie

Поделиться сообщением


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

мдддда ))))

2 варианта правильных с / и без, только нужно весь сайт к одному из вариантов. 

Но думаю вам лучше подождать ответа ребят. Удачной индексации 

Поделиться сообщением


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

Не имеет значения как показаны ссылки на сайте. Имеет значение на какой вариант из них отзывается сервер. Если вы получаете одну и ту же страницу на один и тот же урл, который отличается только наличием слеша в конце - то для робота это две страницы. Одинаковые.

Даже если у вас все ссылки будут на сайте со слешем, но сервер будет отвечать на такую же ссылку, пусть даже введенную вручную, без слеша, то это опять будет две страницы одинаковых.

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

В Настройки - СЕО есть пункт "Не использовать концевые слеши". Т.е. дефолтным вариантом для сайтбилля есть вариант доштуковывания в конец ссылок слеша. Но это может не срабатывать на кусках кода прописанных в шаблонах (в отличии от того же сайтмапа, который генерируется системой из приложения), которые были выпущены до введения этой опции или не были еще подправлены под нее. так же эта опция говрит нужно ли клеить слеш в конец ссылок или нет, но не влияет на отработку сервера - т.е. он и дальше будет обрабатывать оба варианта написания. И тут опять нужно прописывать редирект в htacess.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Только что, abushyk сказал:

Не имеет значения как показаны ссылки на сайте. Имеет значение на какой вариант из них отзывается сервер. Если вы получаете одну и ту же страницу на один и тот же урл, который отличается только наличием слеша в конце - то для робота это две страницы. Одинаковые.

Даже если у вас все ссылки будут на сайте со слешем, но сервер будет отвечать на такую же ссылку, пусть даже введенную вручную, без слеша, то это опять будет две страницы одинаковых.

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

В Настройки - СЕО есть пункт "Не использовать концевые слеши". Т.е. дефолтным вариантом для сайтбилля есть вариант доштуковывания в конец ссылок слеша. Но это может не срабатывать на кусках кода прописанных в шаблонах (в отличии от того же сайтмапа, который генерируется системой из приложения), которые были выпущены до введения этой опции или не были еще подправлены под нее. так же эта опция говрит нужно ли клеить слеш в конец ссылок или нет, но не влияет на отработку сервера - т.е. он и дальше будет обрабатывать оба варианта написания. И тут опять нужно прописывать редирект в htacess.

если не сложно напишите что именно там написать :) 
чтобы пользователь мог скопировать и вставить и не задавать лишние вопросы на форумах :) не отвлекать от главного и не постить лишние вопросы
если сайт на аренде получается нам ничего прописать не получится?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
16 минут назад, doma сказал:

если сайт на аренде получается нам ничего прописать не получится?

Да, если на аренде, то не нужно...)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 23.01.2018 в 21:08, abushyk сказал:

Не имеет значения как показаны ссылки на сайте. Имеет значение на какой вариант из них отзывается сервер. Если вы получаете одну и ту же страницу на один и тот же урл, который отличается только наличием слеша в конце - то для робота это две страницы. Одинаковые.

Даже если у вас все ссылки будут на сайте со слешем, но сервер будет отвечать на такую же ссылку, пусть даже введенную вручную, без слеша, то это опять будет две страницы одинаковых.

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

В Настройки - СЕО есть пункт "Не использовать концевые слеши". Т.е. дефолтным вариантом для сайтбилля есть вариант доштуковывания в конец ссылок слеша. Но это может не срабатывать на кусках кода прописанных в шаблонах (в отличии от того же сайтмапа, который генерируется системой из приложения), которые были выпущены до введения этой опции или не были еще подправлены под нее. так же эта опция говрит нужно ли клеить слеш в конец ссылок или нет, но не влияет на отработку сервера - т.е. он и дальше будет обрабатывать оба варианта написания. И тут опять нужно прописывать редирект в htacess.

И как тогда лучше делать? использовать слеш в настройках или нет ?
И когда редирект включен а когда нет
И что нужно сделать чтобы включить редирект на сайте в аренде ?

Поделиться сообщением


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

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас