Новости Joomla

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

likrion

  • Давно я тут
  • 750
  • 129 / 2
Ctype - узконаправленный элемент для специфичных задач по смене типа элемента , сделан по просьбе трудящихся, ...
Для чего он нужен? приводим пример:

Есть новостной портал, все новости в определенной категории идут по порядку по дате хитам и т.п./ но возникает вопрос показывать в модуле новости недели(т.е. только за текущие сутки), но с условием что бы новости старше недели не отображались в модуле, но также были опубликованы и никуда не девались из новостной категории zoo.

к сожалению стандартными средствами этого не сделать , но данное решение думаю многим поможет , к тому же если проявить фантазию то можно найти куда более интересное применение.

Инструкция:

1 Скачиваем элемент и распаковываем его в /media/zoo/elements/.

2 Создаем копию вашего основного типа (к которому будем применять изменение).
Спойлер
[свернуть]

3 переименовываем копию по усмотрению например было "Компания(copy)" стало "Компании_добавление".

Спойлер
[свернуть]

Спойлер
[свернуть]

4 добавляем в переименованную копию итема элемент Ctype и сохраняем, теперь мы имеем 2 абсолютно одинаковых типа с разницей в один элемент


Спойлер
[свернуть]

НЕ ЗАБЫВАЕМ ДОБАВИТЬ  CTYPE  в Шаблон FULL или teaser
Спойлер
[свернуть]


5 создаем новый итем и выбираем тот, что содержит Ctype элемент
Спойлер
[свернуть]

заполняем элемент как обычно а в настройках  Ctype указываем время смены типа и тип элемента на который требуется сменить(для теста выбрали время +10 мин и соответственно основной тип компании)
Спойлер
[свернуть]

сохраняем... и смотрим в базу

Спойлер
[свернуть]

Спойлер
[свернуть]


СПУСТЯ 10 МИН

видим что тип итема "компании_добавление"  сменился на "компания"
Спойлер
[свернуть]

Спойлер
[свернуть]


Настройки для mod_zoo_items

Спойлер
[свернуть]


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


проверенно на Joomla 2.5.7 и zoo 3.0.1
ТРЕБУЕТСЯ php 5.3+

скачать http://likrion.ru/dd/ctype.zip или во вложении


[вложение удалено Администратором]
R331474010295
*

voland

  • Легенда
  • 11030
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Любопытно.
На Zoo 2.6.5 пойдет?

Стандартный тип на тип от JBZoo сменит?
*

likrion

  • Давно я тут
  • 750
  • 129 / 2
На Zoo 2.6.5 пойдет?

не прверял, но пойти должно т.к. фиксы версий не касались ядра

Стандартный тип на тип от JBZoo сменит?

к сожалению не знаком с jbzoo, но если jbzoo использует zoo для создания типов и структуру базы zoo то однозначно ДА
R331474010295
*

voland

  • Легенда
  • 11030
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
*

likrion

  • Давно я тут
  • 750
  • 129 / 2
например, у нас есть много  новостей, все с разными датами и т.п.
задача - в модуле zoo_items отображать новости не старше 1 месяца.

создаем копию типа новостей и называем ее "новые новости" , добавляем в этот тип элемент и добавляем его в full шаблоне  данного типа.
теперь при создании нового итема выбираем не тип новости, а тип "новые новости" где при редактировании(создании) указываем дату и тип "новости" для изменения в указанное время
в настройках zoo_item  указываем отображение по типам и выбираем тип "новые новости", теперь у нас в новостной категории есть типы "новости" и "новые новости" и все видны пользователям , а модуль  zoo_item отображает только "новые новости", по истечению указанного при редактировании срока тип "новые новости" меняется на "новости" и соответственно перестает отображаться в модуле zoo_item, но в категории где находится данная новость ничего не изменится все новости будут также видны, только новость перестанет быть новой
R331474010295
*

voland

  • Легенда
  • 11030
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
То есть айтем дублируется на новый тип?

Я уж подумал на радостях, что меняется типа image например на jb_image итп

Блин, надо что-то с терминологией делать.
*

likrion

  • Давно я тут
  • 750
  • 129 / 2
Я уж подумал на радостях, что меняется типа image например на jb_image итп

в принципе по аналогии не сложно и такое организовать... но как нибудь попозже
R331474010295
*

stasyansky

  • Захожу иногда
  • 225
  • 22 / 0
а можно каким-либо образом модифицировать элемент так, чтобы дата заполнялась автоматически, но с поправкой +36 часов от текущего времени?
*

likrion

  • Давно я тут
  • 750
  • 129 / 2
