Форум русской поддержки Joomla!® CMS
08.12.2016, 02:07:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Оптимизация вложености в компоненте

 (Прочитано 1081 раз)
0 Пользователей и 1 Гость смотрят эту тему.
kaksdelat
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 8


« : 29.01.2013, 07:02:25 »

Здравствуйте каким образом можно убрать лишнию вложенность в компоненте например:
на сайте компонент видео галереи при открытии категории с видео ссылка выглядит так
http://prikolnyekartinki.com/s-effektami.html
При нажатии на видео ссылка выглядит так:
http://prikolnyekartinki.com/s-effektami/video/podborka-dtp-dekabr-2012-chast-1.html
По выше написанному мы видим что добавляется категория самого компонента video и вот вопрос как её убрать. Подскажите в каком месте рыть какая функция отвечает за вывод ссылки.
Вот сам компонент http://1000videourokov.ru/downloads/com_allvideoshare_1.2.4.zip
« Последнее редактирование: 29.01.2013, 10:12:02 от kaksdelat » Записан
prometheus
Осваиваюсь на форуме
***

Репутация: +7/-0
Offline Offline

Сообщений: 84



« Ответ #1 : 29.01.2013, 13:32:48 »

За пути на сайте отвечает router.php
Записан
kaksdelat
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 8


« Ответ #2 : 30.01.2013, 06:04:10 »

За пути на сайте отвечает router.php
Там нет такого:
Код:

/*
 * @version $Id: router.php 1.2.4 2012-10-30 $
 * @package Joomla
 * @copyright   Copyright (C) 2012-2013 MrVinoth
 * @license     GNU/GPL http://www.gnu.org/licenses/gpl-2.0.html
*/

// no direct access
defined('_JEXEC') or die('Restricted access');

function AllVideoShareBuildRoute( &$query ) {
$segments = array();
  
    if(isset($query['view'])) {
     $segments[] = $query['view'];
        unset( $query['view'] );
    }

if(isset($query['orderby'])) {
if($query['orderby'] != 'default') {
$segments[] = $query['orderby'];
}
     unset( $query['orderby'] );
}

    if(isset($query['slg'])) {
     $segments[] = $query['slg'];
        unset( $query['slg'] );
    }

    return $segments;
}

function AllVideoShareParseRoute( $segments ) {
$vars  = array();
$order = array('default', 'latest', 'popular', 'random', 'featured');
$count = count( $segments );

if( $count >= 1 && $segments[0] ) {
     $vars['view'] = $segments[0];
    }

if( $count == 2 ) {
if( in_array($segments[1], $order) ) {
$vars['orderby'] = $segments[1];
} else {
$vars['slg'] = $segments[1];
}
} else if($count == 3) {
$vars['orderby'] = $segments[1];
$vars['slg'] = $segments[2];    
}

    return $vars;
}

?>
Это файл router.php из компонента!
« Последнее редактирование: 30.01.2013, 06:19:48 от kaksdelat » Записан
prometheus
Осваиваюсь на форуме
***

Репутация: +7/-0
Offline Offline

Сообщений: 84



« Ответ #3 : 30.01.2013, 12:23:54 »

Ну вот этот блок скорее всего и добавляет это

Код:
   if(isset($query['view'])) {
     $segments[] = $query['view'];
        unset( $query['view'] );
    }
Записан
kaksdelat
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 8


« Ответ #4 : 30.01.2013, 12:39:06 »

Ну вот этот блок скорее всего и добавляет это

Код:
    if(isset($query['view'])) {
    $segments[] = $query['view'];
        unset( $query['view'] );
    }
И какое по вашему правило нужно изменить?
Записан
prometheus
Осваиваюсь на форуме
***

Репутация: +7/-0
Offline Offline

Сообщений: 84



« Ответ #5 : 30.01.2013, 13:46:57 »

Есть куча вариантов например в коде закоментировать строчку
Код:
    if(isset($query['view'])) {
    //$segments[] = $query['view'];
        unset( $query['view'] );
    }
тогда твои ссылки будут выглядеть так
http://prikolnyekartinki.com/s-effektami/podborka-dtp-dekabr-2012-chast-1.html?view=video
Причем функцию тоже надо будет подправить.

Основная проблема что компонент не понимает что от него хотят категорию или конкретное видео поэтому добавляет этот эллемент. По умолчанию если он не указан то он считает что это категория. Это я вроде выяснил из файла allvideosshare.php
Код:
// Require the base controller
if(JRequest::getCmd('view') == '') {
JRequest::setVar('view', 'categories');
} else if(JRequest::getCmd('view') == 'category' && !JRequest::getCmd('slg')){
JRequest::setVar('view', 'categories');
} else if(JRequest::getCmd('view') == 'video' && !JRequest::getCmd('slg')){
JRequest::setVar('view', 'videos');
}

