We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 8525
    • 11 Posts
    На днях установил себе на Рево плагин breadcrumbs. Возник такой вопрос: как настроить этот плагин так, чтобы он брал текст для Заголовка Главной Страницы не из параметра homeCrumbTitle, а считывал его непосредственно из самой главной страницы. Параметр homeCrumbTitle сохраняет статичный текст, и если в системе меняется ссылка на главную страницу, то необходимо всегда в ручную переписывать этот параметр. Более того, для сайта с несколькими языками, вопрос становится еще более острым. Может я где-то что-то упустил в настройках сниппета? shocked
      Тысячу умных найдешь, пока на одного мудреца набредешь.
      • 9085
      • 630 Posts
      Quote from: efanchik at Dec 15, 2010, 03:07 PM

      На днях установил себе на Рево плагин breadcrumbs. Возник такой вопрос: как настроить этот плагин так, чтобы он брал текст для Заголовка Главной Страницы не из параметра homeCrumbTitle, а считывал его непосредственно из самой главной страницы.
      Не уверен, что предложенный мой вариант является наилучшим, однако почему бы не передать сниппету в параметр homeCrumbTitle... заголовок главной страницы?
        Правильно заданный вопрос повышает вероятность получения нужного ответа.
        Что-то не работает? Загляните в лог ошибок!
        Есть проблема? "Локализуйте" её!
        Ответы на большинство вопросов по MODx | MODx RTFM | API Evo Revo | галопом по Европам Азиям smiley wikibooks(ru) Ditto(en) | Wayfinder e-book | Заметки и о MODx
        • 8525
        • 11 Posts
        Quote from: esche at Dec 16, 2010, 12:13 AM

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

        Как получить заголовок Главной Страницы без написания вспомогательного сниппета?
        Есть ли прямой доступ к параметрам главной страницы из других страниц, ну наподобие
        [[++site_start:name=`pagetitle`]]?
          Тысячу умных найдешь, пока на одного мудреца набредешь.
          • 8643
          • 271 Posts
          Есть сниппет getResourceField:
          [[getResourceField? &id=`[[++site_start]]` &field=`pagetitle`]]


            • 8525
            • 11 Posts
            Quote from: elastic at Dec 16, 2010, 05:13 AM

            Есть сниппет getResourceField
            Спасибо! А средствами самого сниппета Breadcrumbs, что никак не решить проблему?
              Тысячу умных найдешь, пока на одного мудреца набредешь.
              • 8525
              • 11 Posts
              Короче, я схватил "быка за рога" (или "корову за вымя", как кому нравится) и решил все это дело жестким образом. Кому интересно описываю:
              Нашел файл bradcrumbs.class.php, а внем нашел метод класса public function run(), а в самом методе следующие строчки - у меня они начинаются со строки 256:

               /* add home link if desired */
                      if ($this->config['showHomeCrumb'] && ($resource->get('id') != $this->modx->config['site_start'])) {
                          $this->_crumbs[] = $this->getChunk('bcTplCrumbHome',array(
                              'description' => $this->config['homeCrumbDescription'],
                              'text' => $this->config['homeCrumbTitle'],
                          ));
                      }
              

              и заменил их на следующие:
               /* если текущий документ не главная страница сайта */
                      if ($this->config['showHomeCrumb'] && ($resource->get('id') != $this->modx->config['site_start'])) {
                          //если в конфиг. массиве класса не прописан текст заголовка для главной страницы
                          if(empty($this->config['homeCrumbTitle'])){
                          //тогда извлекаем данные объекта документ по ID главной страницы
                          $obj = $this->modx->getObject('modResource', 'site_start');
                          //одним движением руки превращаем объект в асс. массив
                          $res = $obj->toArray();
                          //тут все вроде ясно
                          $mainPageTitle = $res['pagetitle'];
                          $mainPageLongTitle = $res['longtitle'];
                        }else{
                          $mainPageTitle = $this->config['homeCrumbTitle'];
                          $mainPageLongTitle = $this->config['homeCrumbDescription'];
                        }
                //тут устанавливаем в параметры чанка по умолчанию наши данные
                $this->_crumbs[] = $this->getChunk('bcTplCrumbHome',array(
                              'description' => $mainPageLongTitle, 
                              'text' => $mainPageTitle,
                          ));
                      }
              

              Вот и усе. Работает как миленький, даже не узнать! grin
              Положа руку на сердце признаюсь: у мненя создалось впечатление, что некоторые плагины написаны пъяными програмерами.
              А может извратами? Пес их знает, но однозначно кривовато. grin
                Тысячу умных найдешь, пока на одного мудреца набредешь.
                • 8643
                • 271 Posts
                А я просто Wayfinder для крошек использую, мне этого хватает tongue
                [[Wayfinder? &startId=`0` &config=`breadcrumb`]]


                p.s. Кстати ещё есть сниппет QuickCrumbs.
                  • 8525
                  • 11 Posts
                  Спсб за подсказку. Ща буду испытывать и эти плагины.
                    Тысячу умных найдешь, пока на одного мудреца набредешь.