موضوع: ابزار دیتالایف انجین / هک دیتالایف
به نام خدا ، تا جاییکه یادم میاد بحث Breadcrumbs در ماژول Speedbar از نسخه ۱۰ به سیستم مدیریت محتوای دیتالایف انجین اضافه شده است. از نظر فنی هیچ ایرادی در این قسمت برای Speedbar وارد نیست اما آدرسی که در itemscope آن اضافه شده است قابلیت فراخوانی را نداشته و Error 404 می دهد.
برای اینکه موضوع بیشتر جا بیفتد آدرسی که هم اکنون در ماژول فراخوانی می شود به صورت زیر است :
<span itemscope itemtype=\"http://data-vocabulary.org/Breadcrumb\">
همانطور که می بینید آدرس http://data-vocabulary.org/Breadcrumb اررور ۴۰۴ را بر می گرداند. در این هک ما این آدرس را به آدرس http://schema.org/BreadcrumbList تغییر می دهیم. برای این منظور، فایل engine/engine.php را ویرایش کرده و کد زیر را بیابید :
if ($config['speedbar'] AND !$view_template ) {
$s_navigation = "<span itemscope itemtype=\"http://data-vocabulary.org/Breadcrumb\"><a href=\"{$config['http_home_url']}\" itemprop=\"url\"><span itemprop=\"title\">" . $config['short_title'] . "</span></a></span>";
if( $config['start_site'] == 3 AND $_SERVER['QUERY_STRING'] == "" AND !$_POST['do']) $titl_e = "";
if (intval($category_id)) $s_navigation .= " {$config['speedbar_separator']} " . get_breadcrumbcategories ( intval($category_id), $config['speedbar_separator'] );
elseif ($do == 'tags') {
if ($config['allow_alt_url']) $s_navigation .= " {$config['speedbar_separator']} <span itemscope itemtype=\"http://data-vocabulary.org/Breadcrumb\"><a href=\"" . $config['http_home_url'] . "tags/\" itemprop=\"url\"><span itemprop=\"title\">" . $lang['tag_cloud'] . "</span></a></span> {$config['speedbar_separator']} " . $tag;
else $s_navigation .= " {$config['speedbar_separator']} <span itemscope itemtype=\"http://data-vocabulary.org/Breadcrumb\"><a href=\"?do=tags\" itemprop=\"url\"><span itemprop=\"title\">" . $lang['tag_cloud'] . "</span></a></span> {$config['speedbar_separator']} " . $tag;
} elseif ($nam_e) $s_navigation .= " {$config['speedbar_separator']} " . $nam_e;
if ($titl_e) $s_navigation .= " {$config['speedbar_separator']} " . $titl_e;
else {
if ( isset($_GET['cstart']) AND intval($_GET['cstart']) > 1 ){
$page_extra = " {$config['speedbar_separator']} ".$lang['news_site']." ".intval($_GET['cstart']);
} else $page_extra = '';
$s_navigation .= $page_extra;
}
$tpl->load_template ( 'speedbar.tpl' );
$tpl->set ( '{speedbar}', '<span id="dle-speedbar">' . stripslashes ( $s_navigation ) . '</span>' );
$tpl->compile ( 'speedbar' );
$tpl->clear ();
}
کد فوق را با کد زیر جایگزین نمایید:
if ($config['speedbar'] AND !$view_template ) {
function get_breadcrumblistcategories($id,$sec = false){
global $speedbar,$cat_info,$config,$cstart,$dle_module;
if(!$id) return;
$parent_id = $cat_info[$id]['parentid'];
if($parent_id) get_breadcrumblistcategories( $parent_id, true );
if($sec OR $cstart>1 OR $dle_module!='cat') $speedbar[] = array( $config['http_home_url'] . get_url( $id ) . '/', $cat_info[$id]['name'], $cat_info[$id]['metatitle'] );
else $speedbar[] = $cat_info[$id]['name'];
}
$config['speedbar_separator'] = $config['speedbar_separator'] ? trim($config['speedbar_separator']) : "»";
$speedbar = array( array( $config['http_home_url'], $config['short_title'], $config['home_title'] ) );
if (intval($category_id)) get_breadcrumblistcategories( intval($category_id) );
elseif( $do == 'tags' ){
$speedbar[] = array( "/tags/", $lang['tag_cloud'] );
$speedbar[] = $tag;
}elseif($nam_e) $speedbar[] = $nam_e;
if($titl_e) $speedbar[] = $titl_e;
elseif( isset($_GET['cstart']) AND intval($_GET['cstart']) > 1 ) $speedbar[] = $lang['news_site']." ".intval($_GET['cstart']);
foreach($speedbar as $k=>$v){
$speedbar[$k] = '<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">';
$title_s = "<span itemprop=\"name\">".(is_array($v) ? $v[1] : $v)."</span>";
$speedbar[$k] .= is_array($v) ? "<a itemprop=\"item\" href=\"{$v[0]}\" title=\"".($v[2] ?: $v[1])."\">{$title_s}</a>" : $title_s;
$speedbar[$k] .= "<meta itemprop=\"position\" content=\"".( $k+1 )."\" /></li>";
}
$tpl->load_template ( 'speedbar.tpl' );
$tpl->set ( "{speedbar}", "<ul itemscope itemtype=\"http://schema.org/BreadcrumbList\" class=\"speedbar\">".implode("<li class=\"speedbar_sep\">{$config['speedbar_separator']}</li>",$speedbar)."</ul>" );
$tpl->compile ( 'speedbar' );
$tpl->clear();
$tpl->result['speedbar'] = '<div id="dle-speedbar">'.$tpl->result['speedbar'].'</div>';
}
برای نمایش بهتر style های زیر را هم به engine.css قالب خودتان اضافه نمایید:
.speedbar{
margin: 0;
padding: 10px;
list-style: none;
}
.speedbar:after{
content: "";
display: block;
clear: both;
}
.speedbar li{
float: left;
margin-right: 6px;
color: #222;
}
.speedbar li.speedbar_sep{
color: #999;
}
قبل از دیدن سایت حتما کش سایت و مرورگر خود را خالی نمایید.
موفق باشید.
- 27 / 09 / 96
- Eh3an
- 1 نظر
- 6075