K2 - Во фронтенде показывать Администратору Неопубликованные Категории

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

Nabla

  • Осваиваюсь на форуме
  • ***
  • 26
  • 3
Добрый день.

Раньше помню удавалось Администратору видеть неопубликованные материалы или категории во фронтенде.

Сейчас бьюсь уже несколько часов, меняю права, копаюсь к настройках, но никак не удается сделать Вывод неопубликованных материалов и категорий во фронтенде для Администратора.

Может быть кто-то подскажет куда копать?

Спасибо!

*

step-di

  • Осваиваюсь на форуме
  • ***
  • 79
  • 4
может какие-то настройки и есть для этого в к2 (в настойках категории),
может модуль какой под к2 есть для этого.
можно раздраконить стандартный модуль для к2 (создать копию с другим именем) и доработать его helper.php

но чтобы под свой вкус добавить любой функционал, необязательно для компонента к2
(нужно знать sql и php)

для расширения функционала сайта я обычно использую компонент jumi
он дополнен модулем и плагином
позволяет цеплять пользовательские Php файлы

допустим, публикую в нужном месте модуль jumi (для админов), в параметрах которого указан путь к Php файлу
можно создать отдельную страницу для админов с типом меню jumi
или вставить в материал конструкцию типа {jumi [my.php]}

в самом php файле пишу sql команды для чтения из базы данных нужной информации
в вашем случае список всех материалов и категорий со статусом не опубликовано (2 запроса получится)
через цикл вывожу полученный массив в виде строк таблицы
информацию можно снабдить ссылками на редактор материала (категории)




*

Nabla

  • Осваиваюсь на форуме
  • ***
  • 26
  • 3
может какие-то настройки и есть для этого в к2 (в настойках категории),
может модуль какой под к2 есть для этого.
можно раздраконить стандартный модуль для к2 (создать копию с другим именем) и доработать его helper.php

но чтобы под свой вкус добавить любой функционал, необязательно для компонента к2
(нужно знать sql и php)

для расширения функционала сайта я обычно использую компонент jumi
он дополнен модулем и плагином
позволяет цеплять пользовательские Php файлы

допустим, публикую в нужном месте модуль jumi (для админов), в параметрах которого указан путь к Php файлу
можно создать отдельную страницу для админов с типом меню jumi
или вставить в материал конструкцию типа {jumi [my.php]}

в самом php файле пишу sql команды для чтения из базы данных нужной информации
в вашем случае список всех материалов и категорий со статусом не опубликовано (2 запроса получится)
через цикл вывожу полученный массив в виде строк таблицы
информацию можно снабдить ссылками на редактор материала (категории)

Не, ну это слишком сложно. Видимо просто не включены права на это? но где?

*

step-di

  • Осваиваюсь на форуме
  • ***
  • 79
  • 4
Не, ну это слишком сложно. Видимо просто не включены права на это? но где?

в модуле mod_k2_mytools и mod_k2_content в файлах helper.php
везде в условии WHERE
стоит published=1 and trash=0 (опубликовано и не в корзине)

в самом компоненте в настройках тоже не нашел

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


*

Nabla

  • Осваиваюсь на форуме
  • ***
  • 26
  • 3
в модуле mod_k2_mytools и mod_k2_content в файлах helper.php
везде в условии WHERE
стоит published=1 and trash=0 (опубликовано и не в корзине)

в самом компоненте в настройках тоже не нашел

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



Ну вот я помню, что точно можно. У меня это даже вчера получилось. Но я не обратил на это внимания. Сегодня уже не получается.

*

draff

  • Практически профи
  • *******
  • 2739
  • 169
  • step by step
Редактирование с лицевой стороны включено/разрешено ?

*

Nabla

  • Осваиваюсь на форуме
  • ***
  • 26
  • 3
Редактирование с лицевой стороны включено/разрешено ?

Да. Включено.

*

Septdir

  • Практически профи
  • *******
  • 2162
  • 108
  • JoomlaZen
