dmpress

Участники
  • Публикации

    85
  • Зарегистрирован

  • Посещение

  • Days Won

    6

Сообщения, опубликованные пользователем dmpress


  1. 14 минуты назад, Дмитрий Кондин сказал:

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

    ничего не изменилось

    если подстановочный алиас realty - в письме ссылка с адресом /realty123 - при переходе по ней открывается страница с адресом /realty123

    если ставлю свой подстановочный алиас rest - в письме ссылка с адресом /realty123 при переходе - открывается страница ошибки 404

    еще изменил в этой функции везде realty на rest - тоже не заработало))


  2.  

    В 25.02.2020 в 11:51, Дмитрий Кондин сказал:

    В коде баг, нет учета нестандарного алиаса.

    Верните realty и будет работать.

    У вас если он все-равно нигде не используется, то вам какая разница?

    С адресов /realty123 - идет редирект на нужный адрес со статусом 301 поэтому поисковик не будет видеть эти дубли.

    я вот про это - редирект не идет

     

     

    23 минуты назад, Дмитрий Кондин сказал:

    Вот я вам и предлагаю замените у себя функцию на ту что я скинул вам выше.

    Вы про это?

    21 час назад, Дмитрий Кондин сказал:

    Видите этот код

    
    preg_match('/realty/', $requesturi)

    Поменяйте там realty на свой алиас, и попробуйте.

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


  3. 6 часов назад, Дмитрий Кондин сказал:

    У вас в вашем файле везде realty алиас стандартный.

    Дмитрий, я же об этом и пишу.

    Я изменил свой подстановочный алиас на стандартный. Но всё работает не совсем корректно - письмо приходит как и раньше со ссылкой вида /realty123, ссылка нормально открывается (если подстановочный алиас нестандартный - то ссылка не открывается), но она открывается по адресу /realty123 вместо адреса, который формируется на сайте в соответствии с заданными условиями расширенных алиасов,

    т.е. переадресация с адреса /realty123 на правильный адрес не происходит - а значит это дубль нормальной страницы и он будет проиндексирован при включенном обходе по метрике.

    Мы как будто говорим на разных языках))

    Давайте ещё раз. Я установил следующие правила в настройках, чтобы было понятно заскринил всю страницу.

    При этих правилах по ссылке из письма "Заявка на объект" переход происходит на дубль объекта с адресом /realty123

    Как сделать так, чтобы переход происходил на нормальную страницу объекта?

    Попробуйте на демо - там тоже самое.

     

    2020-02-26_11-36-22.png


  4. 30 минут назад, Дмитрий Кондин сказал:

    Поменяйте там realty на свой алиас, и попробуйте.

    попробовал и так и там ещё есть чуть ниже

    if (1 == $this->getConfigValue('apps.seo.level_enable') && preg_match('/^realty/', $requesturi))

    тоже поставил свой алиас, но не сработало - и так и так подставляется realty и страница открывается с ошибкой

     

    но я не понимаю почему мы меняем realty на мой алиас?

    ведь когда прописываю realty - письмо корректно открывается по адресу site.ru/realty-77 (для примера), меня не устраивает что это дубль существующей страницы и редирект на существующую не происходит, как написано выше здесь

     

    вот мой полный исходный файл main

    main.php


  5. 54 минуты назад, Дмитрий Кондин сказал:

    у вас есть такая функция?

    у меня вот так, шаблон Новосёл

    function isRealtyDetected($requesturi) {
            $result = false;
            $unknown_address = false;
            $realty_id = false;
    
            if (!$result && 1 == $this->getConfigValue('apps.seo.data_alias_enable')) {
                $url_string_parts = explode('/', $requesturi);
                if (count($url_string_parts) > 0) {
                    $possible_alias = $url_string_parts[count($url_string_parts) - 1];
    
                    $possible_alias = preg_replace('/[^A-Za-z0-9_-]/', '', urldecode($possible_alias));
                    if ($possible_alias != '') {
                        $DBC = DBC::getInstance();
                        $query = "SELECT id FROM " . DB_PREFIX . "_data WHERE translit_alias=? LIMIT 1";
                        $stmt = $DBC->query($query, array($possible_alias));
                        if ($stmt) {
                            $ar = $DBC->fetch($stmt);
                            if ((int) $ar['id'] > 0) {
                                $realty_id = (int) $ar['id'];
                                $this->growCounter('data', 'id', $realty_id, $this->getSessionUserId());
                                require_once(SITEBILL_DOCUMENT_ROOT . '/apps/system/lib/frontend/view/kvartira_view.php');
                                $kvartira_view = new Kvartira_View();
                                if ($html = $kvartira_view->main($realty_id)) {
                                    $this->template->assert('main', $html);
                                    $result = true;
                                }
                            }
                        }
                    }
                }
            }
    
    
    
            if (!$result && preg_match('/realty/', $requesturi)) {
    
                if (1 == $this->getConfigValue('apps.seo.level_enable') && preg_match('/^realty/', $requesturi)) {
    
                    $realty_id = $this->getIDfromURI($requesturi);
                    if ($realty_id) {
                        $query = 'SELECT topic_id FROM ' . DB_PREFIX . '_data WHERE id=?';
                        $DBC = DBC::getInstance();
                        $stmt = $DBC->query($query, array($realty_id));
                        if ($stmt) {
                            $ar = $DBC->fetch($stmt);
                            $topic_id = $ar['topic_id'];
                        }
                        require_once(SITEBILL_DOCUMENT_ROOT . '/apps/system/lib/admin/structure/structure_manager.php');
                        $Structure_Manager = new Structure_Manager();
                        $category_structure = $Structure_Manager->loadCategoryStructure();
    
                        if ($category_structure['catalog'][$topic_id]['url'] != '') {
                            $parent_category_url = $category_structure['catalog'][$topic_id]['url'] . '/';
                        } else {
                            $parent_category_url = '';
                        }
    
                        if (1 == $this->getConfigValue('apps.seo.html_prefix_enable')) {
                            $new_location = SITEBILL_MAIN_URL . '/' . $parent_category_url . 'realty' . $realty_id . '.html';
                        } else {
                            $new_location = SITEBILL_MAIN_URL . '/' . $parent_category_url . 'realty' . $realty_id;
                        }
                        header('HTTP/1.1 301 Moved Permanently');
                        header('Location: ' . $new_location);
                        exit();
                    }
                } elseif (1 == $this->getConfigValue('apps.seo.level_enable') && !preg_match('/^realty/', $requesturi)) {
    
                    $realty_id = $this->getIDfromURI($requesturi);
    
                    require_once(SITEBILL_DOCUMENT_ROOT . '/apps/system/lib/frontend/view/kvartira_view.php');
                    $kvartira_view = new Kvartira_View();
                    $html = $kvartira_view->main($realty_id);
                    if ($html) {
                        $this->growCounter('data', 'id', $realty_id, $this->getSessionUserId());
                        $this->template->assert('main', $html);
                        $result = true;
                    }
                } elseif (0 == $this->getConfigValue('apps.seo.level_enable') && preg_match('/^realty/', $requesturi)) {
                    $realty_id = $this->getIDfromURI($_SERVER['REQUEST_URI']);
    
    
                    require_once(SITEBILL_DOCUMENT_ROOT . '/apps/system/lib/frontend/view/kvartira_view.php');
                    $kvartira_view = new Kvartira_View();
                    $html = $kvartira_view->main($realty_id);
                    if ($html) {
                        $this->growCounter('data', 'id', $realty_id, $this->getSessionUserId());
                        $this->template->assert('main', $html);
                        $result = true;
                    }
                }
            }
    
    
            return $result;
        }

     


  6. 14 минуты назад, Дмитрий Кондин сказал:

    Верните realty и будет работать.

    вернул - заработало, но

    14 минуты назад, Дмитрий Кондин сказал:

    С адресов /realty123 - идет редирект на нужный адрес со статусом 301 поэтому поисковик не будет видеть эти дубли.

    редирект с этих адресов не идёт, открываются страницы с этими урл /realty123 что не есть хорошо, особенно с учетом того, что стоит обход по метрике... будут дубли...

    как сделать чтобы редирект работал?


  7. 1 час назад, Дмитрий Кондин сказал:

    Поэтому у вас у объявлений будут свои алиасы, и вам нужно просто вернуть опцию в исходное значение = realty

    Не совсем понял ответ

    У меня эта опция также изменена

    1 час назад, Дмитрий Кондин сказал:

    Подстановочная часть стандартного алиаса объявления (apps.seo.realty_alias)

    и не равна realty. Но причем здесь это? Это значение у меня всё равно нигде не подставляется. Везде формируются урл по заданному выше правилу.

    Для seo очень плохо если объявление будет доступно по разным url - это дубли страниц, зачем их плодить?

    Поэтому если есть возможность менять урл, должна быть возможность вставлять в письмо текущий url объявления. Как его можно подставлять из базы данных?

    1 час назад, Дмитрий Кондин сказал:

    Сохраняется нестандартный алиас в поле data.translit_alias в базе данных.

     

    Какой оператор использовать в шаблоне письма? Я так понимаю надо где-то сформировать новый realty_href_new и подставить его потом сюда

     

    В 20.02.2020 в 08:45, Дмитрий Кондин сказал:

    <a href="http://{$server_name}{$estate_folder}{$realty_href_new}">

     

    Как это реализовать?


  8. 1 час назад, Дмитрий Кондин сказал:

    Скажите какие у вас правила, я их поставлю и на них потестирую.

    И сделаем обновление в системе.

    скрин во вложении

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

    в системе уже столько изменений вручную, что обновлять уже невозможно

    2020-02-21_12-30-10.png


  9. 4 часа назад, Дмитрий Кондин сказал:

    $smarty->assign('realty_href', $this->getRealtyHref($realty_id));

    там есть такая строка

    а причем здесь правила? проблема в этом getRealtyHref($realty_id) он почему-то возвращает левый урл

    попробуйте у себя на демо версии - задайте правила и сделайте заявку на объект (доп. поля)

    сейчас еще проверил раздел Сообщения у аккаунта, который подал объявление - там ссылка на объявление в сообщениях тоже неправильная


  10. Напишите, пожалуйста, расшифровку кодов, которые можно вставлять в шаблоны писем. Или хотя бы ответ на следующий вопрос.

    Сейчас в шаблоне письма "Заявка на объект" для вывода адреса объявления используется следующий код <a href="http://{$server_name}{$estate_folder}{$realty_href}">

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

    Выводится url со словом realty (нигде не используется, было в шаблоне по умолчанию) вместо текущего сформированного url в соответствии с настройками.

    Как изменить строку кода в шаблоне чтобы выводился реальный адрес объявления?

     


  11. 25 минут назад, abushyk сказал:

    Находим две строки

    
    $REQUESTURIPATH = Sitebill::getClearRequestURI();
    $this->template->assert('REQUESTURIPATH', $REQUESTURIPATH);

    Второй строки нет в файле main.php в шаблоне Новосел...

    Прикрепляю исходный файл

    main.php


  12. даже вот такой код нашел на просторах интернет:

    ************************************

    Ниже приведён код, который следует вставить между <head></head> либо сделать через функцию. 

    <?

            if((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') || $_SERVER['SERVER_PORT'] == 443){

                   $protocol = 'https://';

            }else{

                   $protocol = 'http://';

            }

           

            $url = $protocol.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];

           

            $urlend = strrpos($url, '?', -1); // Находим и удаляем все параметры (номер страницы, параметры фильтра и тд.)

            $url = substr($url, 0, $urlend);

           

           

            if(mb_substr($url, -1) == '/'){ // Тут оставляем, если ссылки на сайте не заканчиваются на /, либо удаляем, если заканчиваются на /.

                   $url = substr($url, 0, -1);

            }

     

     

        echo '<link rel="canonical" href="'.$url.'"/>';

    ?>

    Немного подробнее про код. 
    Вначале определяем, открывается ли сайт по безопасному протоколу или нет.
    Потом собираем наш URL из протокола ($protocol), домена ($_SERVER['SERVER_NAME']) и ссылки ($_SERVER['REQUEST_URI']).
    Далее определяем, есть ли в URL параметры или нет ($_SERVER['QUERY_STRING']). Если есть, их удаляем, они не нужны для тега.

    И в конце (не обязательно) удаляем слеш, если ссылки формируются без него. Так-же это полезно, чтобы не использовать 301 редирект, который конфликтует с обработкой 404 страницы на разных CMS.
    ************************************

    Но непонятно куда его у нас вставлять... да и в целом правильный он или нет...


  13. 2 часа назад, abushyk сказал:

    4. Код для каноникал не добавляется в разметку пейджера. Он добавляется в мету сайта.

    Возможно не понял ваш вопрос. Естественно canonical добавляется в мета теги, конкретно в <head>,  тег <link>. Где я писал что в пейджер? Если для страниц пагинации - это не значит что в  пейджер, профдеформация))

    при этом немного углубился в тему - пишут что это просто прописывается с условиями:
    идет проверка - если просто страница - в каноникал идет её урл, если страница с параметрами "page=" и тп, то параметры удаляются из урл и в каноникал идет урл без этих параметров

    т.е. для вас это должно быть очень легко - вы знаете в каком месте формируются мета теги, добавьте туда код с условиями для формирования тега link и его аттрибута canonical с канонической ссылкой типа <link href="https://site.ru/obecty/" rel="canonical" />

    не забудьте про протокол (http/https) - это важно

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


  14. 1 час назад, abushyk сказал:

    1. Поисковый краулер с одинаковым успехом обходит страницы объявлений как по ссылкам сайта, так и по ссылкам из карты сайта. Так что если ссылка на карточки есть в карте сайта, то 2 и следующие страницы списков могут не индексироваться им напрямую.

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

    3. Высокие позиции достигаются высокочастотными запросами. Карточки товара - это генераторы низкочастотных запросов. С учетом этого и того, что карточки ротируются - старые уходят (продаются, сделки по ним закрываются), а новые приходят (появляются новые лоты) - добиться карточками захвата топ-запросов и соотв. топ-позиций маловероятно. Кроме случаев, когда эти карточки реально заточены под запросы (тексты, ключевые слова и фразы). Текст владельца, особенно если он уже засветился еще на каких-то площадках - этому точно не будет способствовать.

    4. Код для каноникал не добавляется в разметку пейджера. Он добавляется в мету сайта.

    5. Для заворота адресов со слеша на без слеша и наоборот, не нужно использовать каноникал. Нужно использовать 301 редирект. Этого будет выше крыши.

    1. Верно. Но частота обхода сайта выше, чем частота обхода sitemap - в яндекс вебмастере это видно. Т.е. при правильной настройке каноникал новые страницы быстрее попадают в индекс. Плюс смотрим ответ на вопрос 2.

    2. Не верно. Метрика связана с Вебмастером. Тут не совсем прозрачный момент - нет чёткой информации о том, что статистика ПФ закрытых от индексации страниц используется для ранжирования. Ведь это могут быть и страницы личных кабинетов и прочее. "Сайт должен быть полезным пользователям" - соответственно по логике поисковика по поведенческим оценивается польза индексируемого контента. Если страницы нет в индексе, то и нет смысла учитывать её ПФ. При этом по страницам пагинации есть исключение - они строго не в поиске, но их контент учитывается при определении полноты ответа и по "желанию" поисковика страницы пагинации могут выводиться на поиске, если это необходимо. Соответствующая информация есть в блоге Яндекс вебмастера: https://webmaster.yandex.ru/blog/nekanonicheskie-stranitsy-v-poiske

    Поэтому для Яндекса желательно страницы пагинации не закрывать от индексации, а указывать каноническую страницу. Поэтому и возник вопрос этого поста.

    3. Не верно. Высокие позиции достигаются полнотой ответа на семантическое ядро запросов в тематике. Под каждую группу желательно отдельную посадочную страницу. Учитывается не только текст объявления, но и весь контент страницы (это если объявы дают пользователи). Если сайт агентства - то понятно, что это желательно уникальные тексты по каждому объекту. И много чего ещё, у меня большой практический опыт в seo.

    Но этот момент к canonical не относится.

    4. Ребята, но если вы знаете как - почему не написать как добавить canonical?

    Вместо этого большого поста не по теме вопроса))) время потратили - а пользы нет(((

    5. Верно. Но вопрос не про это))

    Вопрос звучит так:

    В 02.08.2019 в 13:42, dmpress сказал:

    Как настроить генерацию атрибута rel="canonical" для станиц пагинации? Канонической для них должна быть первая страница раздела, без "page="

    Судя по изученной в интернете информации это решается несколькими строками кода. Также желательно чуть расширить вопрос - надо чтобы canonical выводился для всех страниц сайта.

    Вы специализируетесь на разработке - для вас это легко. Для меня и многих других пользователей сайтбилл сложно.

    Зачем вы объясняете про seo на котором не специализируетесь?

    Очень прошу дать решение по добавлению canonical - этим вы поможете всем пользователям sitebill. Спасибо!


  15. В 14.01.2020 в 11:53, mykvartira сказал:

    Всем добрый день.

    Сегодня обратил внимание в вебмастере на всех сайтах ошибку 

     
    
    На многих страницах сайта отсутствуют или некорректно заполнены метатеги Description. Это может негативно повлиять на представление сайта в результатах поиска.
    Ознакомьтесь с примерами и исправьте ошибки.

    Хотя все прописано.

    Почитав информацию решил разместить этот rel="canonical" в разметке open-graph, а также в "description" и "keywords". Не знаю насколько это правильно и даст ли результат. Сталкивались ли вы с этой проблемой и как решали?

    Подскажите, пожалуйста, как вы прописали canonical? Особенно для страниц пагинации?

    Пытался добавить в шаблон <link rel="canonical" href="http://site.ru{$smarty.server.REQUEST_URI}" />

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

    Буду признателен за помощь.


  16. 3 часа назад, dima сказал:

    Скорее всего это платная услуга.

    Мне в свое время убирали дубли. И это была доработка. 

    Я просил доработку и мне сделали.

    И дубли пропали.

    Без каноникал движок "полуфабрикат", а заявляется же как готовый к работе. Уже даже Яндекс Вебмастер помечает урлы без каноникал.

    Ну и написать тут могли бы - что это платно))

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


  17. 3 минуты назад, doma сказал:

    у нас через админку посмотрите пожалуйста :))   гугл говорит что у нас все плохо и требует оптимизации всего и всЯ... как бы только это все исправить ?

    вот и повод есть)) оптимизируете людям сайт, по ходу оптимизации сделаете скрины с комментариями и разместите здесь - польза всем!


  18. В 23.07.2019 в 10:49, rumantic сказал:

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

    Параметров очень много, где могут быть тормоза. Возможно, какая-то лишняя галочка решит 90% ваших головняков.

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

    А во-вторых - вы не знаете какие настройки мне нужны, а какие нет.

    Как разработчики вы должны дать хотя бы список того, где могут быть тормоза и мы, как пользователи, уже сами будем включать/выключать и тестировать. В чем сложность-то? Сделайте скрины админки и прямо на скринах напишите что можно потестировать. Админки у всех одинаковые, зачем вам для этого доступ к моей админке?

     

    Вон Chernetskiy выше описал как легко оптимизируется Вордпресс. Я так понял это намёк - зачем вам Сайтбилл, переходите на Вордпресс...


  19. Уважаемые разработчики!

    Прошу не игнорировать и ответить на вопрос - тема серьезная.

    Без нормальной настройки canonical высоких позиций и широкой видимости в поиске в данном случае не будет, а значит движок получается бесполезный с коммерческой точки зрения. Какой смысл в сайте, который не могут найти через поиск?

    Только большая просьба - прошу решение не через "дайте доступ в админку", а нормальное. Я так понимаю надо просто добавить код в файлы, которые выводят страницы пагинации. Теоретически для вас, как создателей cms, это не сложно, не понятно почему до сих пор не сделано))


  20. Здравствуйте!

    Как настроить генерацию атрибута rel="canonical" для станиц пагинации? Канонической для них должна быть первая страница раздела, без "page="

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

    Нашел несколько тем на форуме с этим вопросом и ни в одной нет ответа.