• Изменено

на сколько я знаю...большая вложенность это плохо для seo
я бы оставил /:category и /:category/:article
а если в идеале то для seo нужно /:category и /:article

  • Koresh ответили на это сообщение.
    • Изменено

    lutchin на сколько я знаю...большая вложенность это плохо для seo

    С чего это вдруг?
    Правильно организованная структура контента на сайте превыше вложенности. В гугле ж это понимают, и на вложенность им вообще насрать. Поэтому всё наоборот - 4-ая вложенность лучше чем 2 и 3 для поисковой выдачи.
    Я на личном примере в этом убедился.
    А все прочие сказки, то для бирж ссылок (если они ещё работают) и ушей с толстыми кошельками. Пусть платят.

    Вообще то я сео не признаю. Есть с десяток правил которые нужно выполнять. А сеошники со своей наукой - это только для составления симантического ядра.

    Логично же:
    музыка/автор/песня
    каталог/категория/компания
    животные/обезьяны/барак_обамкин

    • lutchin ответили на это сообщение.

      lutchin я бы оставил /:category и /:category/:article

      Спасибо за совет. Попробую так сделать, посмотрим что October на мою структуру с подкатегориями скажет.

      • reazzon ответили на это сообщение.

        Koresh в соседней дискуссии уже ведь сделали логику разных фрагментов. Конечно оставляй /:category* /:category*/:article

        • Koresh ответили на это сообщение.
          • Изменено

          Koresh Логично...но также логично и то, что поисковикам проще добраться и соотв. проиндексировать стр. с первым уровнем вложенности, чем с /../../../../../article

          • Koresh ответили на это сообщение.

            lutchin Но у меня 4-ая вложенность, а не 20-ая. Полюбому у гуглойдов есть какая то цифра с ограничением на вложенность. Разумности есть же какой то предел.
            Вот если такой урл разбирать:
            Континент/Страна/Область/Город/Адрес
            то уже 6-ая вложенность - всё логично и можно даже продолжать цепочку.

            Гуглу всё равно на вложенность, а времена альтависты давно прошли.
            И есть sitemap, что делает 100-процентную индексацию страниц.

            Вот честно говорю, когда гугл начал быструю индексацию/переиндексацию (по моему 14 год или 16), я у себя на сайте забил на вложенность и опустил большую часть страниц на 1-2 вложенности вниз с 301-ым редиректом.
            У меня мгновенно траф из выдачи гугла выровнялся с яндексом (примерно в три раза гугл отставал от яндекса). Это было заметно - прям крутой взлёт на графике статистики. Потом яшка начал расчихляться с переиндексацией - ещё взлёт.

            На данный момент у меня по месячной статистике трафика с Гугла 57,1%, Яндекс - 40%, МайлРу - 1,69%, Rambler - 0.21%, Остальные - 0,23%.
            Наверное майлру и прочие как раз работают с приоритетом на вложенность ))

            • reazzon ответили на это сообщение.

              Koresh насчёт структуры ссылок ты делаешь всё правильно, можешь не парится)

              • Изменено

              reazzon оставляй /:category* и /:category*/:article

              Катастрофа...
              Оставил 2 страницы и поставил им урлы /:category* и /:category*/:article
              В registerComponents() убрал третий компонент.

              Теперь у меня выводит только категории с урлами 2 вложенности сайт/urlCategory. Макет для категории у которой есть подкатегории выводится правильный, для тех категорий у которых нет подкатегорий - тоже правильно..

              Если урл 3 вложенности: сайт/urlCategory/urlSubCategory, то ошибка:

              Сайт пока не может обработать этот запрос.
              HTTP ERROR 500

              Статьи вообще не выводит, ни при 3-вложенности, ни при 4-ой. Та же ошибка 500.

              Категории которые должны выводится сайт/urlCategory/urlSubCategory (у которых есть родительская категория) выводит только во второй вложенности вот так: сайт/urlSubCategory

              • reazzon ответили на это сообщение.
                • Изменено

                Koresh мы с тобой в недавней дискуссии уже обсуждали обработку WildCard ссылок. Я пояснил тебе, что выходов в данном случае не много. То что сейчас делает OctoberCMS - он делает ПРАВИЛЬНО.

                У тебя две точки входа:

                • /:category*
                • /:category*/:article

                Ссылка /category/subcategory/article, попадает как и в первую точку входа, так и во вторую. Потому-что символ * обозначает содержимое любой длины.

                Чтобы исправить эту ситуацию, у тебя есть несколько вариантов:

                • Одна точка входа: /:articles*, которая будет разбивать ссылки и делать поиск по базе, после, исходя из результата отображать категорию или запись.

                • Одна точка входа: /:articles*. В базе категорий и статьей в столбце slug хранится ВЕСЬ путь до данной записи, то-есть у категории с parent категорией в столбце slug установлено - kategoriya/pod-kategoriya, у статьи - kategoriya/pod-kategoriya/statya, таким образом в компоненте ты сначала делаешь поиск записи по урлу в базе категорий, если не найдено делаешь поиск в базе статьей. (Таким образом работают кстати многие CMS, только у них есть одна база со всеми ссылками, и они тупо делают поиск по ней, и вытаскивают уже контент по связи), В default.htmделаешь уже подгрузку фрагмента в зависимости типа записи (категория или запись).

                • Две точки входа, /:category* и /:category*/:article*, только в точке входа для записей, нам нужно сделать так, чтобы в URL на конце был специальный ключ, из-за которого OctoberCMS бросит обработку ссылки на страницу для записи а не для категории, то-есть надо делать фильтр по регулярному выражению
                  (немного вниз промотай, будет инструкция как применять regex выражение в ссылке https://octobercms.com/docs/cms/pages#url-syntax).
                  Например:
                  /kategoriya/podkategoriya - не имеет ключа, кидаем на обработку категории.
                  /kategoriya/podkategoriya/12-statya - имеем ключ (id статьи перед slug), кидаем на обработку статьи.


                  Каких либо других решений я пока не знаю, возможно тебе поможет Google с запросом Laravel Wildcard URL Matching.


                • Koresh ответили на это сообщение.
                  • Изменено

                  reazzon Чтобы исправить эту ситуацию, у тебя есть несколько вариантов:

                  Варианты 2 и 3 (полный урл в статье и айдишник в урле) для меня категорически не подходят.
                  Поэтому методом исключения остался 1 вариант.
                  Я несколько раз перечитал пост и уже начал подумывать что мне не подходит October CMS, но...

                  Погрустив с часик, закомментировал код файла внутри класса class Category extends ComponentBase и начал писать.
                  У меня получилось!!! Все страницы плагина выводятся.

                  Весь код всего php-файла компонента = 150 строк, с пробелами строк и комментариями.
                  Выкладываю свою логику:

                  public function defineProperties()
                  {
                      return [
                          'slug' => [
                              'title'       => 'Ссылка',
                              'default'     => '{{ :articles }}'
                          ]
                      ];
                  }
                  
                  public function onRun()
                  {
                      $urls = explode('/', $this->property('slug'));
                      
                      if (count($urls) == 1) {
                          // Это категория
                          $category = \OctoClub\Articles\Models\Category::where('slug', $this->property('slug'))->first();
                            
                          if (empty($category)) {
                              return $this->controller->run('404');
                          }
                      }
                      elseif (count($urls) == 3) {
                          // Это статья 3 вложенности
                      }
                      elseif (count($urls) == 2) {
                          // или статья или подкатегория
                          $article = \OctoClub\Articles\Models\Article::where('slug', $urls[1])->first();
                  
                          if (empty($article)) {
                               // Это подкатегория
                           }
                           else {
                               // Это статья
                           }
                      }
                      else {
                              // это вообще непонятно что
                              return $this->controller->run('404');
                      }
                  }           

                  Внутри логики почти старый код, который пришлось малость исправить.
                  Так же добавил проверку на статью в default.htm и создал файл article.htm

                  Осталось после изменений урлы в хлебных крошках, в названиях статей и категорий поправить в вёрстке, но то уже легко решаемо.
                  И ещё у меня вёрстка родительской категории не сделана, есть вопрос по запросам к БД, но то уже в новой теме буду задавать вопрос.

                  Ну а потом уже причесать сам код.

                  Спасибо что на пальцах разъяснили как урлы обрабатываются. Сегодня я совсем немножечко понял как работает October CMS.

                  • reazzon ответили на это сообщение.

                    Koresh Спасибо что на пальцах разъяснили как урлы обрабатываются. Сегодня я совсем немножечко понял как работает October CMS.

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

                    Да, с url-ами в октябре капец как сложно разобраться после wp, joomla, Modx и т.п.