0 Пользователей и 1 Гость просматривают эту тему.
  • 5 Ответов
  • 2772 Просмотров
*

Yurets

  • Захожу иногда
  • 405
  • 92 / 0
  • Губернатор острова Борнео
Приветствую всех форумчан!
Задумалось однажды мне переделать стандартную навигацию, отображаемую под каким-либо материалом.  ^-^
По умолчанию (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&amp;task=view&amp;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)).'&nbsp;...';
        } 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&amp;task=view&amp;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&amp;task=view&amp;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">&nbsp;&nbsp;<?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&amp;task=view&amp;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)).'&nbsp;...';
        } 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&amp;task=view&amp;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&amp;task=view&amp;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">&nbsp;&nbsp;<?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
*/


Вот полученный мною результат:



Не знаю как вам, а мне он нравится больше старого.  ::)
Теперь о грустном. Код я привел "как есть". Не то, чтобы он не работает... Работает. Но для своих нужд (то есть ваших) придется в нем немножко покопаться - с дизайном, стилями, настройками и пр.

В-общем, если кому-то кроме меня хинт пригодится - буду рад.

[вложение удалено Администратором]
В комнате с белым потолком
*

Yurets

  • Захожу иногда
  • 405
  • 92 / 0
  • Губернатор острова Борнео
Re: Новая навигация по материалам.
« Ответ #1 : 07.06.2008, 14:09:39 »
Сегодня в том же ключе доработана функция showLinks, выводящая список заголовков материалов какой-либо категории.
В файле content.html.php ищем строки
Код
/**
* Display links to content items
*/
 function showLinks( &$rows, $links, $total, $i=0, $show=1, $ItemidCount=NULL ) {
...

и модифицируем эту функцию следующим образом:

Код
	/**
* Display links to content items
*/
function showLinks( &$rows, $links, $total, $i=0, $show=1, $ItemidCount=NULL ) {
global $mainframe, $Itemid;
global $database, $mosConfig_offset, $mosConfig_live_site, $mainframe, $mosConfig_cachepath, $mosConfig_cachetime;

// getItemid compatibility mode, holds maintenance version number
$compat = (int) $mainframe->getCfg('itemid_compat');

if ( $show ) {
?>
<div>
<strong>
<?php // echo _MORE; ?>
</strong>
</div>
<?php
}

for ( $z = 0; $z < $links; $z++ ) {
if (!isset( $rows[$i] )) {
// stops loop if total number of items is less than the number set to display as intro + leading
break;
}

if ($compat > 0 && $compat <= 11) {
$_Itemid = $mainframe->getItemid( $rows[$i]->id, 0, 0  );
} else {
$_Itemid = $Itemid;
}

if ( $_Itemid && $_Itemid != 99999999 ) {
// where Itemid value is returned, do not add Itemid to url
$Itemid_link = '&amp;Itemid='. $_Itemid;
} else {
// where Itemid value is NOT returned, do not add Itemid to url
$Itemid_link = '';
}

$link = sefRelToAbs( 'index.php?option=com_content&amp;task=view&amp;id='. $rows[$i]->id . $Itemid_link );




// 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;

$idd = $rows[$i]->id;

if ( $idd ) {

$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 = $idd";

$database->setQuery( $query );
$rowss = $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 ( $rowss 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&amp;task=view&amp;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)).'&nbsp;...';
        } 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&amp;task=view&amp;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&amp;task=view&amp;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">&nbsp;&nbsp;<?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>

<?php } // end foreach

}
$i++;
}
}

/** // eto staroe

* @param object An object with the record
* @param boolean If <code>false</code>, the print button links to a popup window.  If <code>true</code> then the print button invokes the browser print method.
* boston +     content
*/

Полученный результат имеет следующий вид:

В комнате с белым потолком
*

therapy

  • Новичок
  • 17
  • 2 / 0
Re: Новая навигация по материалам.
« Ответ #2 : 16.06.2008, 19:24:50 »
не работает :(
белый экран выкидывает...

джустина 1.1.3
*

therapy

  • Новичок
  • 17
  • 2 / 0
Re: Новая навигация по материалам.
« Ответ #3 : 16.06.2008, 19:30:50 »
Код
PHP Parse error:  syntax error, unexpected ';', expecting ')' in components/com_content/content.html.php on line 1030
1030
Код
$myrow->introtext = preg_replace(#<.*?>#is', '' , $myrow->introtext);
*

Yurets

  • Захожу иногда
  • 405
  • 92 / 0
  • Губернатор острова Борнео
Re: Новая навигация по материалам.
« Ответ #4 : 16.06.2008, 22:52:15 »
Держите мой content.html.php - посмотрите работающий пример - странно - я вставлял код прямо из него.

[вложение удалено Администратором]
В комнате с белым потолком
*

Yurets

  • Захожу иногда
  • 405
  • 92 / 0
  • Губернатор острова Борнео
Re: Новая навигация по материалам.
« Ответ #5 : 11.07.2008, 02:05:41 »
Нашел штучку: оказывается подгружались не миниатюрки, а полные фотографии.
Чтобы грузились маленькие превьюшки (в примере 128*96), нужно поменять значения следующих переменных:
[spoiler title=Было]
Код
//IMAGE
$imageWidth = "128";
$imageHeight = "";
$thumb_width = 128;
$thumb_filter = 0;
$Zoom_Crop = 0;
$thumb_filter_color = 1;
$pik = 1;
$noimage = "";
$iW     = $imageWidth;
$iH     = $imageHeight;
[/spoiler]
[spoiler title=Должно быть]
Код
//IMAGE
$imageWidth = "128";
$imageHeight = "";
$thumb_width = 1;
$thumb_filter = 0;
$Zoom_Crop = 0;
$thumb_filter_color = 1;
$pik = 1;
$noimage = "";
$iW     = 128;
$iH     = 96;
[/spoiler]
В комнате с белым потолком
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

не подключается новая база данных

Автор zepterman

Ответов: 5
Просмотров: 3190
Последний ответ 23.03.2009, 11:11:36
от zepterman
Новая проблема!!! Установлена версия 1.0.15 и снова ошибка

Автор foxxglaf

Ответов: 3
Просмотров: 2115
Последний ответ 03.10.2008, 00:06:09
от foxxglaf