Русский English Deutsch Українська Қазақша

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

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

Вы не вошли.

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

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

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

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

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

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

Вне форума

#2 2009-06-01 18: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 18:14:25)

Вне форума

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

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

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

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

Вне форума

#4 2009-06-03 19: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 19:13:24

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

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

Да вот тут)

Вне форума

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

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

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

icedogas пишет:

Да вот тут)

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

Вне форума

#7 2009-06-04 20: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 20:59:35

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

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

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

Вне форума

#9 2009-06-04 21: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 12: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 12:55:25

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

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

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

Вне форума

#12 2009-06-09 20: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 20:56:54

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

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

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

Вне форума

#14 2009-06-09 21: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 22:00:36)

Вне форума

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

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

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

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

Вне форума

#16 2009-06-09 22: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 22:20:34)

Вне форума

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

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

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

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

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

Отредактировано Сокол (2009-06-10 12:18:58)

Вне форума

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

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

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

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

Вне форума

Сейчас в этой теме пользователей: 0, гостей: 1
[Bot] ClaudeBot

Подвал форума

Под управлением FluxBB 1.5.11
Модифицировал Visman

[ Сгенерировано за 0.018 сек, 7 запросов выполнено - Использовано памяти: 604.48 Кбайт (Пик: 641.48 Кбайт) ]