Видимо плохо помните. Сколько помню k2 ни когда во фроненде не было такого.
Сделать ну надо лезть в \components\com_k2\models\itemlist.php и там добавлять условия на published=1 and trash=0  Недавно поднималась эта тема.
Ну со страницей категории проблем не много можно плагин написать на ивент onK2BeforeSetQuery
код писал на скорую руку так что не обессутье если что
Код: php
function onK2BeforeSetQuery(&$query) {
$app = JFactory::getApplication();
$user = JFactory::getUser();
$userAccessLevel = JAccess::getAuthorisedViewLevels($user->id);
$adminAccessLevel = '4'; // ID админского уровня доступа Joomla
$query_parts=explode('WHERE',$query);
if($app->isSite() && in_array($adminAccessLevel, $userAccessLevel)) {
$db = JFactory::getDBO();
$task = JRequest::getCmd('task');
$view= JRequest::getCmd('view');
$layout= JRequest::getCmd('layout');
if($layout=='category' && $view=='itemlist') {
$query_parts =str_replace('i.published = 1 AND', '',$query_parts);
$query = implode(' WHERE ',$query_parts);
  }  
}
}

Ну а вот под сам итем тут придется в \components\com_k2\views\item\view.html лезть и там этот код обрамлять условием
Код: php
		if (!$item->published || $item->trash)
{
JError::raiseError(404, JText::_('K2_ITEM_NOT_FOUND'));
}

if ($item->publish_up != $nullDate && $item->publish_up > $now)
{
JError::raiseError(404, JText::_('K2_ITEM_NOT_FOUND'));
}

if ($item->publish_down != $nullDate && $item->publish_down < $now)
{
JError::raiseError(404, JText::_('K2_ITEM_NOT_FOUND'));
}

if (!$item->category->published || $item->category->trash)
{
JError::raiseError(404, JText::_('K2_ITEM_NOT_FOUND'));
}

это 114 строчка примерно

Насчет упихать это в плагин хз пока что. если будет время подумаю может и сделаю
« Последнее редактирование: 24.08.2016, 14:45:21 от Septdir »
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
________
Мои Контакты | JoomlaZen

*

step-di

  • Осваиваюсь на форуме
  • ***
  • 79
  • 4
способы, которые влезают в ядро к2, будут работать до поры до времени - до очередного обновления компонента.
Придется после каждого обновления делать хак. Не удобно. Лучше сделать свой модуль или плагин и не париться потом.

*

Septdir

  • Практически профи
  • *******
  • 2162
  • 108
  • JoomlaZen
Придется после каждого обновления делать хак. Не удобно. Лучше сделать свой модуль или плагин и не париться потом.
С плагином пока хз. Если время будет я пропбрую на обмануть item\view.html.php сказав ему что $item->published = 1 но хз.
Вообщем если это реально нужно то я попробую, а так только когда будет время.
А насчет слетит, если править ядро ну k2 не так часто обновляется.
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
________
Мои Контакты | JoomlaZen

*

Nabla

  • Осваиваюсь на форуме
  • ***
  • 26
  • 3
С плагином пока хз. Если время будет я пропбрую на обмануть item\view.html.php сказав ему что $item->published = 1 но хз.
Вообщем если это реально нужно то я попробую, а так только когда будет время.
А насчет слетит, если править ядро ну k2 не так часто обновляется.
Помню я хорошо. Такая возможность в K2 точно есть. Но как реализуется - непонятно.
По поводу плагина - очень было бы замечательно. Мысль следующая - отвечать Администратору на материалы из неопубликованной категории из фронтенда путем комментирования.

*

Septdir

  • Практически профи
  • *******
  • 2162
  • 108
  • JoomlaZen
