1
jimmyx
theme breadcrumb help
  • 2010/5/7 14:53

  • jimmyx

  • Quite a regular

  • Posts: 338

  • Since: 2007/7/18


i'm using this breadcrumb script..which i forgot from where did i got it


if( ! defined'XOOPS_ROOT_PATH' ) ) exit ;

//
// definitions
//

$theme_name basenamedirname(__FILE__) ) ;
$site_salt substrmd5XOOPS_URL ) , -) ;
$menu_cache_file XOOPS_TRUST_PATH.'/cache/theme_'.$theme_name.'_menus_'.$site_salt.'.php' ;

// root controllers
@include_once XOOPS_ROOT_PATH.'/language/'.$GLOBALS['xoopsConfig']['language'].'/user.php' ;
$root_controllers = array(
    
'/register.php' => array( 'name' => @_US_USERREG ) ,
    
'/userinfo.php' => array( 'name' => @_US_PROFILE ) ,
    
'/edituser.php' => array( 'name' => @_US_EDITPROFILE ) ,
    
'/viewpmsg.php' => array( 'name' => @_US_INBOX ) ,
    
'/readpmsg.php' => array( 'name' => @_US_INBOX 'url' => XOOPS_URL.'/viewpmsg.php' ) ,
    
'/notifications.php' => array( 'name' => @_NOT_NOTIFICATION ) ,
    
'/search.php' => array( 'name' => @_SR_SEARCH ) ,
) ;

// the best method is to be assigned by module self.  especially D3 modules have to assign this :-)

// the second best method to get breadcrumbs (rebuilding from an assigned var) NOT IMPLEMENTED
$modcat_assigns = array(
    
// 0=>var_name, 1=>separator
    
'mydownloads' => array( 'category_path' ' : ' ) ,
    
'mylinks' => array( 'category_path' ' : ' ) ,
) ;

// the last(worst) method to get breadcrumbs (querying parents recursively)
$modcat_trees = array(
    
// 0=>table, 1=>col4id, 2=>col4pid, 3=>col4name, 4=>GET index, 5=>_tpl_vars, 6=>url_fmt
    
'AMS'=>array('ams_topics','topic_id','topic_pid','topic_title','storytopic',null,'index.php?storytopic=%d'),
    
'articles'=>array('articles_cat','id','cat_parent_id','cat_name','cat_id',null,'index.php?cat_id=%d'),
    
'booklists'=>array('mybooks_cat','cid','pid','title','cid',null,'viewcat.php?cid=%d'),
    
'catads'=>array('catads_cat','cat_id','pid','title','cat_id',null,'adslist.php?cat_id=%d'),
    
'debaser'=>array('debaser_genre','genreid','subgenreid','genretitle','genreid',null,'genre.php?genreid=%d'),
    
'myAds'=>array('ann_categories','cid','pid','title','cid',null,'index.php?pa=view&cid=%d'),
    
'myalbum'=>array('myalbum_cat','cid','pid','title','cid','photo.cid','viewcat.php?cid=%d'),
    
'mydownloads'=>array('mydownloads_cat','cid','pid','title','cid',null,'viewcat.php?cid=%d'),
    
'mylinks'=>array('mylinks_cat','cid','pid','title','cid',null,'viewcat.php?cid=%d'),
    
'mymovie'=>array('mymovie_cat','cid','pid','title','cid',null,'viewcat.php?cid=%d'),
    
'news'=>array('topics','topic_id','topic_pid','topic_title','storytopic',null,'index.php?storytopic=%d'),
    
'piCal'=>array('pical_cat','cid','pid','cat_title','cid',null,'index.php?cid=%d'),
    
'plzXoo'=>array('plzxoo_category','cid','pid','name','cid','category.cid','index.php?cid=%d'),
    
'smartfaq'=>array('smartfaq_categories','categoryid','parentid','name','categoryid',null,'category.php?categoryid=%d'),
    
'smartsection'=>array('smartsection_categories','categoryid','parentid','name','categoryid',null,'category.php?categoryid=%d'),
    
'tutorials'=>array('tutorials_categorys','cid','scid','cname','cid',null,'listutorials?cid=%d'),
    
'weblinks'=>array('weblinks_category','cid','pid','title','cid',null,'viewcat.php?cid=%d'),
    
'weblog'=>array('weblog_category','cat_id','cat_pid','cat_title','cat_id',null,'index.php?cat_id=%d'),
    
'wfdownloads'=>array('wfdownloads_cat','cid','pid','title','cid',null,'viewcat.php?cid=%d'),
    
'wflinks'=>array('wflinks_cat','cid','pid','title','cid',null,'viewcat.php?cid=%d'),
    
'wfsection'=>array('wfs_category','id','pid','title','category',null,'viewarticles.php?category=%d'),
    
'wordpress'=>array('wp_categories','cat_ID','category_parent','cat_name','cat',null,'index.php?cat=%d'),
    
'xcgal'=>array('xcgal_categories','cid','parent','name','cat',null,'index.php?cat=%d'),
    
'xfsection'=>array('xfs_category','id','pid','title','category',null,'index.php?category=%d'),
) ;

