complementos de migas de pan recomendados con posibilidad de ocultar el enlace "Inicio" [cerrado]

2

Estoy utilizando el complemento Breadcrumb NavXT en mis páginas, pero ahora estoy enfrentando un problema

Necesito ocultar el enlace "Inicio" en algunas páginas. Puedo hacerlo ocultándolo en CSS o no creando nada. en PHP

Si quiero usar CSS, no tengo ninguna indicación para el primer enlace y su "> >" separador - no hay id o clase especial para ello

Si utilizo la solución PHP para no crearla en esos casos, mi problema es que no puedo enviar ningún parámetro a la función "bcn_display ()"

¿Puedo hacerlo con mi complemento actual o hay uno mejor?

gracias!

    
pregunta zina 23.11.2010 - 11:30

5 respuestas

1

Actualizar

Respuesta de Mtekk básicamente hace lo que estaba sugiriendo sin la necesidad de tocar el propio complemento, por lo que mi respuesta es de naturaleza bastante teórica. Describe cómo hacerlo con facilidad .

Creo que lo más fácil es hacerlo, ya que principalmente te sientes confiado con el complemento (diciendo algo menor que cambiar), sería hackear el complemento e insertar un gancho de filtro. Entonces puedes filtrar según tus necesidades. Si comparte el código, esto podría incluirlo incluso en el complemento original, para que pueda beneficiarse de las actualizaciones.

Ejemplo:

Ver archivo breadcrumb_navxt_class.php . He cambiado ligeramente una sola función para crear un filtro:

/**
 * add
 * 
 * Adds a breadcrumb to the breadcrumb trail
 * 
 * @return pointer to the just added Breadcrumb
 * @param bcn_breadcrumb $object Breadcrumb to add to the trail
 */
function &add(bcn_breadcrumb $object)
{
    $doAdd = true;
    $doAdd = do_filter('_bcn_breadcrumb_trail_add_filter', $doAdd, $object);
    if ($doAdd) {
        $this->trail[] = $object;  
        return $this->trail[count($this->trail) - 1];
    } else {
        return $object; // NOTE: violates function return spec but prevents errors later on.
    }
}

El filtro introducido se llama _bcn_breadcrumb_trail_add_filter . Ahora puedes enganchar a ese filtro y devolver FALSE , lo que evitará que se agregue $object a la ruta de navegación.

En su filtro, puede decidir en función de $object , ya sea que desee agregarlo. Eso es un bcn_breadcrumb , por lo que puede verificar si es miembro title para buscar su casa o algo así:

 $object->title

Lo único que debes hacer es agregar algún código:

 add_filter('_bcn_breadcrumb_trail_add_filter', function($doAdd, $object) {
     if ($object->title === 'Home'
         && /* this is a page I don't want to have it displayed */) {
         $doAdd = false;
     }
     return $doAdd;
 });

Por cierto, el autor del complemento está por aquí de vez en cuando, por lo que probablemente también tenga comentarios sobre esto.

    
respondido por el hakre 23.11.2010 - 17:23
3

¿En qué tipo de páginas está tratando de ocultar la migaja de la casa? Si está solo en la página de inicio, envuelva la llamada en un cheque para is_front_page e.g. if(!is_front_page){bcn_display();}

Si no desea la migaja de la casa, asegúrese de "Colocar la migaja de la casa en el camino". no está marcado en la página de configuración.

Si desea eliminar condicionalmente la migaja de la casa (honestamente, no tiene sentido hacerlo, sino lo que sea). Mira la acción bcn_after_trail. Pasará en el objeto breadcrumb_trail actual, y puede quitar el último miembro de la matriz de senderos (la ruta de inicio).

Un ejemplo sería: add_action('bcn_after_fill', 'foo_pop'); function foo_pop(&$trail) { if(is_page('foo')) { array_pop($trail->trail); } }

Eso eliminaría la ruta de inicio del camino de la página con el slug 'foo'.

    
respondido por el mtekk 23.11.2010 - 20:48
1

