繁体   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