global 
$xoopsUser$xoopsModule$xoopsOption$xoopsConfig;

$dirname is_object( @$xoopsModule ) ? $xoopsModule->getVar('dirname') : '' ;
$modname is_object( @$xoopsModule ) ? $xoopsModule->getVar('name') : '' ;

// for compatibility of 2.0.x from xoops.org
$this->assign( array(
    
'xoops_modulename' => $modname ,
    
'xoops_dirname' => $dirname ,
) ) ;

// groups
if( is_object( @$xoopsUser ) ) {
    
$member_handler =& xoops_gethandler'member' ) ;
    
$groups $member_handler->getGroupsByUser$xoopsUser->getVar('uid') , true ) ;
    foreach( 
$groups as $group ) {
        
$groups4assign[] = array( 'id' => $group->getVar('groupid') , 'name' => $group->getVar('name') ) ;
    }
} else {
    
$groups4assign[] = array( 'id' => XOOPS_GROUP_ANONYMOUS 'name' => _GUESTS ) ;
}
$this->assign"xugj_groups" $groups4assign ) ;

// for speed up hack :-)
if( ! empty( $_SESSION['redirect_message'] ) ) {
    if( empty( 
$this->_tpl_vars['xoops_lblocks'] ) ) $this->_tpl_vars['xoops_lblocks'] = array() ;
    
array_unshift$this->_tpl_vars['xoops_lblocks'] , array( 'title' => 'Message' 'content' => $_SESSION['redirect_message'] , 'weight' => ) ) ;
    
$this->_tpl_vars['xoops_showlblock'] = ;
    
$is_redirected true ;
    unset( 
$_SESSION['redirect_message'] ) ;
}

// xoops_breadcrumbs
if( ! is_array( @$this->_tpl_vars['xoops_breadcrumbs'] ) ) {
    
$breadcrumbs = array() ;
    
// root controllers
    
if( ! is_object( @$xoopsModule ) ) {
        
$page strrchr$_SERVER['SCRIPT_NAME'] , '/' ) ;
        if( isset( 
$root_controllers$page ] ) ) {
            
$breadcrumbs[] = $root_controllers$page ] ;
        }
    } else {
        
// default
        
$breadcrumbs[] = array( 'url' => XOOPS_URL."/modules/$dirname/" 'name' => $modname ) ;
        if( isset( 
$modcat_assigns$dirname ] ) && strlen$tplvar xugj_assign_get_tpl_vars$this $modcat_assigns$dirname ][0] ) ) ) {
            
// get from breadcrumbs for each modules (the second best)
            
$tplvars_info $modcat_assigns$dirname ] ;
            
$bc_tmps explode$tplvars_info[1] , $tplvar ) ;
            
array_shift$bc_tmps ) ;
            foreach( 
$bc_tmps as $bc_tmp ) {
                if( 
preg_match'#href=(["']?)(.*)\1>(.*)a>#' , $bc_tmp , $regs ) ) {
                    
$breadcrumbs[] = array(
                        
'name' => $regs[3] ,
                        
'url' => $regs[2] ,
                    ) ;
                }
            }
            if( 
$tplvars_info[2] ) xugj_assign_clear_tpl_vars$this $tplvars_info[0] ) ;
        } else if( isset( 
$modcat_trees$dirname ] ) ) {
            
// category tree (the last method)
            
$tree_info $modcat_trees$dirname ] ;
            if( @
$_GET$tree_info[4] ] > $id_val intval$_GET$tree_info[4] ] ) ;
            else if( ! empty( 
$tree_info[5] ) ) $id_val xugj_assign_get_tpl_vars$this $tree_info[5] ) ;
            if( ! empty( 
$id_val ) ) $breadcrumbs array_merge$breadcrumbs xugj_assign_get_breadcrumbs_by_tree$tree_info[0] , $tree_info[1] , $tree_info[2] , $tree_info[3] , $id_val XOOPS_URL.'/modules/'.$dirname.'/'.$tree_info[6] ) ) ;
        }
        if( ! 
in_array( @$this->_tpl_vars['xoops_pagetitle'] , array( $modname $breadcrumbs[sizeof($breadcrumbs)-1]['name'] ) ) ) {
            
$breadcrumbs[] = array( 'name' => $this->_tpl_vars['xoops_pagetitle'] ) ;
        }
    }
    
