Next Generation CMS :: Форум поддержки

Заинтересовала наша система? Тогда этот форум для Вас!

Вы не зашли.

#1 2009-05-31 21:09:20

Сокол
Участник
Откуда Красноярск
Зарегистрирован: 2009-05-23
Сообщений: 227
Рейтинг :   
Сайт

Вывод блоков новостей по категориям

Подскажите люди добрые чайнику в программинге smile

Ситуация: имеется сайт с шаблоном из четырёх блоков новостей на главной, несколькими категориями (например - 10), и в каждой категории несколько новостей.
Задача: сделать вывод последних новостей из одной категории в одном блоке (2-2, 3-3, 4-4).
При этом - страница новости должна выводиться в обычном виде.

Здесь: http://www.ngcms.ru/forum/viewtopic.php?id=48 как-то сложновато описано. Хотелось бы пример, и попроще smile

Не в сети

#2 2009-06-01 19:09:33

RocketBoy
Участник
Откуда Калининград
Зарегистрирован: 2008-10-14
Сообщений: 552
Рейтинг :   27 
Сайт

Re: Вывод блоков новостей по категориям

В lastnews.php

$template['vars']['plugin_lastnews_1'] = plugin_lastnewsGenerator($orderBy = '', $categories = array (1), $overrideParams = array('number' => 10));
$template['vars']['plugin_lastnews_2'] = plugin_lastnewsGenerator($orderBy = '', $categories = array (2), $overrideParams = array('number' => 10));
$template['vars']['plugin_lastnews_3'] = plugin_lastnewsGenerator($orderBy = '', $categories = array (3), $overrideParams = array('number' => 10));
$template['vars']['plugin_lastnews_4'] = plugin_lastnewsGenerator($orderBy = '', $categories = array (4), $overrideParams = array('number' => 10));

В main.tpl Это пример, вставишь в нужные блоки

<div>{plugin_lastnews_1}</div>
<div>{plugin_lastnews_2}</div>
<div>{plugin_lastnews_3}</div>
<div>{plugin_lastnews_4}</div>

Будет 4 блока в которых по 10 последних новостей из категорий 1,2,3,4. Ну и шаблон плагина lastnews поправь под себя

Изменено RocketBoy (2009-06-01 19:14:25)

Не в сети

#3 2009-06-03 18:37:47

Сокол
Участник
Откуда Красноярск
Зарегистрирован: 2009-05-23
Сообщений: 227
Рейтинг :   
Сайт

Re: Вывод блоков новостей по категориям

Ещё вопрос:
а возможно ли сделать так, чтобы в блоках новостей выводились например 20 последних новостей (по 5 в каждом блоке) из 20ти категорий?
То есть, из каждой категории 1 последняя новость. Или 20 последних записей каждого автора.
Это окончательный вариант того, что мне нужно. и я пока ищу сиэмэску, на которой это можно реально сделать.
Буду благодарен за помощь в этом вопросе!

Не в сети

#4 2009-06-03 20:20:47

insider
Участник
Зарегистрирован: 2009-01-25
Сообщений: 229
Рейтинг :   35 
Сайт

Re: Вывод блоков новостей по категориям

То есть, из каждой категории 1 последняя новость.

Если правильно понял, то

function plugin_lastnews(){
	global $catz, $template;
	$template['vars']['plugin_lastnews_everycat'] = '';
	foreach ($catz as $cat)
	{
		$template['vars']['plugin_lastnews_everycat'] .= plugin_lastnewsGenerator('', array($cat['id']), array('number' => 1));
	}
}

Сделает 1 блок {plugin_lastnews_everycat}, в котором содержится по одной последней новости из каждой категории

Не в сети

#5 2009-06-04 20:13:24

icedogas
Участник
Откуда Москва
Зарегистрирован: 2009-02-08
Сообщений: 318
Рейтинг :   
Сайт

Re: Вывод блоков новостей по категориям

Да вот тут)

Не в сети

#6 2009-06-04 21:34:10

Сокол
Участник
Откуда Красноярск
Зарегистрирован: 2009-05-23
Сообщений: 227
Рейтинг :   
Сайт

Re: Вывод блоков новостей по категориям

icedogas пишет:

Да вот тут)

просмотрел - и что там есть по теме вопроса?
на мой взгляд - ничего.

Не в сети

#7 2009-06-04 21:36:57

Сокол
Участник
Откуда Красноярск
Зарегистрирован: 2009-05-23
Сообщений: 227
Рейтинг :   
Сайт

Re: Вывод блоков новостей по категориям

insider пишет:

То есть, из каждой категории 1 последняя новость.

Если правильно понял, то

function plugin_lastnews(){
	global $catz, $template;
	$template['vars']['plugin_lastnews_everycat'] = '';
	foreach ($catz as $cat)
	{
		$template['vars']['plugin_lastnews_everycat'] .= plugin_lastnewsGenerator('', array($cat['id']), array('number' => 1));
	}
}

Сделает 1 блок {plugin_lastnews_everycat}, в котором содержится по одной последней новости из каждой категории

а как сделать 4, или хотя-бы 2 блока?
кстати, код этот куда прописывать?

Не в сети

#8 2009-06-04 21:59:35

icedogas
Участник
Откуда Москва
Зарегистрирован: 2009-02-08
Сообщений: 318
Рейтинг :   
Сайт

Re: Вывод блоков новостей по категориям

Не в ту тему написал))

Не в сети

#9 2009-06-04 22:19:07

insider
Участник
Зарегистрирован: 2009-01-25
Сообщений: 229
Рейтинг :   35 
Сайт

Re: Вывод блоков новостей по категориям

а как сделать 4, или хотя-бы 2 блока?

function plugin_lastnews(){
    global $catz, $template;

    $catz_per_block = 5; // кол-во категорий в одном блоке

    $i = 0;
    foreach ($catz as $cat)
    {
        if ($i == 0 || $j >= $catz_per_block)
        {
            $j = 0;
            $i++;
            $template['vars']['plugin_lastnews_everycat_{$i}'] = '';
        }
        $template['vars']['plugin_lastnews_everycat_{$i}'] .= plugin_lastnewsGenerator('', array($cat['id']), array('number' => 1));
        $j++;
    }
}

В итоге получатся переменные:

{plugin_lastnews_everycat_1}
{plugin_lastnews_everycat_2}
...
{plugin_lastnews_everycat_N}

Где N -- номер блока[hr /]

кстати, код этот куда прописывать?

lastnews.php, ф-ию plugin_lastnews() заменить целиком на приведенную

Не в сети

#10 2009-06-05 13:45:45

Сокол
Участник
Откуда Красноярск
Зарегистрирован: 2009-05-23
Сообщений: 227
Рейтинг :   
Сайт

Re: Вывод блоков новостей по категориям

я правильно понял?

В lastnews.php пишу:

$template['vars']['plugin_lastnews_1'] = plugin_lastnewsGenerator($orderBy = '', $categories = array (1), $overrideParams = array('number' => 10));
$template['vars']['plugin_lastnews_2'] = plugin_lastnewsGenerator($orderBy = '', $categories = array (2), $overrideParams = array('number' => 10));
$template['vars']['plugin_lastnews_3'] = plugin_lastnewsGenerator($orderBy = '', $categories = array (3), $overrideParams = array('number' => 10));
$template['vars']['plugin_lastnews_4'] = plugin_lastnewsGenerator($orderBy = '', $categories = array (4), $overrideParams = array('number' => 10));

+

    global $catz, $template;

    $catz_per_block = 5; // кол-во категорий в одном блоке

    $i = 0;
    foreach ($catz as $cat)
    {
        if ($i == 0 || $j >= $catz_per_block)
        {
            $j = 0;
            $i++;
            $template['vars']['plugin_lastnews_everycat_{$i}'] = '';
        }
        $template['vars']['plugin_lastnews_everycat_{$i}'] .= plugin_lastnewsGenerator('', array($cat['id']), array('number' => 1));
        $j++;
    }
}

В main.tpl:

<div>{plugin_lastnews_1}</div>
<div>{plugin_lastnews_2}</div>
<div>{plugin_lastnews_3}</div>
<div>{plugin_lastnews_4}</div>

что ещё нужно будет настроить?

Не в сети

#11 2009-06-05 13:55:25

insider
Участник
Зарегистрирован: 2009-01-25
Сообщений: 229
Рейтинг :   35 
Сайт

Re: Вывод блоков новостей по категориям

Первое зачем?
А что вставить в main.tpl я писал в предыдущем посте

Не в сети

#12 2009-06-09 21:53:39

