Фильтрация класса «текущий пункт меню» для использования вместо него «активного»Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Фильтрация класса «текущий пункт меню» для использования вместо него «активного»

Сообщение Anonymous »

Я создаю собственную тему на основе темы Roots, которая теперь использует Twitter Bootstrap в качестве основы.В ней используется собственный «ходок» для навигации, поэтому я не могу просто фильтровать это через PHP в Header.php.




Я знаю, как добавлять аргументы, благодаря своим исследованиям Кодекса, но здесь не указано, как добавить фильтр в класс «текущий-меню-пункт». Причина, по которой я хочу это сделать, заключается в том, что я могу легко переключаться между различными стилями навигации, которые Bootstrap предлагает по умолчанию.
Я также не хочу просто перезаписывать CSS, чтобы создать правила для «активный» применяется к «текущему-меню-пункту».
В идеале я хотел бы изменить его в файле roots-cleanup.php, где создается «ходок».
Соответствующий код:
class Roots_Nav_Walker extends Walker_Nav_Menu {
function check_current($val) {
return preg_match('/(current-)/', $val);
}

function start_el(&$output, $item, $depth, $args) {
global $wp_query;
$indent = ($depth) ? str_repeat("\t", $depth) : '';

$slug = sanitize_title($item->title);

$class_names = $value = '';
$classes = empty($item->classes) ? array() : (array) $item->classes;

$classes = array_filter($classes, array(&$this, 'check_current'));

$class_names = join(' ', apply_filters('nav_menu_css_class', array_filter($classes), $item));
$class_names = $class_names ? ' class="' . esc_attr($class_names) . '"' : '';

$id = apply_filters('nav_menu_item_id', 'menu-' . $slug, $item, $args);
$id = strlen($id) ? ' id="' . esc_attr( $id ) . '"' : '';

$output .= $indent . '';

$attributes = ! empty($item->attr_title) ? ' title="' . esc_attr($item->attr_title) .'"' : '';
$attributes .= ! empty($item->target) ? ' target="' . esc_attr($item->target ) .'"' : '';
$attributes .= ! empty($item->xfn) ? ' rel="' . esc_attr($item->xfn ) .'"' : '';
$attributes .= ! empty($item->url) ? ' href="' . esc_attr($item->url ) .'"' : '';

$item_output = $args->before;
$item_output .= '';
$item_output .= $args->link_before . apply_filters('the_title', $item->title, $item->ID) . $args->link_after;
$item_output .= '';
$item_output .= $args->after;

$output .= apply_filters('walker_nav_menu_start_el', $item_output, $item, $depth, $args);
}
}

class Roots_Navbar_Nav_Walker extends Walker_Nav_Menu {
function check_current($val) {
return preg_match('/(current-)|active|dropdown/', $val);
}

function start_lvl(&$output, $depth) {
$output .= "\n
  • \n";
    }

    function start_el(&$output, $item, $depth, $args) {
    global $wp_query;
    $indent = ($depth) ? str_repeat("\t", $depth) : '';

    $slug = sanitize_title($item->title);

    $li_attributes = '';
    $class_names = $value = '';

    $classes = empty($item->classes) ? array() : (array) $item->classes;
    if ($args->has_children) {
    $classes[] = 'dropdown';
    $li_attributes .= 'data-dropdown="dropdown"';
    }
    $classes[] = ($item->current) ? 'active' : '';
    $classes = array_filter($classes, array(&$this, 'check_current'));

    $class_names = join(' ', apply_filters('nav_menu_css_class', array_filter($classes), $item));
    $class_names = $class_names ? ' class="' . esc_attr($class_names) . '"' : '';

    $id = apply_filters('nav_menu_item_id', 'menu-' . $slug, $item, $args);
    $id = strlen($id) ? ' id="' . esc_attr( $id ) . '"' : '';

    $output .= $indent . '';

    $attributes = ! empty($item->attr_title) ? ' title="' . esc_attr($item->attr_title) .'"' : '';
    $attributes .= ! empty($item->target) ? ' target="' . esc_attr($item->target ) .'"' : '';
    $attributes .= ! empty($item->xfn) ? ' rel="' . esc_attr($item->xfn ) .'"' : '';
    $attributes .= ! empty($item->url) ? ' href="' . esc_attr($item->url ) .'"' : '';
    $attributes .= ($args->has_children) ? ' class="dropdown-toggle" data-toggle="dropdown"' : '';

    $item_output = $args->before;
    $item_output .= '';
    $item_output .= $args->link_before . apply_filters('the_title', $item->title, $item->ID) . $args->link_after;
    $item_output .= ($args->has_children) ? '
    ' : '';
    $item_output .= '';
    $item_output .= $args->after;

    $output .= apply_filters('walker_nav_menu_start_el', $item_output, $item, $depth, $args);
    }
    function display_element($element, &$children_elements, $max_depth, $depth = 0, $args, &$output) {
    if (!$element) { return; }

    $id_field = $this->db_fields['id'];

    // display this element
    if (is_array($args[0])) {
    $args[0]['has_children'] = !empty($children_elements[$element->$id_field]);
    } elseif (is_object($args[0])) {
    $args[0]->has_children = !empty($children_elements[$element->$id_field]);
    }
    $cb_args = array_merge(array(&$output, $element, $depth), $args);
    call_user_func_array(array(&$this, 'start_el'), $cb_args);

    $id = $element->$id_field;

    // descend only when the depth is right and there are childrens for this element
    if (($max_depth == 0 || $max_depth > $depth+1) && isset($children_elements[$id])) {
    foreach ($children_elements[$id] as $child) {
    if (!isset($newlevel)) {
    $newlevel = true;
    // start the child delimiter
    $cb_args = array_merge(array(&$output, $depth), $args);
    call_user_func_array(array(&$this, 'start_lvl'), $cb_args);
    }
    $this->display_element($child, $children_elements, $max_depth, $depth + 1, $args, $output);
    }
    unset($children_elements[$id]);
    }

    if (isset($newlevel) && $newlevel) {
    // end the child delimiter
    $cb_args = array_merge(array(&$output, $depth), $args);
    call_user_func_array(array(&$this, 'end_lvl'), $cb_args);
    }

    // end this element
    $cb_args = array_merge(array(&$output, $element, $depth), $args);
    call_user_func_array(array(&$this, 'end_el'), $cb_args);
    }
    }

    function roots_nav_menu_args($args = '') {
    $args['container'] = false;
    $args['depth'] = 2;
    $args['items_wrap'] = '%3$s
';
if (!$args['walker']) {
$args['walker'] = new Roots_Nav_Walker();
}
return $args;
}


Подробнее здесь: https://stackoverflow.com/questions/936 ... ve-instead
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»