Pruebe Breadcrumb Trail , eché un vistazo rápido a la fuente y parece aceptar el argumento apropiado 'show_home' => __( 'Home', $textdomain ),

    
respondido por el Rarst 23.11.2010 - 13:00
1

También puede usar una función personalizada en su tema, siga un ejemplo con "Inicio"; Puedes comentar esto o eliminar

if ( !function_exists('fb_breadcrumb_nav') ) {
        function fb_breadcrumb_nav() {
                if ( !is_home() || !is_front_page() ) {
                        echo '<p class="breadcrumb"><a href="';
                        echo get_option('home');
                        echo '">';
                        bloginfo('name') . _e('</a> &raquo; ', FB_BASIS_TEXTDOMAIN);
                        if ( is_category() || is_single() ) {
                                $category = get_the_category();
                                $ID = $category[0]->cat_ID;
                                echo get_category_parents($ID, TRUE, __(' &raquo; ', FB_BASIS_TEXTDOMAIN), FALSE );
                        } elseif (is_page() && $post->post_parent ) {
                                _e( get_the_title($post->post_parent) );
                                _e(' &raquo; ');
                                _e( the_title() );
                        } elseif ( is_search() ) {
                                _e('Suche nach: ', FB_BASIS_TEXTDOMAIN) . the_search_query() . _e('</p>');
                        }
                }
        }
}

ahora un ejemplo sin Home

if ( !function_exists('fb_breadcrumb_nav') ) {
        function fb_breadcrumb_nav() {
                if ( !is_home() || !is_front_page() ) {
                        echo '<p class="breadcrumb">';
                        _e( ' &raquo; ', FB_BASIS_TEXTDOMAIN );
                        if ( is_category() || is_single() ) {
                                $category = get_the_category();
                                $ID = $category[0]->cat_ID;
                                echo get_category_parents($ID, TRUE, __(' &raquo; ', FB_BASIS_TEXTDOMAIN), FALSE );
                        } elseif (is_page() && $post->post_parent ) {
                                _e( get_the_title($post->post_parent) );
                                _e(' &raquo; ');
                                _e( the_title() );
                        } elseif ( is_search() ) {
                                _e('Suche nach: ', FB_BASIS_TEXTDOMAIN) . the_search_query() . _e('</p>');
                        }
                }
        }
}
    
respondido por el bueltge 23.11.2010 - 15:20
1

Increíble, pero otra vez encontré la solución yo mismo.

Probablemente sea u lo que me dio la inspiración, gracias :)

Decidí pasar un parámetro a bcn_display () en caso de que no quiera obtener el enlace "inicio" en el camino. De forma predeterminada, el parámetro se establece en verdadero.
Cuando no quiero que se muestre el enlace "inicio") enviar verdadero

ahora agregué la declaración del parámetro en estas funciones y agregué algo de código

//in file breadcrumb_navxt_class.php

function do_home($displayhome=true)
{...

if(($this->opt['home_display'])&&($displayhome))

...}

function fill($displayhome=false)
{...

if(!is_front_page())
{

     $this->do_home($displayhome);

}

...}

function display($displayhome=true,$return = false, $linked = true, $reverse = false)
{...}

//in file breadcrumb_navxt_admin.php

function display($displayhome=true,$return = false, $linked = true, $reverse = false)
{
        //Grab the current settings from the DB

        $this->breadcrumb_trail->opt = $this->get_option('bcn_options');

        //Generate the breadcrumb trail

        $this->breadcrumb_trail->fill($displayhome);

        return $this->breadcrumb_trail->display($displayhome,$return, $linked, $reverse);

}

function bcn_display($displayhome=true,$return = false, $linked = true, $reverse = false) {

        global $bcn_admin;

        return $bcn_admin->display($displayhome,$return, $linked, $reverse);

}
    
respondido por el zina 28.11.2010 - 07:22

Lea otras preguntas en las etiquetas