Сокол
Участник
Откуда Красноярск
Зарегистрирован: 2009-05-23
Сообщений: 227
Рейтинг :   
Сайт

Re: Вывод блоков новостей по категориям

insider пишет:

... В итоге получатся переменные:

{plugin_lastnews_everycat_1}
{plugin_lastnews_everycat_2}
...
{plugin_lastnews_everycat_N}

Где N -- номер блока[hr /]

Основной код в плагин вставил.
Что делать с этими переменными?

Не в сети

#13 2009-06-09 21:56:54

insider
Участник
Зарегистрирован: 2009-01-25
Сообщений: 229
Рейтинг :   35 
Сайт

Re: Вывод блоков новостей по категориям

В шаблон вставить, в ранее размеченные блоки новостей

Не в сети

#14 2009-06-09 22:56:08

Сокол
Участник
Откуда Красноярск
Зарегистрирован: 2009-05-23
Сообщений: 227
Рейтинг :   
Сайт

Re: Вывод блоков новостей по категориям

insider пишет:

В шаблон вставить, в ранее размеченные блоки новостей

вставил в шаблон main.tpl, создал несколько новостей - заголовки не выводятся sad
выводятся только блоки.


блоки:

<div id="novosti">
				<div id="n_1">
				<h2>А</h2>
				<ul class="sidemenu">
				{plugin_lastnews_everycat_1}
                </ul>
			    </div>
			    <div id="n_2">
			    <h2>Б</h2>
				<ul class="sidemenu">
				{plugin_lastnews_everycat_2}
				</ul>
			    </div>
			    <div id="n_3">
				<h2>В</h2>
				<ul class="sidemenu">
				{plugin_lastnews_everycat_3}
				</ul>
			    </div>
			    <div id="n_4">
				<h2>Г</h2>
				<ul class="sidemenu">
				{plugin_lastnews_everycat_4}
				</ul>
			</div>
	</div>

что я мог не так сделать?

Изменено Сокол (2009-06-09 23:00:36)

Не в сети

#15 2009-06-09 23:08:24

Сокол
Участник
Откуда Красноярск
Зарегистрирован: 2009-05-23
Сообщений: 227
Рейтинг :   
Сайт

Re: Вывод блоков новостей по категориям

в шаблоне плагина что-то менять нужно?

Не в сети

#16 2009-06-09 23:18:40

insider
Участник
Зарегистрирован: 2009-01-25
Сообщений: 229
Рейтинг :   35 
Сайт

Re: Вывод блоков новостей по категориям

Немного поправил

function plugin_lastnews(){
    global $catz, $template;

    $catz_per_block = 5; // кол-во категорий в одном блоке

    $i = 0;
    $j = 0;
    foreach ($catz as $cat)
    {
        if ($i == 0 || $j >= $catz_per_block)
        {
            $j = 0;
            $i++;
            $template['vars']["lastnews_everycat_{$i}"] = '';
        }
        $template['vars']["lastnews_everycat_{$i}"] .= plugin_lastnewsGenerator('', array($cat['id']), array('number' => 1));
        $j++;
    }
}

Переменные будут

{lastnews_everycat_1}
{lastnews_everycat_2}
...
{lastnews_everycat_N}

И еще, надо в lastnews.php найти

	if (intval($overrideParams['number']) <= 1) {

И заменить на

	if (intval($overrideParams['number']) < 1) {

Для работоспособности, в шаблоне плагина что-либо менять не обязательно

Изменено insider (2009-06-09 23:20:34)

Не в сети

#17 2009-06-10 13:17:20

Сокол
Участник
Откуда Красноярск
Зарегистрирован: 2009-05-23
Сообщений: 227
Рейтинг :   
Сайт

Re: Вывод блоков новостей по категориям

Урааа! получилось! cool
Спасибо огромное insider!!!

я так понял, что новости выводятся в блоках - в порядке добавления?
а как сделать так, чтобы закрепить за каждым блоком одну родительскую категорию?
при этом - новости я размещу в дочерних категориях.

Изменено Сокол (2009-06-10 13:18:58)

Не в сети

#18 2009-06-10 14:11:49

insider
Участник
Зарегистрирован: 2009-01-25
Сообщений: 229
Рейтинг :   35 
Сайт

Re: Вывод блоков новостей по категориям

Порядок вывода категорий можно изменить в админке, "Позиция" в Управлении категориями

Не в сети

Подвал раздела

Работает на FluxBB