Перейти к содержимому


Фотография
- - - - -

Организовать архив публикаций


Лучший Ответ SmetDenis , 21 April 2015 - 08:01

У функции скромный набор опций
Посмотрите исходник функции, чтобы не гадать как она работает
media\zoo\applications\jbuniversal\framework\models\jbmodel.item.php
 
Чтобы  сделать подобные запросы лучше использовать запросы вида

$this->app->table->item->all(array(
            'conditions' => array(
                // условия
            )
        ));
 
Примеры условий можно найти тут - administrator\components\com_zoo\tables\item.php
К тому же в классе таблицы ($this->app->table->item) есть много готовых методов.

------
Чтобы вывести материал нужно создать рендерер и важно указать пути до шаблонов и стилей.
$renderer = $this->app->renderer->create('item')
    ->addPath(array(
        $this->app->path->path('component.site:'),
        $this->app->zoo->getApplication()->getTemplate()->getPath()
    ));

Далее вызываем рендеринг
echo $renderer->render('item.' . $item->type . '.teaser', compact('item', $item)); // нужно указать путь до шаблона тизера
Перейти к сообщению


  • Закрытая тема Тема закрыта
Сообщений в теме: 12

#1 alexmixaylov

alexmixaylov

Отправлено 18 April 2015 - 08:04

Как то можно сделать чтобы материал после истечения срока публикации

снимался с поиска

и отображался в архиве?

 

Ставлю дату окончания публикации

материал снимается с публикации,

но он больше не доступен с фронта

а мне нужно чтоб его можно было просмотреть (желательно в отдельной категории АРХИВ)

 


  • 0

#2 Cheren-dow

Cheren-dow

Отправлено 18 April 2015 - 10:50

alexmixaylov, такой возможности в Zoo нет. 


  • 0
Изображение
 

#3 alexmixaylov

alexmixaylov

Отправлено 18 April 2015 - 10:56

А как то отобразить материал который автоматически снялся с публикации нельзя?

статусы к них разные, значит они как то диференцируются

 

 1A5QBpbCW4OwAE.png

Это статусы Joomla или  Zoo?


  • 0

#4 Cheren-dow

Cheren-dow

Отправлено 18 April 2015 - 11:02

Это статусы Joomla или  Zoo?

Это статусы Zoo. Вывод снятых с публикации материалов в Zoo я не встречал. Тут или хаки в компонент вносить дописывать новый экшен и добавлять логику вывода снятых с публикации или писать свой контроллер и делать похожие действия. 


  • 1
Изображение
 

#5 programmos

programmos

Отправлено 18 April 2015 - 12:37

Я думаю стоит использовать данный элемент http://forum.jbzoo.c...sperimentalnyj/

 

Как раз он может переносить после окончания даты в другую категорию + можно даже сам счетчик не отображать как говориться уже есть готовый вариант) 

 

Правда конечно, он не снимает с поиска, но по крайней мере часть задачи уже решена не так ли?  ;)


Сообщение отредактировал programmos: 18 April 2015 - 12:38

  • 2

#6 alexmixaylov

alexmixaylov

Отправлено 18 April 2015 - 13:59

Спасибо буду пробовать


  • 0

#7 alexmixaylov

alexmixaylov

Отправлено 18 April 2015 - 15:37

на форуме другом накопал

$template = 'Catalog'; //шаблон приложения
 
$zapp = app::getInstance('zoo');
$renderer = $zapp->renderer->create('item');
$renderer->addPath($zapp->path->path("jbtmpl:$template"));
$renderer->addPath($zapp->path->path('component.site:'));
 
$table = $zapp->table->item;
$db = $table->database;
 
$date = $zapp->date->create();
$now  = $db->Quote($date->toSQL());
$null = $db->Quote($db->getNullDate());
 
$conditions = "publish_down != ".$null." AND publish_down < ".$now;
 
$items = $table->all(compact('conditions'));
 
foreach($items as $item) {
    echo $renderer->render('item.teaser', array('item' => $item));
}

такой вариант

можно его как то использовать?


  • 0

#8 SmetDenis

SmetDenis

Отправлено 20 April 2015 - 06:27

на форуме другом накопал


Этот код лишь выводит материалы, которые соответствуют условию из переменной $conditions

В вашем случае, нужен какой-то скрипт для cron, который будет переодический проверять все материалы и изменять метку "доступен для поиска" и переносить в отдельную категорию. У меня нет готового решения, но если у вас есть силы в основах PHP, то могу подсказать как запустить приложение через консоль.
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#9 alexmixaylov

alexmixaylov

Отправлено 20 April 2015 - 08:46

возникло две проблемы :)

//вывод архива
$parentID = $category->getParent()->id; 
$now = date('Y-m-d G:i:s');
echo $now;

$options = array(
    'category_nested' => true, // выбирать из вложенный категорий
    'published' => 0, // включаю показ неопубликованных
    'order' => 'alpha', // сортировка по дате создания
    'publish_up' => '0000-00-00 00:00:00', //неважно какая дата публикации
    'publish_down' => $now, // здесь пытаюсь ограничить показ до сейчас, но выводятся все без исключения
);

$items = JBModelItem::model()->getList(4, $parentID, 'tour', $options);// вывожу материалы родительской категории и 
                                                                               ограничиваю по нужному мне типу

foreach ($items as $item) {
    //var_dump($renderer->render('item.teaser', array('item' => $item))); //вывести так не получается, ругается на $renderer
    var_dump($item->name);
}

1) 'publish_down' => $now, // здесь пытаюсь ограничить показ до сейчас, но выводятся все без исключения

а мне нужно только те у которых дата завершения публикации истекла

 

2) Вывод результатов не получается сделать

сейчас выборка делается в шаблоне категории

 

вывод материалов нужно делать в шалоне

     Список элементов
или
     Колонка элементов (мне вообще то таблицей это дело нужно вывести)
 
как передать данные туда? 

  • 0

#10 alexmixaylov

alexmixaylov

Отправлено 20 April 2015 - 12:40

в итоге кое что получилось 

не так красиво конечно, но как смог :)

//вывод архива
$parentID = $category->getParent()->id;
$now = strtotime(date('Y-m-d G:i:s'));
$null = strtotime('0000-00-00 00:00:00');

$options = array(
    'category_nested' => true, // выбирать из вложенный категорий
    'published' => 0, // включаю показ неопубликованых
    'order' => 'alpha', // сортировка по ...
);

$items = JBModelItem::model()->getList(4, $parentID, 'tour', $options);

foreach ($items as $item) {
    $down = trim(strtotime($item->publish_down));
    if($now > $down  AND $down >  $null ){
        echo $item->name . ' - '. $item->publish_down . '<br>';
    }
}

лучше было бы отобрать только те элементы которые соответствую условиям,

но так как строк будет немного в категории(до сотни) то можно пренебречь

и проверку делать в цикле вывода

 

Теперь не знаю КАК ВЫВЕСТИ элементы в ТИЗЕР

 


  • 0




Click to return to top of page in style!