it-swarm.com.de

empfohlene Breadcrumb-Plugins mit der Möglichkeit, den "Home" -Link auszublenden

Ich verwende das Breadcrumb NavXT -Plug-In auf meinen Seiten, aber jetzt stehe ich vor einem Problem

Ich muss den "Home" -Link auf einigen Seiten ausblenden. Ich kann das entweder tun, indem ich es in CSS verstecke oder indem ich es überhaupt nicht erstelle. in PHP

Wenn ich CSS verwenden möchte - ich habe keine Anzeige für den ersten Link und das Trennzeichen ">>" - es gibt keine ID oder spezielle Klasse dafür

Wenn ich in diesen Fällen die PHP -Lösung auswähle, es überhaupt nicht zu erstellen, kann ich keine Parameter an die Funktion "bcn_display ()" senden

Kann ich das mit meinem aktuellen Plug-In machen oder gibt es ein besseres?

vielen Dank!

2
zina

Aktualisieren

Mtekks Antwort entspricht im Grunde dem, was ich vorschlug, ohne das Plugin selbst zu berühren. Meine Antwort ist also ziemlich theoretischer Natur. Er beschreibt, wie das einfach geht .


Ich denke, das ist am einfachsten, da Sie hauptsächlich mit dem Plugin vertraut sind (wenn Sie etwas Nebensächliches zum Ändern sagen), wäre es, das Plugin zu hacken und einen Filterhaken einzufügen. Dann können Sie nach Ihren Bedürfnissen filtern. Wenn Sie den Code freigeben, wird er möglicherweise sogar in das Original-Plugin übernommen, sodass Sie von Updates profitieren können.

Beispiel:

Siehe Datei breadcrumb_navxt_class.php. Ich habe eine einzelne Funktion leicht geändert, um einen Filter zu erstellen:

/**
 * 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.
    }
}

Der eingeführte Filter heißt _bcn_breadcrumb_trail_add_filter. Sie können sich jetzt an diesen Filter binden und FALSE zurückgeben, wodurch das Hinzufügen von $object zum Breadcrumb-Trail verhindert wird.

In Ihrem Filter können Sie basierend auf $object entscheiden, ob Sie ihn hinzufügen möchten oder nicht. Das ist ein bcn_breadcrumb, also können Sie überprüfen, ob es sich bei dem title-Mitglied um ein Zuhause handelt, oder so:

 $object->title

Das Einzige, was Sie tun müssen, ist Code hinzuzufügen:

 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;
 });

Übrigens, der Autor des Plugins ist von Zeit zu Zeit hier, also hat er wahrscheinlich auch ein Feedback dazu.

1
hakre

Auf welcher Art von Seiten möchten Sie den Haupt-Breadcrumb verbergen? Wenn es sich nur auf der Homepage befindet, schließen Sie den Anruf in eine Prüfung auf is_front_page ein, z. if(!is_front_page){bcn_display();}

Wenn Sie die Brotkrume für zu Hause überhaupt nicht möchten, stellen Sie sicher, dass Sie die Brotkrume für zu Hause in den Pfad einfügen. ist auf der Einstellungsseite nicht markiert.

Wenn Sie die Hauptbrösel bedingt entfernen möchten (ehrlich gesagt macht das keinen Sinn, aber was auch immer). Schauen Sie sich die Aktion bcn_after_trail an. Es wird das aktuelle breadcrumb_trail-Objekt übergeben, und Sie können das letzte Mitglied im trail-Array (den Home-Breadcrumb) entfernen.

Ein Beispiel wäre: add_action('bcn_after_fill', 'foo_pop'); function foo_pop(&$trail) { if(is_page('foo')) { array_pop($trail->trail); } }

Das würde den Haupt-Breadcrumb von der Spur für die Seite mit der Schnecke 'foo' entfernen.

3
mtekk

Versuchen Sie Breadcrumb Trail , ich habe einen kurzen Blick in den Quellcode geworfen und es scheint ein passendes Argument zu akzeptieren 'show_home' => __( 'Home', $textdomain ),

1
Rarst

Sie können auch eine benutzerdefinierte Funktion in Ihrem Thema verwenden. Befolgen Sie ein Beispiel mit "Startseite". Sie können dies kommentieren oder löschen

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>');
                        }
                }
        }
}

jetzt ein beispiel ohne 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>');
                        }
                }
        }
}
1
bueltge

Unglaublich, aber wieder habe ich die Lösung selbst gefunden.

wahrscheinlich hast du mich inspiriert - Danke :)

Ich habe beschlossen, einen Parameter an bcn_display () zu übergeben, falls ich den Link "home" nicht in den Trail aufnehmen möchte. Standardmäßig ist der Parameter auf true gesetzt.
Wenn der "Home" -Link nicht angezeigt werden soll, sende true

jetzt habe ich die Deklaration des Parameters in diesen Funktionen hinzugefügt und etwas Code hinzugefügt

//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);

}
1
zina