Помню я хорошо. Такая возможность в K2 точно есть. Но как реализуется - непонятно.
По поводу плагина - очень было бы замечательно. Мысль следующая - отвечать Администратору на материалы из неопубликованной категории из фронтенда путем комментирования.
Да нету там. я же просмотрел все модели и ввьюшки. Нету там переменных для вывода неопубликованных итемов во фроненде. да и не было во всяком за 5-6 лет которые я пользуюсь этим компонентом.

 
Мысль следующая - отвечать Администратору на материалы из неопубликованной категории из фронтенда путем комментирования.
Это из разряда простите что?
« Последнее редактирование: 25.08.2016, 01:55:33 от Septdir »
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
________
Мои Контакты | JoomlaZen

*

Nabla

  • Осваиваюсь на форуме
  • ***
  • 26
  • 3
Да нету там. я же просмотрел все модели и ввьюшки. Нету там переменных для вывода неопубликованных итемов во фроненде. да и не было во всяком за 5-6 лет которые я пользуюсь этим компонентом.

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

А я вот кое-что нашел в файле: /public_html/components/com_k2/templates/default/user.php

Код
			  	<?php if(!$item->published || ($item->publish_up != $this->nullDate && $item->publish_up > $this->now) || ($item->publish_down != $this->nullDate && $item->publish_down < $this->now)): ?>
  <span>
  <sup>
  <?php echo JText::_('K2_UNPUBLISHED'); ?>
  </sup>
  </span>
  <?php endif; ?>
Вроде  как 'K2_UNPUBLISHED' о чем-то говорит?

*

Septdir

  • Практически профи
  • *******
  • 2162
  • 108
  • JoomlaZen
А я вот кое-что нашел в файле: /public_html/components/com_k2/templates/default/user.php
Вроде  как 'K2_UNPUBLISHED' о чем-то говорит?
Это файл мактеа вывода блога автора. суть проста выводить не опубликованные материалы списком. Перейти в него не выйдет без правки вьюшки итема, в шаблоне даже ссылка заблокирована. Это сделано для премодерации чтобы человек видел что его материал добавлен, но еще не опубликован. Кстати редактировать его тоже можно, но не посмотреть.

P.S Что толку я тут распинаюсь. Если вы не можете макет от вьюшки отличить.
« Последнее редактирование: 25.08.2016, 20:42:31 от Septdir »
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
________
Мои Контакты | JoomlaZen

*

Nabla

  • Осваиваюсь на форуме
  • ***
  • 26
  • 3
Это файл мактеа вывода блога автора. суть проста выводить не опубликованные материалы списком. Перейти в него не выйдет без правки вьюшки итема, в шаблоне даже ссылка заблокирована. Это сделано для премодерации чтобы человек видел что его материал добавлен, но еще не опубликован. Кстати редактировать его тоже можно, но не посмотреть.

P.S Что толку я тут распинаюсь. Если вы не можете макет от вьюшки отличить.

