Новости Joomla

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

andrewsis

  • Новичок
  • 2
  • 0 / 0
Добрый день. На моем сайте установлен модуль новостей junewsultra, немного изменен. Выводит на главной странице 12 новостей.
Хочется чтобы был постраничный вывод новостей ( а не переход по разделам и каталогам). Как говорится все в одном :)


Красным помечено как хочется чтобы было.

Вот что нашел:
Цитировать
PHP: простая постраничная разбивка (315 байт)

Сразу приведу пример реализации:

1 2 3 4 5 6 7 8 9 10 11 12 13 ...30

и исходный код функции на PHP в минимизированном виде, 315 байт:

    <?php function PageToArray($pc=1,$pa=10,$pp=15){$r=array();if($pa<=$pp){for($i=1;$i<=$pa;$i++)$r[$i]=$i;}else{$b=$pc-floor($pp/2);if($pp%2==0)$b++;if($b<1)$b=1;if($b+$pp>$pa)$b=$pa-$pp+1;for($i=1;$i<=$pp;$i++)$r[$i]=$b++;if($r[1]!=1){$r[1]=1;$r[2]='...';}if($r[$pp]!=$pa){$r[$pp]=$pa;$r[$pp-1]='...';}}return $r;}?>

А теперь, по порядку
Использование функции


    //$iPage - текущая страница
    //$iAllPage - всего страница
    //30 - выводить за раз 20 страниц, если не указано, то выводиться по 15 страниц.
    $aPage = PageToArray($iPage,$iAllPage,20);

Исходный код функции на PHP


    function PageToArray($pc=1,$pa=10,$pp=15)
        {
        $r = array();
        if ($pa<=$pp)
            {
            for ($i=1;$i<=$pa;$i++)
            $r[$i] = $i;

            } else {

            $b = $pc-floor($pp/2);
            if ( $pp%2==0)
                $b++;
            if ( $b<1 )
                $b = 1;

            if ( $b+$pp > $pa)
                $b = $pa-$pp+1;

            for ($i=1;$i<=$pp;$i++)
                $r[$i] = $b++;

            if ( $r[1]!=1 )
                {
                $r[1] = 1;
                $r[2] = '...';
                }

            if ( $r[$pp]!=$pa )
                {
                $r[$pp] = $pa;
                $r[$pp-1] = '...';
                }
            }

        return $r;
        }

PHP + HTML код

    echo '<p class="page" align="center">';
    foreach ($aPage as $one)
        if ( $one == '...' )
            {
            echo '<span>...</span>';
            } else {
            echo '<a href="?page='.$one.'"'.
                ($one==$iPage?'class="active"':'').'>'.$one.'</a>';
            }
    echo '</p>';

CSS код

    .page a
        {
        padding: 2px 5px;
        font-size: 9pt;
        background: #f7f7f7;
        border: 1px solid #c7c7c7;
        color: #000000;
        text-decoration: none;
        margin: 0px 1px;
        font-weight: bold;
        }

    .page a:hover
        {
        background: #cccccc;
        border: 1px solid #666666;
        text-decoration: none;
        }

    .page a.active
        {
        background: #666666;
        border: 1px solid #666666;
        color: #ffffff;
        font-weight: bold;
        }

    .page a.active:hover
        {
        background: #666666;
        }

    .page span
        {
        font-weight:bold;
        padding:0 5px;
        }

Готовый пример

Сохраняем например в файл pager.php и пробуем.

    <?php

    ###########################
    # Author: www.DimaRF.ru #
    ###########################

    $iAllPage = 30;

    $iPage = (int)$_GET['page'];
    if ( $iPage < 1 or $iPage > $iAllPage )
        $iPage = 1;

    $aPage = PageToArray($iPage,$iAllPage,20);

    function PageToArray($pc=1,$pa=10,$pp=15)
        {
        $r = array();
        if ($pa<=$pp)
            {
            for ($i=1;$i<=$pa;$i++)
            $r[$i] = $i;

            } else {

            $b = $pc-floor($pp/2);
            if ( $pp%2==0)
                $b++;
            if ( $b<1 )
                $b = 1;

            if ( $b+$pp > $pa)
                $b = $pa-$pp+1;

            for ($i=1;$i<=$pp;$i++)
                $r[$i] = $b++;

            if ( $r[1]!=1 )
                {
                $r[1] = 1;
                $r[2] = '...';
                }

            if ( $r[$pp]!=$pa )
                {
                $r[$pp] = $pa;
                $r[$pp-1] = '...';
                }
            }

        return $r;
        }

    ?>
    <html>
    <head>
        <title>Pager</title>
        <style type="text/css">
    <!--
    body
        {
        margin: 20px;
        padding: 20px;
        }

    .page a
        {
        padding: 2px 5px;
        font-size: 9pt;
        background: #f7f7f7;
        border: 1px solid #c7c7c7;
        color: #000000;
        text-decoration: none;
        margin: 0px 1px;
        font-weight: bold;
        }

    .page a:hover
        {
        background: #cccccc;
        border: 1px solid #666666;
        text-decoration: none;
        }

    .page a.active
        {
        background: #666666;
        border: 1px solid #666666;
        color: #ffffff;
        font-weight: bold;
        }

    .page a.active:hover
        {
        background: #666666;
        }

    .page span
        {
        font-weight:bold;
        padding:0 5px;
        }
    -->
        </style>
    </head>
    <body>
    <p class="page" align="center">
    <?php
    foreach ($aPage as $one)
        if ( $one == '...' )
            {
            echo '<span>...</span>';
            } else {
            echo '<a href="?page='.$one.'"'.
                ($one==$iPage?'class="active"':'').'>'.$one.'</a>';
            }
    ?>
    </p>
    </body>
    </html>
