簡體   English   中英

基於帶鏈接的URL的面包屑(PHP,HTML,Codeigniter)

[英]Breadcrumbs based on URL with links (PHP, HTML, Codeigniter)

我根據當前的網址制作動態的bredcrumbs。 我的問題是,由於foreach循環,我無法弄清楚如何生成正確的鏈接並將其附加到單詞。 我的代碼真的很亂,所以我真的需要幫助。 希望你們能幫忙!

TNX

這是我的代碼:

<?php
        $url = current_url();
        $home = "www.homepage.com";
        $sub_url = substr($url, strpos($url, $home));
        $segments = explode("/", $url);
        $parts = array_slice($segments, 3);
        $count = count($parts);
        $i = 0;
        ?>
       //Don't show breadcrumb on home page
    <?php if (current_url() !== base_url() && current_url() !== base_url() . "home") { ?>
            <div class="breadcrumbs">
                <a href="<?php echo base_url(); ?>"><div class="home">Home</div></a>
                <div class="divider1"></div>
                <?php
                foreach ($parts as $row) {
                    $bread = ucfirst(str_replace("-", " ", str_replace("_", " ", $row)));
                    ?>
                    <div class="level1" style="margin-left: -6px ;">
                       <a href="#"><?php echo $bread." ". $i; ?></a>
                    </div>
                    <?php if ($i < $count - 1) { ?>
                        <div class="divider1"></div>
                        <?php
                    }
                    $i++;
                }
                ?>
            </div>
   <?php }  ?>

編輯:右鏈接意味着你有像www.homepage.com/mens_where/mens_jackets/Jacket123這樣的網址

如果我不考慮上層代碼中的echo類,那么輸出應該是類似的

<a href="www.homepage.com">home</a>
<a href="www.homepage.com/mens_wear">Mens Wear</a>
<a href="www.homepage.com/mens_wear/mens_jackets">Mens jackets</a>
<a href="www.homepage.com/mens_wear/mens_jackets/Jacket123">Jacket123</a>

如果您使用的是codeigniter,請嘗試以下方法:

<div class="breadcrumb">
<?php
$segments = $this->uri->segment_array();
$last_segment = '';
foreach ($segments as $segment) {
    $last_segment .= '/' . $segment;
    echo '<a href="www.homepage.com' . $last_segment . '">' . ucfirst(str_replace(array('-', '_'), '', $segment)) . '</a>';
}
?>
</div>

並使用CSS創建分隔符。 這樣您就不必在PHP代碼中進行一些棘手的檢查:

.breadcrumb > a + a:before {
    color: #CCC;
    content: "/ ";
    padding: 0 5px;
}

這是我的最終解決方案!

 <?php if (current_url() !== base_url() && current_url() !== base_url() . "home") { ?>
            <div class="breadcrumbs">
                <?php
                $segments = $this->uri->segment_array();
                $last_segment = '';?>
                <a href="<?php echo base_url(); ?>"><div class="home">Home</div></a>
                <div class="divider1"></div>
                <?php
                foreach ($segments as $segment) {
                    $last_segment .= '/' . $segment;
                    ?>
                 <div class="level1" style="margin-left: -6px ;">
                     <?php
                    echo '<a href="'.base_url() . substr($last_segment,1) . '">' .    ucfirst(str_replace('-', ' ', str_replace('_', ' ', $segment))) . '</a>';
                    ?>
                     </div>
                     <div class="divider1"></div>
                     <?php
                }
                ?>
            </div>
        <?php } ?><br>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM