From 82a35fbe56f43933dd78a3577dae599ca4f24619 Mon Sep 17 00:00:00 2001 From: Ian Weller Date: Fri, 6 Jan 2017 14:47:37 -0500 Subject: [PATCH] First of the needed changes. I have begun making the changes I need to make the theme generic. I have redone the nav and removed bad code form sidebar.php --- functions.php | 91 ++++++------------------- lib/menu-walker.php | 81 ++++++++++++++++++++++ lib/navigation.php | 157 +++++++++++++++++++++++++++++++++++++++++++ parts/slide-show.php | 13 ++-- sidebar.php | 6 +- 5 files changed, 269 insertions(+), 79 deletions(-) create mode 100644 lib/menu-walker.php create mode 100644 lib/navigation.php diff --git a/functions.php b/functions.php index 8edc962..c764724 100644 --- a/functions.php +++ b/functions.php @@ -1,5 +1,6 @@ '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"; -} - /** * Return the client info option for the given key * @@ -102,22 +49,28 @@ if (!function_exists('glm_get_clientinfo_option')) { } } -/** - * 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' - )); -} - add_theme_support('post-thumbnails'); set_post_thumbnail_size(120, 100, true); + +$defaults = array( + 'default-color' => '', + 'default-image' => '', + 'default-repeat' => '', + 'default-position-x' => '', + 'default-attachment' => '', + 'wp-head-callback' => '_custom_background_cb', + 'admin-head-callback' => '', + 'admin-preview-callback' => '' +); +add_theme_support( 'custom-background', $defaults ); +add_theme_support( 'title-tag' ); +add_theme_support( 'custom-logo', array( + 'height' => 200, + 'width' => 400, + 'flex-height' => true, + 'flex-width' => true, + 'header-text' => array ( 'site-title', 'site-description'), +) ); /** * glm_site_scripts * diff --git a/lib/menu-walker.php b/lib/menu-walker.php new file mode 100644 index 0000000..f3e1d8e --- /dev/null +++ b/lib/menu-walker.php @@ -0,0 +1,81 @@ +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 < 6 ) ? '' : 'drop-left'; + 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 + $item_style = ''; +// 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 .= ""; +// } + $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..c172e80 --- /dev/null +++ b/lib/navigation.php @@ -0,0 +1,157 @@ + 'Site 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 '
      '; + wp_nav_menu(array( + 'container' => false, // remove nav container + 'container_class' => '', // class of container + 'menu' => '', // menu name + 'menu_class' => 'off-canvas-list', // 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' => 5, // limit the depth of the nav + 'fallback_cb' => false, // fallback function (see below) + 'walker' => new Glm_Theme_Off_Canvas_Walker() + )); + echo '
      '; + } +} + +/** + * 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"; +} + diff --git a/parts/slide-show.php b/parts/slide-show.php index e566daa..54a975c 100644 --- a/parts/slide-show.php +++ b/parts/slide-show.php @@ -1,6 +1,7 @@ -'; - echo do_shortcode("[metaslider id=27]"); - echo ''; -} -?> + +
    + + + +
    + \ No newline at end of file diff --git a/sidebar.php b/sidebar.php index 83d2421..321a425 100644 --- a/sidebar.php +++ b/sidebar.php @@ -1,5 +1,3 @@ -
    -
    - -
    +
    +
    \ No newline at end of file -- 2.17.1