взято с http://www.dimarf.ru/useful/pager.html

вот мои файлы:
mod_junewsultra.php
Цитировать
<?php
/**
* @package Joomla! 1.5.x
* @author 2008 (c)  Denys Nosov (aka Dutch)
* @author web-site: www.joomla-ua.org
* @copyright This module is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 License.
**/

// no direct access
defined('_JEXEC') or die('Restricted access');

// Include the syndicate functions only once
require_once (dirname(__FILE__).DS.'helper.php');

$list = modJUNewsUltraHelper::getList($params);

if (!count($list)) {
   return;
}

$template = $params->def('template', 'default.php');
$template = str_replace('.php', '', $template);

//READ FULL
$all_in = $params->def('all_in', '0') ;
$link_all_in = trim( $params->get( 'link_all_in', '' ) );
$text_all_in = trim( $params->get( 'text_all_in', 'All in section/category...' ) );
$class_all_in = trim( $params->get( 'class_all_in', 'small' ) );

$layoutpath = JModuleHelper::getLayoutPath('mod_junewsultra', $template );
if( file_exists($layoutpath) ) {
    require($layoutpath);
} else {
    echo JText::_("<strong>Template <span style=\"color: green;\">$template</span> do is not found!</strong><br />Please, upload new template to <em>modules/mod_breakingnews/tmpl</em> folder or select other template from back-end!");
}
if ($all_in==1) {
    echo '<a class="'.$class_all_in.'" href="'.$link_all_in.'">'.$text_all_in.'</a>';
}

?>


image_and_title_in_2column.php
Цитировать
<?php
/**
* @package Joomla! 1.5.x
* @author 2008 (c)  Denys Nosov (aka Dutch)
* @author web-site: www.joomla-ua.org
* @copyright This module is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 License.
**/

// no direct access
defined('_JEXEC') or die('Restricted access');

?>
    <img src="images/line_news.jpg" width="594px" height="4px"/>
<div class="junewsultra<?php echo $params->get('moduleclass_sfx'); ?>">
<?php foreach ($list as $item) :  ?>
   <div class="junews<?php echo $params->get('moduleclass_sfx'); ?>">
        <table width="100%">
            <tr valign="top">
                <td width="450px"><div class="jutitle"><?php echo '<i>'. $item->created . '</i><br />'; ?><span><a href="<?php echo $item->link; ?>"><?php echo $item->text; ?></a></span><br /><div class="jutitle_2"><?php echo $item->introtext; ?></div></div></td>
                <td  align="right"><div class="juimage"><?php echo $item->image; ?></div></td>
            </tr>
        </table>
   </div>
    <img src="images/line_news.jpg" width="594px" height="4px"/>
<?php endforeach; ?>
</div>

Подскажите как соединить код верхнего примера с моими файлами?
« Последнее редактирование: 24.10.2010, 18:34:48 от andrewsis »
*

andrewsis

  • Новичок
  • 2
  • 0 / 0
Буду благодарен любому ответу!  ::)
« Последнее редактирование: 24.10.2010, 18:35:27 от andrewsis »
*

Daniil Solosyatov

  • Осваиваюсь на форуме
  • 37
  • 0 / 0
ответить не смогу, но имею другой вопрос: как новости на главной странице выводить?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вывод модуля средствами php с привязкой к пунтам меню

Автор Divn

Ответов: 4
Просмотров: 2678
Последний ответ 29.08.2021, 17:02:04
от Divn
Вывод нумерации слайдера Flexslider

Автор timofe

Ответов: 3
Просмотров: 1044
Последний ответ 25.04.2021, 12:07:13
от timofe
Цикличный вывод материалов

Автор loop69

Ответов: 7
Просмотров: 1296
Последний ответ 07.12.2019, 19:00:57
от loop69
Модальное окно вывод в product, косяк

Автор Zlusya

Ответов: 6
Просмотров: 1146
Последний ответ 21.11.2019, 09:24:02
от Zlusya
Как в компоненте JEvents настроить вывод многодневных событий?

Автор sergspb

Ответов: 0
Просмотров: 912
Последний ответ 18.11.2019, 13:26:37
от sergspb