$this->assign"xoops_breadcrumbs" $breadcrumbs ) ;
}

function 
xugj_assign_get_breadcrumbs_by_tree$table $id_col $pid_col $name_col $id_val $url_fmt $paths = array() )
{
    
$db =& Database::getInstance() ;

    
$sql "SELECT `$pid_col`,`$name_col` FROM ".$db->prefix($table)." WHERE `$id_col`=".intval($id_val) ;
    
$result $db->query$sql ) ;
    if( 
$db->getRowsNum$result ) == ) return $paths ;
    list( 
$pid $name ) = $db->fetchRow$result ) ;
    
$paths array_merge( array( array(
        
'name' => htmlspecialchars$name ENT_QUOTES ) ,
        
'url' => sprintf$url_fmt $id_val ) ,
    ) ) , 
$paths ) ;

    return 
xugj_assign_get_breadcrumbs_by_tree$table $id_col $pid_col $name_col $pid $url_fmt $paths ) ;
}


function 
xugj_assign_get_tpl_vars( &$smarty $dot_expression )
{
    
$indexes explode'.' $dot_expression ) ;
    
$current_array $smarty->_tpl_vars ;
    foreach( 
$indexes as $index ) {
        
$current_array = @$current_array$index ] ;
    }

    return 
$current_array ;
}


$menus = array() ;
@include 
$menu_cache_file ;
if( empty( 
$menus ) ) {
    
// cache menus
    
$module_handler =& xoops_gethandler'module' ) ;
    
$criteria = new CriteriaCompo( new Criteria'hasmain' ) ) ;
    
$criteria->add( new Criteria'isactive' ) ) ;
    
$criteria->add( new Criteria'weight' '>' ) ) ;
    
$modules =& $module_handler->getObjects$criteria true ) ;
    
$moduleperm_handler =& xoops_gethandler'groupperm' ) ;
    
$group_handler =& xoops_gethandler'group' ) ;
    
$groups =& $group_handler->getObjects() ;
    
$config_handler =& xoops_gethandler'config' ) ;

    
// backup
    
if( is_object( @$GLOBALS['xoopsModule'] ) ) {
        
$xoopsModuleBackup =& $GLOBALS['xoopsModule'] ;
        
$xoopsModuleConfigBackup =& $GLOBALS['xoopsModuleConfig'] ;
    }

    foreach( 
$groups as $group ) {
        
$groupid $group->getVar('groupid') ;
        
$read_allowed $moduleperm_handler->getItemIds'module_read' $groupid ) ;
        foreach( 
$modules as $module ) {
            if( 
in_array$module->getVar('mid') , $read_allowed ) ) {
                
$GLOBALS['xoopsModule'] =& $module ;
                
$module->loadInfo$module->getVar('dirname') ) ;
                if( ! 
$module->getInfo('sub') ) continue ; // テスト用テンポラリ(最後は消すこと)
                
$menus[$groupid][ $module->getVar('dirname') ] = array(
                    
'name' => $module->getVar('name') ,
                    
'dirname' => $module->getVar('dirname') ,
                    
'url' => '' ,
                    
'sub' => $module->getInfo('sub') ,
                ) ;
            }
        }
    }

    
// restore
    
if( is_object( @$xoopsModuleBackup ) ) {
        
$GLOBALS['xoopsModule'] =& $xoopsModuleBackup ;
        
$GLOBALS['xoopsModuleConfig'] =& $xoopsModuleBackup ;
    }

    
ob_start() ;
    
var_export$menus ) ;
    
$menus4cache ob_get_contents() ;
    
ob_end_clean() ;

    
$fp fopen$menu_cache_file 'wb' ) ;
    if( empty( 
$fp ) ) return ;
    
fwrite$fp "$menus = ".$menus4cache.";n?>" ) ;
    
fclose$fp ) ;
}


$united_menus = array() ;
foreach( 
$groups4assign as $group_tmp ) {
    if( 
is_array( @$menus$group_tmp['id'] ] ) ) $united_menus += $menus$group_tmp['id'] ] ;
}

$this->assign'xugj_menu_uls' xugj_assign_display_menu_ul_recursively$united_menus ) ) ;