да вполне
R331474010295
*

stasyansky

  • Захожу иногда
  • 225
  • 22 / 0
да вполне

ожидал любого ответа, ну вот чтобы так)))
подскажите, что где прописать для достижения результата?
*

likrion

  • Давно я тут
  • 750
  • 129 / 2
ожидал любого ответа, ну вот чтобы так)))
подскажите, что где прописать для достижения результата?

в вашем случае media/zoo/elements/ctype/ctype.php

будет выглядеть   так

Спойлер
[свернуть]


а media/zoo/elements/ctype/tmpl/edit.php

так

Спойлер
[свернуть]

в результате TYPE итема будет изменяться через 36 часов после его публикации
R331474010295
*

stasyansky

  • Захожу иногда
  • 225
  • 22 / 0
спасибо

если я все правильно понял, то в строке
strtotime("+36 hour", strtotime($this->_item->publish_up));
"+36 hour" можно заменить на "+2 day" ?

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

stasyansky

  • Захожу иногда
  • 225
  • 22 / 0
это что?

Warning: time_sleep_until() [function.time-sleep-until]: Sleep until to time is less than current time
*

stasyansky

  • Захожу иногда
  • 225
  • 22 / 0
*

stasyansky

  • Захожу иногда
  • 225
  • 22 / 0
это что?

Warning: time_sleep_until() [function.time-sleep-until]: Sleep until to time is less than current time

вобщем ясно. моя версия php не много старше. как заставить работать элемент? на что заменить time-sleep-until?

и по вопросу: выбор типа - значение по умолчанию.
*

likrion

  • Давно я тут
  • 750
  • 129 / 2
попробуй так

 media/zoo/elements/ctype/ctype.php

Спойлер
[свернуть]
R331474010295
*

stasyansky

  • Захожу иногда
  • 225
  • 22 / 0
Parse error: syntax error, unexpected T_IF, expecting T_FUNCTION in ctype.php on line 21

Спойлер
[свернуть]
*

likrion

  • Давно я тут
  • 750
  • 129 / 2
Спойлер
[свернуть]
R331474010295
*

verstalshik

  • Завсегдатай
  • 1754
  • 95 / 1
а как меняется? на какой-то ПЕРИОД или так и остается элемент измененный?
❶ НЕ СПРАВЛЯЕШЬСЯ САМ???  Поможем тут...  ❷ Калькулятор доставки - ЗАКАЖИ!!!...  ❸ Каталог компаний - ЖМИ!!!...  ❹ НОВИЧКИ! ВСЕ сюда! Первая консультация БЕСПЛАТНО!!
*

fiction13

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
  • Дмитрий
А как сделать, чтобы не менялся тип элемента, а итем снимался с публикации спустя определенное время? (месяц допустим)
*

fiction13

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
  • Дмитрий
Правильно ли я думаю?

ctype.php:
Код
<?php
defined('_JEXEC') or die('Restricted access');
class Elementctype extends Element {

public function hasValue($params = array()) {
return true;
}

        public function edit() {
        if ($layout = $this->getLayout('edit.php')) {
            return $this->renderLayout($layout,
                array(
                    'element' => $this->identifier,
                )
            );
        }
        return null;
}

public function render($params = array()) {

$db        = $this->app->database;
                $itemid   = $this->_item->id;
                $future   = strtotime("+30 days", strtotime($this->_item->publish_up));
                $cdate    = date('Y-m-d H:i:s', $future);

                $sql= "UPDATE   #__zoo_item
                         SET        #__zoo_item.publish_down = '$cdate'
                         WHERE    #__zoo_item.id = $itemid ";

                $db->query($sql);


        return null;
      }

       
}
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Элемент Image ( значение по дефолту)

Автор G300

Ответов: 22
Просмотров: 4572
Последний ответ 02.12.2020, 12:14:39
от vasmed
[Элемент] Calcage - показ возраста в годах

Автор likrion

Ответов: 20
Просмотров: 4176
Последний ответ 13.06.2019, 22:08:39
от Oliska76
[Элемент] Glink Ссылка кнопка

Автор likrion

Ответов: 15
Просмотров: 5803
Последний ответ 01.02.2016, 11:14:24
от likrion
[Элемент] archiv - перенос элемента в архивную категорию по окончанию публикации( и ее продление )

Автор likrion

Ответов: 37
Просмотров: 5796
Последний ответ 22.10.2015, 08:13:12
от nick71
[Элемент] Snippet - Произвольный HTML Javascript код

Автор likrion

Ответов: 15
Просмотров: 5071
Последний ответ 07.04.2015, 08:39:34
от likrion