Ну так Вы сами говорите, что такое свойство сделано для премодерации и человек может видеть, что его материал добавлен.
Но у меня в K2 это свойство пропало( Не могу никак понять, почему его не видно?

*

Septdir

  • Практически профи
  • *******
  • 2162
  • 108
  • JoomlaZen
Ну так Вы сами говорите, что такое свойство сделано для премодерации и человек может видеть, что его материал добавлен.
Но у меня в K2 это свойство пропало( Не могу никак понять, почему его не видно?
Это сделано только только на странице автора / пользователя / блог пользователя НО НЕ КАТЕГОРИИ . И видеть можно только свои материалы. В моделе \components\com_k2\models\itemlist есть строки
Код: php
if ($task == 'user' && !$user->guest && $user->id == JRequest::getInt('id'))
{
$query .= " WHERE ";
}
else
{
$query .= " WHERE i.published = 1 AND ";
}'))

Значат они следующее если параметр task = user (этот параметр присваиваться типа пунтка мею блог пользоваться) И текущий посетитель(пользователь) не гость И id текущего посетителя(пользователя) совпадает с заданым параметров id (тоже в параметрах). то в запрос в базу идет просто WHERE (то бишь и опубликованные и не опубликованы а дальше по параметрам). В противном случае в запрос идет WHERE i.published = 1 AND (то бишь только опубликованные и дальше по условиям).
Эта функция создана для личного кабинет обычного пользователя. Который к примеру добавил новость и ждет когда модераторы/ администраторы опубликуют ее через панель администратора

То что вы ходите сделать это даже не базовый функционал ибо вам не редактирование нужно а отображение материала для автора и администратора.  Для это надо либо править файлы какие именно я по сути написал, если читать внимательно то это понятно. Либо писать плагин, чем я давиче и займусь, но не уверен что найду подходящий ивент для страницы материала(со всем остальными проблем нет), а без него грош цена такому плагину.
« Последнее редактирование: 25.08.2016, 23:04:02 от Septdir »
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
________
Мои Контакты | JoomlaZen

*

Nabla

  • Осваиваюсь на форуме
  • ***
  • 26
  • 3
Это сделано только только на странице автора / пользователя / блог пользователя НО НЕ КАТЕГОРИИ . И видеть можно только свои материалы. В моделе \components\com_k2\models\itemlist есть строки
Код: php
if ($task == 'user' && !$user->guest && $user->id == JRequest::getInt('id'))
{
$query .= " WHERE ";
}
else
{
$query .= " WHERE i.published = 1 AND ";
}'))

Значат они следующее если параметр task = user (этот параметр присваиваться типа пунтка мею блог пользоваться) И текущий посетитель(пользователь) не гость И id текущего посетителя(пользователя) совпадает с заданым параметров id (тоже в параметрах). то в запрос в базу идет просто WHERE (то бишь и опубликованные и не опубликованы а дальше по параметрам). В противном случае в запрос идет WHERE i.published = 1 AND (то бишь только опубликованные и дальше по условиям).
Эта функция создана для личного кабинет обычного пользователя. Который к примеру добавил новость и ждет когда модераторы/ администраторы опубликуют ее через панель администратора

То что вы ходите сделать это даже не базовый функционал ибо вам не редактирование нужно а отображение материала для автора и администратора.  Для это надо либо править файлы какие именно я по сути написал, если читать внимательно то это понятно. Либо писать плагин, чем я давиче и займусь, но не уверен что найду подходящий ивент для страницы материала(со всем остальными проблем нет), а без него грош цена такому плагину.
Ну вот теперь я наконец-то понял, где я видел, что материал неопубликован. Собственно это и был изначально вопрос - видеть неопубликованные материалы. Я действительно ошибался, администратор сам не видит во фронтенде эти материалы. Видит только юзер.

Не понял, что значит
Цитировать
но не уверен что найду подходящий ивент для страницы материала
?

Еще раз тогда напишите более подробно, какой плагин Вы хотите сделать и какие функции у него будут?

*

Septdir

  • Практически профи
  • *******
  • 2162
  • 108
  • JoomlaZen
Не понял, что значит ?
Ну чтобы это объяснить придется полностью объяснять что такое плагины и как они работают.
Еще раз тогда напишите более подробно, какой плагин Вы хотите сделать и какие функции у него будут?
Значится получилось примерно так (сам плагин во вложениях).
Плагин подновляет выводить во фронтенде не опубликованные и удаленные(те которые в корзине) материалы, материалы из удаленных или не опубликованных категорий на странице категории, а так же позволяет просматривать страницу самого материала (убирает ошибку 404);
В настройках плагина:
  • Access Level - уровень доступа Joomla для просмотра не опубликованных материалов
  • Author - Показывать неопубликованные материалы автору (фактически все материалы автора данной категории, исключая все остальные критерии запроса кроме удаленных)
  • Trashed- Показывать удаленные материалы для п1. и п2
Кроме того добавил несколько перемененных самому итему :
  • unpublished - необуликованный
  • trashed - удаленный
  • unpublish_up - дата публикации еще не настала
  • unpublish_down - дата пуликации истекла
  • category->unpublished  - категорий не опубликована
  • category->trashed  - категория в корзине
Это альфа версия плагина, так что смотрите сами, я его конечно погонял, но всякое может случиться. Демки и подробной документации и авто обновления нет ибо нету времени.
P.S можно еще для материалов по тэги сделать, но не думаю что это нужно.
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
________
Мои Контакты | JoomlaZen

*

Nabla

  • Осваиваюсь на форуме
  • ***
  • 26
  • 3
Ну чтобы это объяснить придется полностью объяснять что такое плагины и как они работают.Значится получилось примерно так (сам плагин во вложениях).
Плагин подновляет выводить во фронтенде не опубликованные и удаленные(те которые в корзине) материалы, материалы из удаленных или не опубликованных категорий на странице категории, а так же позволяет просматривать страницу самого материала (убирает ошибку 404);
В настройках плагина:
  • Access Level - уровень доступа Joomla для просмотра не опубликованных материалов
  • Author - Показывать неопубликованные материалы автору (фактически все материалы автора данной категории, исключая все остальные критерии запроса кроме удаленных)
  • Trashed- Показывать удаленные материалы для п1. и п2
Кроме того добавил несколько перемененных самому итему :
  • unpublished - необуликованный
  • trashed - удаленный
  • unpublish_up - дата публикации еще не настала
  • unpublish_down - дата пуликации истекла
  • category->unpublished  - категорий не опубликована
  • category->trashed  - категория в корзине
Это альфа версия плагина, так что смотрите сами, я его конечно погонял, но всякое может случиться. Демки и подробной документации и авто обновления нет ибо нету времени.
P.S можно еще для материалов по тэги сделать, но не думаю что это нужно.

Крутяк! Я протестил. Действительно показываются неопубликованные материалы (еще бы стили к ним приделать, чтобы они отличались от опубликованных).

---------------------------------------------------------------------------------------------------------------------------------------------------

Хотел Super User-ом зайти по ссылке на неопубликованную категорию - у меня это не получилось сделать: 404 ошибка.

Пожалуйста, попробуйте еще и это доработать. Хотя бы только для Super User-а.

Мысль такая, чтобы Super User мог заходить по ссылкам в неопубликованные категории и заходить в содержащиеся в них материалы.

Я так понимаю, для моих целей нужно плагин немного переделать или создать новый?

! Все материалы у меня на сайте создаются во фронтенде и автоматом опубликованы. Однако одни из них идут в опубликованные категории, другие в неопубликованные. Если же материал идет в опубликованные - то все отлично. Он выводится на сайте. Его все видят и все хорошо. Если же материал идет в неопубликованные категории - то тут хотелось бы, чтобы Super User мог заходить по ссылке на неопубликованную категорию в имеющиеся там материалы.

Сможете такое допилить?
« Последнее редактирование: 26.08.2016, 19:06:46 от Nabla »

*

Septdir

  • Практически профи
  • *******
  • 2162
  • 108
  • JoomlaZen
Крутяк! Я протестил. Действительно показываются неопубликованные материалы (еще бы стили к ним приделать, чтобы они отличались от опубликованных).
Для этого я и добавил переменные к примеру
Код: php
<?php if ($this->item->unpublished): ?>
<?php echo 'UNPUBLISED'?>
<?php endif; ?>
Хотел Super User-ом зайти по ссылке на неопубликованную категорию - у меня это не получилось сделать: 404 ошибка.

Пожалуйста, попробуйте еще и это доработать. Хотя бы только для Super User-а.

Мысль такая, чтобы Super User мог заходить по ссылкам в неопубликованные категории и заходить в содержащиеся в них материалы.

Я так понимаю, для моих целей нужно плагин немного переделать или создать новый?

! Все материалы у меня на сайте создаются во фронтенде и автоматом опубликованы. Однако одни из них идут в опубликованные категории, другие в неопубликованные. Если же материал идет в опубликованные - то все отлично. Он выводится на сайте. Его все видят и все хорошо. Если же материал идет в неопубликованные категории - то тут хотелось бы, чтобы Super User мог заходить по ссылке на неопубликованную категорию в имеющиеся там материалы.

Сможете такое допилить?

Можно даже не пробовать, у к2 такого тригера в ядре нет. Как вариант вы можете сделать так.
Сделать пункт меню k2 категории и в его настройках выбрать две категории. 1. Не опубликованная. 2. Опубликованная(пустая, я всегда создаю категорию загулшка). Ну и пункт сделать с доступом для зарегистрированных к примеру.

или править ядро /components/com_k2/views/itemlist/view.html.php 46 строка закоменить чтобы было так
Код: php
// State check
if (!$category->published || $category->trash)
{
//JError::raiseError(404, JText::_('K2_CATEGORY_NOT_FOUND'));
}

Ну или ждите я хочу один плагин сделать, который работать будет так.
В плагине есть настройки
1. вы выбираете категории.
2. Выбираете что делать снимать с публикации или наоборот публиковать.
3. Только при добавление (да / нет)
Работать будет так после сохранения, сравниваем категория со список настройками и либо публикуем, либо снимаем с публикации.

Итог
При добавлении / сохранении материала в категорию А, он опубликован.
А при добавлении / сохранении в категорию Б, он НЕ опубликован.
« Последнее редактирование: 26.08.2016, 19:46:51 от Septdir »
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
________
Мои Контакты | JoomlaZen

*

Nabla

  • Осваиваюсь на форуме
  • ***
  • 26
  • 3
Для этого я и добавил переменные к примеру
Код: php
<?php if ($this->item->unpublished): ?>
<?php echo 'UNPUBLISED'?>
<?php endif; ?>
Можно даже не пробовать, у к2 такого тригера в ядре нет. Как вариант вы можете сделать так.
Сделать пункт меню k2 категории и в его настройках выбрать две категории. 1. Не опубликованная. 2. Опубликованная(пустая, я всегда создаю категорию загулшка). Ну и пункт сделать с доступом для зарегистрированных к примеру.

или править ядро /components/com_k2/views/itemlist/view.html.php 46 строка закоменить чтобы было так
Код: php
// State check
if (!$category->published || $category->trash)
{
//JError::raiseError(404, JText::_('K2_CATEGORY_NOT_FOUND'));
}

Ну или ждите я хочу один плагин сделать, который работать будет так.
В плагине есть настройки
1. вы выбираете категории.
2. Выбираете что делать снимать с публикации или наоборот публиковать.
3. Только при добавление (да / нет)
Работать будет так после сохранения, сравниваем категория со список настройками и либо публикуем, либо снимаем с публикации.

Итог
При добавлении / сохранении материала в категорию А, он опубликован.
А при добавлении / сохранении в категорию Б, он НЕ опубликован.
Что-то я плохо Вас понимаю(
Для моих целей - что мне нужно сделать? Закомментить одну строчку и все?

*

Septdir

  • Практически профи
  • *******
  • 2162
  • 108
  • JoomlaZen
Для моих целей - что мне нужно сделать? Закомментить одну строчку и все?
Если закоменить то не опубликованную категорию смогут видеть все
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
________
Мои Контакты | JoomlaZen

*

Nabla

  • Осваиваюсь на форуме
  • ***
  • 26
  • 3
Если закоменить то не опубликованную категорию смогут видеть все
Закомментил. Открывается категория, но материалов показывается 0 в ней. Хотя они опубликованы.

*

Septdir

  • Практически профи
  • *******
  • 2162
  • 108
  • JoomlaZen
Закомментил. Открывается категория, но материалов показывается 0 в ней. Хотя они опубликованы.
ну я сделал все что мог. без базового понимания php MySQL mvc и Joomla api, не думаю что кто либо сможет вам это объяснить
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
________
Мои Контакты | JoomlaZen