function 
xugj_assign_display_menu_ul_recursively$level_menus $dirname '' ) {

    
$ret "
    n" ;
        foreach( 
    $level_menus as $menu ) {
            if( ! empty( 
    $menu['dirname'] ) ) $dirname $menu['dirname'] ;
            
    $ret .= "
  • n$dirname.'/'.$menu['url']."">".$menu['name']."n" ;
            if( ! empty( 
    $menu['sub'] ) && is_array$menu['sub'] ) ) $ret .= xugj_assign_display_menu_ul_recursively$menu['sub'] , $dirname ) ;
            
    $ret .= "
  • n" 
    ;
        }
        return 
    $ret "
n" 
;
}

?>



all is ok but i will always receive this error when i enable debug

Warningfopen(/home/4/myhp_trustpath/cache/theme_xoscripts_menus_e6f0.php) [function.fopen]: failed to open streamNo such file or directory in file /themes/xx/xoscripts/breadcrumb.php line 213

what is this ? what do i need to do ?

im using a custom theme..i put the breadcrumb.php in root/themes/xx/xoscripts/



any other latest breadcrumb that i can use ?

2
ghia
Re: theme breadcrumb help
  • 2010/5/7 15:14

  • ghia

  • Community Support Member

  • Posts: 4953

  • Since: 2008/7/3 1


Check if directory XOOPS_TRUST_PATH.'/cache/ is writable.

3
jimmyx
Re: theme breadcrumb help
  • 2010/5/7 15:36

  • jimmyx

  • Quite a regular

  • Posts: 338

  • Since: 2007/7/18


it is 775..isn't that sufficient ?

4
jimmyx
Re: theme breadcrumb help
  • 2010/5/7 15:45

  • jimmyx

  • Quite a regular

  • Posts: 338

  • Since: 2007/7/18


i just changed it to 777 and the error is still there...

5
ghia
Re: theme breadcrumb help
  • 2010/5/7 19:16

  • ghia

  • Community Support Member

  • Posts: 4953

  • Since: 2008/7/3 1


Is there a file XOOPS_TRUST_PATH.'/cache/theme_'.$theme_name.'_menus_'.$site_salt.'.php present?

6
lmzan
Re: theme breadcrumb help
  • 2010/7/19 1:02

  • lmzan

  • Not too shy to talk

  • Posts: 104

  • Since: 2005/6/21


Hi Ghia

I'm also having this error, using theme VectorLover. The /cache folder is ChMod 777 and there are no files in there, except index.html and readme.txt

I'm running Xoops 2.4.4. My website is under development in a temporary URL, this one http://faveni.dominiotemporario.com/index.php

Debug is on, could you check it out?

7
red_Slider
Re: theme breadcrumb help

1. It's xugj_assign script from GIJOE (for more read here)
2. Ghia - as U see - no there's any cache file for breadcrumbs
3. jimmyx: go to: myhp_trustpath/cache/ folder and create an empty file with name: theme_xoscripts_menus_e6f0.php. Remember to set permissions to 666 for it.
4. lmzan: go to: /xoops_lib_faveni/ folder, create "cache" folder (as Ghia said - set permissions to 777), then inside "cache" create an empty file with name "theme_xoscripts_menus_d85d.php" - and set permissions fot it to 666.
5. Imzan - go to your xoops_data folder (XOOPS_TRUST_PATH), and then into "configs" folder. Edit "xoopsconfig.php" file, find red text "debugLevel" => 0" and change 0 into 2. That will hide debug informations on Your site. It'll be visible only for admins.
6. Nice site!
7. jimmyx - change topics option into SOLVED

Regards red_Slider

8
lmzan
Re: theme breadcrumb help
  • 2010/7/19 19:07

  • lmzan

  • Not too shy to talk

  • Posts: 104

  • Since: 2005/6/21


Thanks red_Slider

Problem solved!
This site is going live next weekend, thanks for the compliment!

9
red_Slider
Re: theme breadcrumb help

I like those brunette on the right side

10
jimmyx
Re: theme breadcrumb help
  • 2010/7/20 0:00

  • jimmyx

  • Quite a regular

  • Posts: 338

  • Since: 2007/7/18


thank you redslider

Login

Who's Online

339 user(s) are online (246 user(s) are browsing Support Forums)


Members: 0


Guests: 339


more...

Donat-O-Meter

Stats
Goal: $100.00
Due Date: Nov 30
Gross Amount: $0.00
Net Balance: $0.00
Left to go: $100.00
Make donations with PayPal!

Latest GitHub Commits