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

  • 11 Ответов
  • 1175 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

Здравствуйте каким образом можно убрать лишнию вложенность в компоненте например:
на сайте компонент видео галереи при открытии категории с видео ссылка выглядит так
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, 12:12:02 от kaksdelat »

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

За пути на сайте отвечает 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, 08:19:48 от kaksdelat »

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

Код
    if(isset($query['view'])) {
     $segments[] = $query['view'];
        unset( $query['view'] );
    }

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

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

Есть куча вариантов например в коде закоментировать строчку
Код
    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

Есть куча вариантов например в коде закоментировать строчку
Код
    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';
Или я что то не так делаю помогите пожалуйста!

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

Писать
Код
	if( $count >= 1 && $segments[0] ) {
    $vars['view'] = 'video';
    }

*

guloc55

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

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

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

*

guloc55

Самое главное ты смысл понял нужно исправить функцию 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

Здравствуйте, решение так никто и не придумал?