Приветствую всех форумчан!
Задумалось однажды мне переделать стандартную навигацию, отображаемую под каким-либо материалом.
По умолчанию (Joostina 1.1.3. и не только она) было что-то вроде такого, на мой взгляд, скучноватого:
На главной странице разрабатываемого мною сайта новости имеют следующий вид:
Две самых свежих новости размещены вверху стандартными средствами главного меню. Ниже слева идет колонка новостей постарше, которые выводятся с помощью замечательного модуля
dgm_news_ultra_plus_lite. Вот и решил я на его (модуля) основе переделать навигацию.
Устанавливаем модуль (в аттаче). Больше ничего делать с ним пока не понадобится.
Исходный файл для модификации - components/com_content/
content.html.php (обязательно сохраните его резервную копию - мало ли чего).
Ищем строки
/**
* Writes Next & Prev navigation button
*/
function Navigation( &$row, &$params ) {
После всех доработок, функция приняла следующий вид:
/**
* Writes Next & Prev navigation button
*/
function Navigation( &$row, &$params ) {
global $task;
global $database;
$link_part = 'index.php?option=com_content&task=view&id=';
// determines links to next and prev content items within category
if ( $params->get( 'item_navigation' ) ) {
$prev_id = $row->prev;
$next_id = $row->next;
if ( $row->prev ) {
$row->prev = sefRelToAbs( $link_part . $row->prev . $row->Itemid_link );
} else {
$row->prev = 0;
}
if ( $row->next ) {
$row->next = sefRelToAbs( $link_part . $row->next . $row->Itemid_link );
} else {
$row->next = 0;
}
}
if ( $params->get( 'item_navigation' ) && ( $task == 'view' ) && !$params->get( 'popup' ) && ( $row->prev || $row->next ) ) {
global $mosConfig_offset, $mosConfig_live_site, $mainframe, $mosConfig_cachepath, $mosConfig_cachetime;
// TITLE
$item_title = "";
$class_title = "";
$show_class_title = 1;
$show_title = 1;
$title_limit = 10;
$lt = 0;
// TIME
$vremya = 1;
$data_format = "d:m:Yг.";
$now = _CURRENT_SERVER_TIME;
//IMAGE
$imageWidth = "128";
$imageHeight = "";
$thumb_width = 128;
$thumb_filter = 0;
$Zoom_Crop = 0;
$thumb_filter_color = 1;
$pik = 1;
$noimage = "";
$iW = $imageWidth;
$iH = $imageHeight;
//ZOOM CROP
if ($Zoom_Crop==1){ $zc = '&zc=1'; } else { $zc = ''; }
//INTRO
$show_intro = 1;
$introtext_limit = 25;
$li = 1;
$lmttext = 1;
$clear_tag = 1;
?>
<table align="center" width="85%"><tr><td width="50%" valign="top">
<?php
if ( $prev_id ) {
$query = "SELECT a.id, a.images, a.catid, a.created, a.introtext, a.title, cc.id AS cc_id, cc.title AS cc_title
FROM jos_content AS a
LEFT JOIN jos_categories AS cc ON cc.id = a.catid
WHERE a.id = $prev_id";
$database->setQuery( $query );
$rows = $database->loadObjectList();
if (!function_exists('showsmallimg')) {
function showsmallimg (&$myrow)
{
global $mosConfig_live_site;
$myrow->images = explode("\n", $myrow->images);
$total = count($myrow->images);
$image = '';
for ($i=0; $i<$total; $i++) {
$image = trim($myrow->images[$i]);
if ($image) {
$filename = explode('|', $image);
$image = $filename[0];
break;
}
}
return $image;
}
}
foreach ( $rows as $myrow ) {
//title
if ($lt==1){ $myrow->title = substr($myrow->title, 0, $title_limit).'...';
} else { $myrow->title;
}
if ($show_title) {
if ($show_class_title == 1){
$enable_title = 'class="contentpagetitle"';
//$enable_title = 'class="'.$c_t.'"';
} else {$enable_title = '';}
$TITLE = '<a href="'. sefRelToAbs( 'index.php?option=com_content&task=view&id='. $myrow->id ) .'" '. $enable_title . '>' . $myrow->title .'</a>';
} else {$TITLE = '';}
//time
$created = strtotime( $myrow->created );
$created = date( $data_format, $created);
$TIME = $created;
// intro
if ($clear_tag == 1){
$myrow->introtext = preg_replace('#<.*?>#is', '' , $myrow->introtext);
$myrow->introtext = preg_replace('/{([a-zA-Z0-9\-_]*)\s*(.*?)}/i', '', $myrow->introtext);
} else {
$myrow->introtext = preg_replace('/{([a-zA-Z0-9\-_]*)\s*(.*?)}/i', '', $myrow->introtext);
}
//limit intro
if ($li==1){
if ($lmttext==1){ //str_word_count
$string = $myrow->introtext;
$intro = $string;
$intro = implode(" ", array_slice(preg_split("/\s+/", $string), 0, $introtext_limit)).' ...';
} else {
$intro = substr($myrow->introtext, 0, $introtext_limit).'...';
}
} else { $intro = $myrow->introtext; }
if ($show_intro==1) { $INTROTEX = $intro;
} else { $INTROTEX =''; }
// image
$html_image = showsmallimg($myrow);
//THUMBS
$imgPrefix = $mosConfig_live_site .'/modules/mod_dgm-news_ultra/img/img.php?src=../../../images/stories/';
if ($thumb_width==1){
if ($thumb_filter==1){
if ($thumb_filter_color==1){
$dgmimg = $imgPrefix . $html_image .'&w='. $iW .'&h='. $iH . $zc .'&q=100&fltr[]=sep';
$no_image = $imgPrefix . $noimage .'&w='. $iW .'&h='. $iH . $zc .'&q=100&fltr[]=sep';
} else {
$dgmimg = $imgPrefix . $html_image .'&w='. $iW .'&h='. $iH . $zc .'&q=100&fltr[]=gray';
$no_image = $imgPrefix . $noimage .'&w='. $iW .'&h='. $iH . $zc .'&q=100&fltr[]=gray';
}
} else {
$dgmimg = $imgPrefix . $html_image .'&w='. $iW .'&h='. $iH . $zc .'&q=100';
$no_image = $imgPrefix . $noimage .'&w='. $iW .'&h='. $iH . $zc .'&q=100';
}
} else {
$dgmimg = $mosConfig_live_site .'/images/stories/'. $html_image;
$no_image = $mosConfig_live_site .'/images/stories/'. $noimage;
}
if ($html_image) {
if ($pik==1) {
$IMAGE = '<a href="'. sefRelToAbs( 'index.php?option=com_content&task=view&id='. $myrow->id) .'"><img class="img" src="'. $dgmimg .'" border="0" width="'. $iW .'" /></a>';
}
} else {
if ($pik==1) {
$IMAGE = '<a href="'. sefRelToAbs( 'index.php?option=com_content&task=view&id='. $myrow->id) .'"><img class="img" src="'. $no_image .'" border="0" width="'.$iW.'"/></a>';
}
}
} // end foreach
?>
<table class="smallnews_navi">
<tr>
<td colspan="2" align="left"> <?php echo $TITLE; ?><div class="info"><?php echo $TIME; ?></div></td>
</tr>
<tr>
<td><?php echo $IMAGE; ?></td>
<td style="text-align:justify;"><?php echo $INTROTEX; ?><?php echo //$READMORE; ?></td>
</tr>
</table></td>
<?php }
if ( $next_id ) {
$query = "SELECT a.id, a.images, a.catid, a.created, a.introtext, a.title, cc.id AS cc_id, cc.title AS cc_title
FROM jos_content AS a
LEFT JOIN jos_categories AS cc ON cc.id = a.catid
WHERE a.id = $next_id";
$database->setQuery( $query );
$rows = $database->loadObjectList();
if (!function_exists('showsmallimg')) {
function showsmallimg (&$myrow)
{
global $mosConfig_live_site;
$myrow->images = explode("\n", $myrow->images);
$total = count($myrow->images);
$image = '';
for ($i=0; $i<$total; $i++) {
$image = trim($myrow->images[$i]);
if ($image) {
$filename = explode('|', $image);
$image = $filename[0];
break;
}
}
return $image;
}
}
foreach ( $rows as $myrow ) {
//title
if ($lt==1){ $myrow->title = substr($myrow->title, 0, $title_limit).'...';
} else { $myrow->title;
}
if ($show_title) {
if ($show_class_title == 1){
$enable_title = 'class="contentpagetitle"';
//$enable_title = 'class="'.$c_t.'"';
} else {$enable_title = '';}
$TITLE = '<a href="'. sefRelToAbs( 'index.php?option=com_content&task=view&id='. $myrow->id ) .'" '. $enable_title . '>' . $myrow->title .'</a>';
} else {$TITLE = '';}
//time
$created = strtotime( $myrow->created );
$created = date( $data_format, $created);
$TIME = $created;
// intro
if ($clear_tag == 1){
$myrow->introtext = preg_replace('#<.*?>#is', '' , $myrow->introtext);
$myrow->introtext = preg_replace('/{([a-zA-Z0-9\-_]*)\s*(.*?)}/i', '', $myrow->introtext);
} else {
$myrow->introtext = preg_replace('/{([a-zA-Z0-9\-_]*)\s*(.*?)}/i', '', $myrow->introtext);
}
//limit intro
if ($li==1){
if ($lmttext==1){ //str_word_count
$string = $myrow->introtext;
$intro = $string;
$intro = implode(" ", array_slice(preg_split("/\s+/", $string), 0, $introtext_limit)).' ...';
} else {
$intro = substr($myrow->introtext, 0, $introtext_limit).'...';
}
} else { $intro = $myrow->introtext; }
if ($show_intro==1) { $INTROTEX = $intro;
} else { $INTROTEX =''; }
// image
$html_image = showsmallimg($myrow);
//THUMBS
$imgPrefix = $mosConfig_live_site .'/modules/mod_dgm-news_ultra/img/img.php?src=../../../images/stories/';
if ($thumb_width==1){
if ($thumb_filter==1){
if ($thumb_filter_color==1){
$dgmimg = $imgPrefix . $html_image .'&w='. $iW .'&h='. $iH . $zc .'&q=100&fltr[]=sep';
$no_image = $imgPrefix . $noimage .'&w='. $iW .'&h='. $iH . $zc .'&q=100&fltr[]=sep';
} else {
$dgmimg = $imgPrefix . $html_image .'&w='. $iW .'&h='. $iH . $zc .'&q=100&fltr[]=gray';
$no_image = $imgPrefix . $noimage .'&w='. $iW .'&h='. $iH . $zc .'&q=100&fltr[]=gray';
}
} else {
$dgmimg = $imgPrefix . $html_image .'&w='. $iW .'&h='. $iH . $zc .'&q=100';
$no_image = $imgPrefix . $noimage .'&w='. $iW .'&h='. $iH . $zc .'&q=100';
}
} else {
$dgmimg = $mosConfig_live_site .'/images/stories/'. $html_image;
$no_image = $mosConfig_live_site .'/images/stories/'. $noimage;
}
if ($html_image) {
if ($pik==1) {
$IMAGE = '<a href="'. sefRelToAbs( 'index.php?option=com_content&task=view&id='. $myrow->id) .'"><img class="img" src="'. $dgmimg .'" border="0" width="'. $iW .'" /></a>';
}
} else {
if ($pik==1) {
$IMAGE = '<a href="'. sefRelToAbs( 'index.php?option=com_content&task=view&id='. $myrow->id) .'"><img class="img" src="'. $no_image .'" border="0" width="'.$iW.'"/></a>';
}
}
} // end foreach
?>
<td width="50%" valign="top">
<table class="smallnews_navi">
<tr>
<td colspan="2" align="left"> <?php echo $TITLE; ?><div class="info"><?php echo $TIME; ?></div></td>
</tr>
<tr>
<td><?php echo $IMAGE; ?></td>
<td style="text-align:justify;"><?php echo $INTROTEX; ?></td>
</tr>
</table>
</td>
<?php } ?>
</tr>
</table>
<br />
<?php
}
}
// dal'she snova vse staroe
/**
* Writes the edit form for new and existing content item
*
* A new record is defined when <var>$row</var> is passed with the <var>id</var>
* property set to 0.
* @param mosContent The category object
* @param string The html for the groups select list
*/
Вот полученный мною результат:
Не знаю как вам, а мне он нравится больше старого.
Теперь о грустном. Код я привел "как есть". Не то, чтобы он не работает... Работает. Но для своих нужд (то есть ваших) придется в нем немножко покопаться - с дизайном, стилями, настройками и пр.
В-общем, если кому-то кроме меня хинт пригодится - буду рад.
[вложение удалено Администратором]