From: Ian Weller Date: Tue, 17 Jan 2017 18:43:46 +0000 (-0500) Subject: Added a lib folder and updadted functions.php X-Git-Url: http://cvs2.gaslightmedia.com/gitweb/?a=commitdiff_plain;h=29fdee9562ffeb983911e6e64c4c801a14d77bcb;p=WP-Themes%2Fglmthemes%2Fcountyfair-theme.git Added a lib folder and updadted functions.php I updated the function.php file with references to the lib folder. --- diff --git a/functions.php b/functions.php index ed18ada..7c0f23c 100644 --- a/functions.php +++ b/functions.php @@ -1,5 +1,6 @@ 'Site Navigation', - 'footer' => 'Footer Navigation', - 'second-header' => 'Secondary Header Navigation' -)); -/** - * Top Bar - */ -if ( ! function_exists( 'glm_theme_top_bar' ) ) { - function glm_theme_top_bar() { - wp_nav_menu(array( - 'container' => false, // remove nav container - 'container_class' => '', // class of container - 'menu' => '', // menu name - 'menu_class' => '', // adding custom nav class - 'theme_location' => 'top-bar', // where it's located in the theme - 'before' => '', // before each link - 'after' => '', // after each link - 'link_before' => '', // before each link text - 'link_after' => '', // after each link text - 'depth' => 3, // limit the depth of the nav - 'fallback_cb' => false, // fallback function (see below) - 'walker' => new Glm_Theme_Top_Bar_Walker() - )); - } -} -/** - * Footer - */ -if ( ! function_exists( 'glm_theme_footer' ) ) { - function glm_theme_footer() { - wp_nav_menu(array( - 'container' => false, // remove nav container - 'container_class' => '', // class of container - 'menu' => '', // menu name - 'menu_class' => '', // adding custom nav class - 'theme_location' => 'footer', // where it's located in the theme - 'before' => '', // before each link - 'after' => '', // after each link - 'link_before' => '', // before each link text - 'link_after' => '', // after each link text - 'depth' => 3, // limit the depth of the nav - 'fallback_cb' => false, // fallback function (see below) - 'walker' => new Glm_Theme_Top_Bar_Walker() - )); - } -} -/** - * Secondary Header Navigation -**/ -if ( ! function_exists( 'glm_theme_second_header' ) ) { - function glm_theme_second_header() { - wp_nav_menu(array( - 'container' => false, // remove nav container - 'container_class' => '', // class of container - 'menu' => '', // menu name - 'menu_class' => '', // adding custom nav class - 'theme_location' => 'second-header', // where it's located in the theme - 'before' => '', // before each link - 'after' => '', // after each link - 'link_before' => '', // before each link text - 'link_after' => '', // after each link text - 'depth' => 3, // limit the depth of the nav - 'fallback_cb' => false, // fallback function (see below) - 'walker' => new Glm_Theme_Top_Bar_Walker() - )); - } -} + /** * Mobile off-canvas */ diff --git a/lib/menu-walker.php b/lib/menu-walker.php new file mode 100644 index 0000000..c9773bb --- /dev/null +++ b/lib/menu-walker.php @@ -0,0 +1,119 @@ +has_children = ! empty( $children_elements[ $element->ID ] ); + $element->classes[] = ( $element->current || $element->current_item_ancestor ) ? 'active' : ''; + $element->classes[] = ( $element->has_children && 1 !== $max_depth ) ? 'has-dropdown' : ''; + $element->classes[] = ( $element->post_parent == 0 && $mainLevelCounter < 5 ) ? '' : 'drop-left parent'; + parent::display_element( $element, $children_elements, $max_depth, $depth, $args, $output ); + } + + function start_el( &$output, $object, $depth = 0, $args = array(), $current_object_id = 0 ) { + $item_html = ''; + parent::start_el( $item_html, $object, $depth, $args ); + + // Insert style to display page's thumbnail $depth == 0 && has_post_thumbnail((int)$object->object_id + $item_style = ''; +// echo "
", print_r($object), "
"; + /*if ( $depth !== 0 && has_post_thumbnail( (int)$object->object_id ) ) { + $thumbnail = wp_get_attachment_image_src( get_post_thumbnail_id( (int)$object->object_id ), 'large' ); + + $item_style .= ""; + + } else if( $depth !== 0 && $object->type == "taxonomy") { + + //$thumbnail = z_taxonomy_image_url( (int)$object->object_id ); + + $item_style .= ""; + + } else if( $depth !== 0 && ! has_post_thumbnail( (int)$object->object_id ) ){ + + $thumbnail = get_template_directory_uri() . '/assets/header-images-2.jpg'; + $item_style .= ""; + } + */ + //$output .= ( 0 == $depth ) ? '
  • ' : ''; + $classes = empty( $object->classes ) ? array() : (array) $object->classes; + if ( in_array( 'label', $classes ) ) { + //$output .= '
  • '; + $item_html = preg_replace( '/]*>(.*)<\/a>/iU', '', $item_html ); + } + if ( in_array( 'divider', $classes ) ) { + $item_html = preg_replace( '/]*>( .* )<\/a>/iU', '', $item_html ); + } + if ($item_style) + $output .= $item_style; + $output .= $item_html; + } + + function start_lvl( &$output, $depth = 0, $args = array() ) { + $output .= "\n
      \n"; + } +} +endif; +if ( ! class_exists( 'Glm_Theme_Off_Canvas_Walker' ) ) : +class Glm_Theme_Off_Canvas_Walker extends Walker_Nav_Menu { + function display_element( $element, &$children_elements, $max_depth, $depth = 0, $args, &$output ) { + $element->has_children = ! empty( $children_elements[ $element->ID ] ); + $element->classes[] = ( $element->current || $element->current_item_ancestor ) ? 'active' : ''; + $element->classes[] = ( $element->has_children && 1 !== $max_depth ) ? 'page_item_has_children' : ''; + $element->classes[] = 'page_item'; + + parent::display_element( $element, $children_elements, $max_depth, $depth, $args, $output ); + } + + function start_el( &$output, $object, $depth = 0, $args = array(), $current_object_id = 0 ) { + $item_html = ''; + parent::start_el( $item_html, $object, $depth, $args ); + + $classes = empty( $object->classes ) ? array() : (array) $object->classes; + + if ( in_array( 'label', $classes ) ) { + $item_html = preg_replace( '/]*>(.*)<\/a>/iU', '', $item_html ); + } + + $output .= $item_html; + } + + function start_lvl( &$output, $depth = 0, $args = array() ) { + $output .= "\n
        \n"; + } + + function end_lvl(&$output, $depth = 0, $args = array()){ + $output .= '
      '; + } +} +endif; +?> diff --git a/lib/navigation.php b/lib/navigation.php new file mode 100644 index 0000000..0f60bfc --- /dev/null +++ b/lib/navigation.php @@ -0,0 +1,167 @@ + 'Site Navigation', + 'footer' => 'Footer Navigation', + 'second-header' => 'Secondary Header Navigation' +)); + +/** + * Top Bar + */ +if ( ! function_exists( 'glm_theme_top_bar' ) ) { + function glm_theme_top_bar() { + wp_nav_menu(array( + 'container' => false, // remove nav container + 'container_class' => '', // class of container + 'menu' => '', // menu name + 'menu_class' => '', // adding custom nav class + 'theme_location' => 'top-bar', // where it's located in the theme + 'before' => '', // before each link + 'after' => '', // after each link + 'link_before' => '', // before each link text + 'link_after' => '', // after each link text + 'depth' => 3, // limit the depth of the nav + 'fallback_cb' => false, // fallback function (see below) + 'walker' => new Glm_Theme_Top_Bar_Walker() + )); + } +} + +/** + * Mobile off-canvas + */ +if ( ! function_exists( 'glm_theme_mobile_off_canvas' ) ) { + function glm_theme_mobile_off_canvas() { + echo '
      '; + echo '
      • Home
      • '; + echo glm_get_mobile_nav_menu( 'top-bar' ); + echo '
      '; + } +} + +function glm_get_mobile_nav_menu( $theme_location ) +{ + $menu = wp_nav_menu(array( + 'echo' => false, // don't echo + 'container' => false, // remove nav container + 'container_class' => '', // class of container + 'menu' => '', // menu name + 'menu_class' => 'off-canvas-list', // adding custom nav class + 'theme_location' => $theme_location, // where it's located in the theme + 'before' => '', // before each link + 'after' => '', // after each link + 'link_before' => '', // before each link text + 'link_after' => '', // after each link text + 'depth' => 5, // limit the depth of the nav + 'fallback_cb' => false, // fallback function (see below) + 'walker' => new Glm_Theme_Off_Canvas_Walker() + )); + return preg_replace( array( '%^]*>%', '%
    $%' ), '', $menu ); +} + +/** + * Footer + */ +if ( ! function_exists( 'glm_theme_footer' ) ) { + function glm_theme_footer() { + wp_nav_menu(array( + 'container' => false, // remove nav container + 'container_class' => '', // class of container + 'menu' => '', // menu name + 'menu_class' => '', // adding custom nav class + 'theme_location' => 'footer', // where it's located in the theme + 'before' => '', // before each link + 'after' => '', // after each link + 'link_before' => '', // before each link text + 'link_after' => '', // after each link text + 'depth' => 1, // limit the depth of the nav + 'fallback_cb' => false, // fallback function (see below) + )); + } +} + +/** + * glm_page_menu + * + * Grab the top level pages and their sub pages as the main navigation + */ +function glm_page_menu($parent = 0, $class = '') +{ + $menuConfig = glm_get_menu_options(); + $frontPageId = get_option('page_on_front'); + $parents = array(); + $args = array( + 'post_type' => 'page', + 'parent' => $parent, + 'number' => '', + 'exclude' => $frontPageId, + 'post_status' => 'publish', + 'sort_order' => 'asc', + 'sort_column' => 'menu_order' + ); + if ($parent == 0 && $menuConfig['menu_options']['main_level_pages']) { + $args['include'] = $menuConfig['menu_options']['main_level_pages']; + } + $pages = get_pages($args); + echo ''."\n"; + foreach ($pages as $page) { + $childs = get_pages('child_of=' . $page->ID); + if (count($childs) > 0) { + echo '
  • '."\n"; + echo ''.$page->post_title.''."\n"; + echo glm_page_menu($page->ID, 'sub-menu dropdown'); + echo '
  • '."\n"; + } else { + echo '
  • '.$page->post_title.'
  • '."\n"; + } + } + echo ''."\n"; +} + +/** + * glm_offcanvas_menu + * + * Generate the list of pages as nested ul li list + */ +function glm_offcanvas_menu() +{ + wp_page_menu(array( + 'depth' => 0, + 'sort_column' => 'menu_order', + 'menu_class' => 'left-off-canvas-list' + )); +} + +/** + * get_menu_options + * + * Grab the menu options from the theme.ini file + */ +function glm_get_menu_options() +{ + static $menu_options; + $themeConfig = get_template_directory() . '/theme.ini'; + + if (!$menu_options && is_file($themeConfig)) { + $menu_options = parse_ini_file($themeConfig, true); + } + return $menu_options; +} + +function glm_side_menu() { + global $post; + $parents = get_post_ancestors($post->ID); + $id = ($parents) ? $parents[count($parents)-1]: $post->ID; + $parent = get_page( $id ); + if ($id == 0) { + $ID = $post->ID; + } else { + $ID = $parent->ID; + } + echo '

    '.get_the_title($ID).'

    '; + echo ''."\n"; +} +