Ошибка в DJ Classifieds

Тема в разделе "Неразобранное", создана пользователем immortal727, 13.08.2018.

  1. immortal727
    Offline

    immortal727 Пользователь

    Регистрация:
    08.10.2017
    Сообщения:
    83
    Симпатии:
    0
    Пол:
    Мужской
    Пытаюсь разобраться в компоненте объявлений.
    Создал пользователя, создал объявление. Но после сохранения ошибка
    Deprecated: Non-static method DJClassifiedsSEO::getArticleLink() should not be called statically in /components/com_djclassifieds/views/item/view.html.php on line 287

     
  2.  
  3. Лучший ответ:
    Сообщение #6 от 14.08.2018, автор Septdir
  4. OlegK
    Offline

    OlegK Russian Joomla! Team Команда форума ⇒ Профи ⇐

    Регистрация:
    17.01.2011
    Сообщения:
    7 813
    Симпатии:
    771
    Пол:
    Мужской
    Попробуй объяви getArticleLink() статистической или создавай объект через new
     
  5. immortal727
    Offline

    immortal727 Пользователь

    Регистрация:
    08.10.2017
    Сообщения:
    83
    Симпатии:
    0
    Пол:
    Мужской
    Если открыть файл, то где ошибка следующее:
    Код (CODE):
    1. $terms_link='';
    2.        if($par->get('terms',1)>0 && $par->get('terms_article_id',0)>0){
    3.          if($par->get('terms',1)==2){
    4.            $terms_link =DJClassifiedsSEO::getArticleLink($par->get('terms_article_id',0),1);
    5.          }else{
    6.            $terms_link = DJClassifiedsSEO::getArticleLink($par->get('terms_article_id',0));
    7.          }                
    8.        }
     
  6. OlegK
    Offline

    OlegK Russian Joomla! Team Команда форума ⇒ Профи ⇐

    Регистрация:
    17.01.2011
    Сообщения:
    7 813
    Симпатии:
    771
    Пол:
    Мужской
    В этом коде вызов метода getArticleLink уже. А метод определяется в классе DJClassifiedsSEO
    --- добавлено: 13.08.2018, первое сообщение размещено: 13.08.2018 ---
    Ты видишь как код подсвечивает редактор форума? Пробуй
    Код (PHP):
    1. $testin = new DJClassifiedsSEO();
    2. $terms_link='';
    3.        if($par->get('terms',1)>0 && $par->get('terms_article_id',0)>0){
    4.          if($par->get('terms',1)==2){
    5.            $terms_link = $testin->getArticleLink($par->get('terms_article_id',0),1);
    6.          }else{
    7.            $terms_link = $testin->getArticleLink($par->get('terms_article_id',0));
    8.          }                
    9.        }
     
  7. immortal727
    Offline

    immortal727 Пользователь

    Регистрация:
    08.10.2017
    Сообщения:
    83
    Симпатии:
    0
    Пол:
    Мужской
    Понял как нужно указывать объект класса и использовать его. Ошибка ушла
    Но на этой же странице есть еще одна
    Notice: Undefined index: cid in /components/com_djclassifieds/views/item/view.html.php on line 89
    Код (CODE):
    1. $menus   = $app->getMenu('site');  
    2.        $m_active = $menus->getActive();
    3.        $cat_menu_path= array();
    4.        $cid_menu=0;
    5.        if($m_active){
    6.          if(strstr($m_active->link,'com_djclassifieds') && strstr($m_active->link,'items')){
    7.              $cid_menu = $m_active->query['cid'];
    8.            if($cid_menu>0){
    9.              $cat_menu_path= DJClassifiedsCategory::getParentPath(1,$cid_menu);  
    10.            }            
    11.          }
    12.        }

    Как быть с неопределенным индексом?
     
  8. Septdir
    Offline

    Septdir Пользователь => Cпециалист <=

    Регистрация:
    27.11.2017
    Сообщения:
    172
    Симпатии:
    16
    Пол:
    Мужской
    Лучший ответ
    Выведи до проверки
    $m_active->query

    Код (PHP):
    1. <?php
    2.  
    3. $menus         = $app->getMenu('site');
    4. $m_active      = $menus->getActive();
    5. $cat_menu_path = array();
    6. $cid_menu      = 0;
    7. if ($m_active)
    8. {
    9.    if (strstr($m_active->link, 'com_djclassifieds') && strstr($m_active->link, 'items'))
    10.    {
    11.       // Посмотрим что тут а потом удалить
    12.       echo '<pre>', print_r($m_active->query, true), '</pre>';
    13.  
    14.       exit();
    15.  
    16.       $cid_menu = (isset($m_active->query['cid'])) ? (int) $m_active->query['cid'] : 0; // Заменить индекс если нужно
    17.       if ($cid_menu > 0)
    18.       {
    19.          $cat_menu_path = DJClassifiedsCategory::getParentPath(1, $cid_menu);
    20.       }
    21.    }
    22. }


    Скорее всего там не cid а просто id
     
    immortal727 нравится это.
  9. immortal727
    Offline

    immortal727 Пользователь

    Регистрация:
    08.10.2017
    Сообщения:
    83
    Симпатии:
    0
    Пол:
    Мужской
    Отлично. Огромное спасибо, Вам. Именно с заменой кода получилось вывести без ошибок. Менять cid не пришлось.
    Посмотрел в браузерной строке /ads/ad?id=1:vv&cid=2:nogtevoj-servis
    Т.е. параметр верно - cid
     
  10. Septdir
    Offline

    Septdir Пользователь => Cпециалист <=

    Регистрация:
    27.11.2017
    Сообщения:
    172
    Симпатии:
    16
    Пол:
    Мужской
    Ошибки и не будет потому что я добавил проверку. Однако. Надо именно посмотреть какой там индекс у id пункта меню что оно работало как надо.

    Но на самом деле такое формирование путей (подозреваю что это кусок хлебных крошек) морально устарело. По хорошему все это должен делать RouteHelper + Jroute
     

Поделиться этой страницей

Загрузка...