Научи его понимать когда идет категория когда видео и все.
Как вариант префикс к сегменту например

http://prikolnyekartinki.com/s-effektami/vid-podborka-dtp-dekabr-2012-chast-1.html
http://prikolnyekartinki.com/s-effektami/cat-podborka-dtp-dekabr-2012-chast-1.html
Записан
guloc55
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 22



« Ответ #6 : 30.01.2013, 17:39:15 »

Есть куча вариантов например в коде закоментировать строчку
Код:
    if(isset($query['view'])) {
    //$segments[] = $query['view'];
        unset( $query['view'] );
    }
тогда твои ссылки будут выглядеть так
http://prikolnyekartinki.com/s-effektami/podborka-dtp-dekabr-2012-chast-1.html?view=video
Причем функцию тоже надо будет подправить.

Основная проблема что компонент не понимает что от него хотят категорию или конкретное видео поэтому добавляет этот эллемент. По умолчанию если он не указан то он считает что это категория. Это я вроде выяснил из файла allvideosshare.php
Код:
// Require the base controller
if(JRequest::getCmd('view') == '') {
JRequest::setVar('view', 'categories');
} else if(JRequest::getCmd('view') == 'category' && !JRequest::getCmd('slg')){
JRequest::setVar('view', 'categories');
} else if(JRequest::getCmd('view') == 'video' && !JRequest::getCmd('slg')){
JRequest::setVar('view', 'videos');
}

Научи его понимать когда идет категория когда видео и все.
Как вариант префикс к сегменту например

http://prikolnyekartinki.com/s-effektami/vid-podborka-dtp-dekabr-2012-chast-1.html
http://prikolnyekartinki.com/s-effektami/cat-podborka-dtp-dekabr-2012-chast-1.html

Да всё правильно ссылка video исчезает но вылазит что в файле allvideosshare.php ошибка на 29 строке вот срока
Код:
require_once JPATH_COMPONENT.DS.'controllers'.DS.$controller.'.php';
Или я что то не так делаю помогите пожалуйста!
Записан
prometheus
Осваиваюсь на форуме
***

Репутация: +7/-0
Offline Offline

Сообщений: 84



« Ответ #7 : 30.01.2013, 18:01:48 »

В router.php исправить функцию парсера
Вместо
Код:
if( $count >= 1 && $segments[0] ) {
    $vars['view'] = $segments[0];
    }

Писать
Код:
if( $count >= 1 && $segments[0] ) {
    $vars['view'] = 'video';
    }
Записан
guloc55
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 22



« Ответ #8 : 30.01.2013, 18:24:05 »

В router.php исправить функцию парсера
Вместо
Код:
if( $count >= 1 && $segments[0] ) {
    $vars['view'] = $segments[0];
    }

Писать
Код:
if( $count >= 1 && $segments[0] ) {
    $vars['view'] = 'video';
    }
Не помогает! Ошибка исчезла ссылка video тоже но само видео не включается страница просто перезагружается и всё.
Записан
prometheus
Осваиваюсь на форуме
***

Репутация: +7/-0
Offline Offline

Сообщений: 84



« Ответ #9 : 30.01.2013, 18:37:26 »

Самое главное ты смысл понял нужно исправить функцию function AllVideoShareBuildRoute( &$query )
но также обязательно подправить и функцию function AllVideoShareParseRoute( $segments )
и все получится.
Записан
guloc55
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 22



« Ответ #10 : 30.01.2013, 19:07:33 »

Самое главное ты смысл понял нужно исправить функцию function AllVideoShareBuildRoute( &$query )
но также обязательно подправить и функцию function AllVideoShareParseRoute( $segments )
и все получится.
Всё перепробовал видео всё не работает добился только вот такой ссылки
http://prikolnyekartinki.com/s-effektami.html?view=video&slg=uralskie-pelmeni-shou-kvn-shagom-farsh&orderby=default
заменив
Код:
function AllVideoShareBuildRoute( &$query )
на
Код:
function AllVideoShareBuildRoute( &$video )
Неужели больше ни чего не сделать?
Записан
z3l
Осваиваюсь на форуме
***

Репутация: +5/-0
Offline Offline

Сообщений: 83


« Ответ #11 : 17.07.2015, 00:55:15 »

Здравствуйте, решение так никто и не придумал?
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet