首页 > 解决方案 > PHP在页面上创建隐藏的超链接

问题描述

我在 Joomla 3.9 站点上使用了一个自定义组件。

下面的代码从数据库中创建带有适当锚点(2 页)的超链接,并且工作正常,除了它还创建了不相关的隐藏链接。

如果您查看页面的来源,您只能看到 href 链接。

IE<a href="https://www.example.com/main-category/sub-cat1/"></a>

我可以在这里尝试什么来确保代码不会创建这些隐藏链接?

 else:
JFactory::getDocument()->addStyleDeclaration('@media (max-width:540px){table.all-regions tr td{width: 100% !important;display: inline-block !important;text-align: center !important;}}');
$regionsList = '';
$regionsList .= '<table class="all-regions">';
    $regions = $this->get('regions');

    for($i = 0;$i <= count($regions); $i+=3):
        $regionsList .= '<tr>';
            $regionsList .= '<td style="width: 1%;padding: 9px; line-height: 24px;"><a href="'.JUri::root().'main-category/'.$country.'/'.strtolower(implode('-',explode(' ',$regions[$i]->region_name))).'">'.$regions[$i]->region_name.'</a></td>';
            $regionsList .= '<td style="width: 1%;padding: 9px; line-height: 24px;"><a href="'.JUri::root().'main-category/'.$country.'/'.strtolower(implode('-',explode(' ',$regions[$i+1]->region_name))).'">'.$regions[$i+1]->region_name.'</a></td>';
            $regionsList .= '<td style="width: 1%;padding: 9px; line-height: 24px;"><a href="'.JUri::root().'main-category/'.$country.'/'.strtolower(implode('-',explode(' ',$regions[$i+2]->region_name))).'">'.$regions[$i+2]->region_name.'</a></td>';
        $regionsList .= '</tr>';
    endfor;
$regionsList .= '</table>';
$text = JString::str_ireplace('{%regions_list%}', $regionsList, $this->article->text);

$this->setBreadcrumbs(
    array(
        'country'
    )
);
endif;

echo $text;

可能有帮助也可能没有帮助的细节:

一页显示 3 个隐藏链接,另外 2 个隐藏链接。隐藏的链接指向我当前所在的同一页面。具有 3 个隐藏链接的页面显示 3 个偶数列的链接,而具有 2 个隐藏链接的页面有一行有 5 个链接,另外 2 行有 4 个链接

标签: phphtmljoomla

解决方案


有更好的方法来完成这一切,但无需重写代码,您需要查看这些元素是否已设置且不为空,否则您将获得空锚:

if(!empty($regions[$i]->region_name)) {
    $regionsList .= '<td style="width: 1%;padding: 9px; line-height: 24px;"><a href="'.JUri::root().'main-category/'.$country.'/'.strtolower(implode('-',explode(' ',$regions[$i]->region_name))).'">'.$regions[$i]->region_name.'</a></td>';
}
if(!empty($regions[$i+1]->region_name)) {
    $regionsList .= '<td style="width: 1%;padding: 9px; line-height: 24px;"><a href="'.JUri::root().'main-category/'.$country.'/'.strtolower(implode('-',explode(' ',$regions[$i+1]->region_name))).'">'.$regions[$i+1]->region_name.'</a></td>';
}
if(!empty($regions[$i+2]->region_name)) {
    $regionsList .= '<td style="width: 1%;padding: 9px; line-height: 24px;"><a href="'.JUri::root().'main-category/'.$country.'/'.strtolower(implode('-',explode(' ',$regions[$i+2]->region_name))).'">'.$regions[$i+2]->region_name.'</a></td>';
}

推荐阅读