Лучший Ответ SmetDenis , 14 June 2016 - 06:37
Нужно сделать так.
} else {
$from .= ' LEFT JOIN ' . ZOO_TABLE_TAG . ' AS tTag ON a.id = tTag.item_id';
}
Перейти к сообщению
Лучший Ответ SmetDenis , 14 June 2016 - 06:37
Нужно сделать так.
} else {
$from .= ' LEFT JOIN ' . ZOO_TABLE_TAG . ' AS tTag ON a.id = tTag.item_id';
}
Перейти к сообщению
Отправлено 21 March 2016 - 15:15
Всем привет!
Вывел доп. столбец в админке по publish_up - но как задать по умолчанию сортировку по нему, а не по date не пойму. Есть идеи?

Правил: administration\....\com_zoo\item\default.php
JBZoo чат /
Разработка Joomla расширений и т.д.! / Рекомендую хостинг Joomla
Joomla расширение для Яндекс Турбо и Яндекс Дзен - помощь в настройке
Отправлено 21 March 2016 - 18:27
и существует ли сортировка по тегам? попробовал - фаталку получил) a.tags
Сделал просто:
<?php $tagsmas = $row->getTags();
if (isset($tagsmas[0])) {
echo "<center><img src='/administrator/components/com_zoo/assets/images/tick.png' width='16' height='16' border='0' alt='Да'></center>";
} else {
}
?>
можно ли сортировать или нет?
Сообщение отредактировал CB9TOIIIA: 22 March 2016 - 09:35
JBZoo чат /
Разработка Joomla расширений и т.д.! / Рекомендую хостинг Joomla
Joomla расширение для Яндекс Турбо и Яндекс Дзен - помощь в настройке
Отправлено 22 March 2016 - 14:01
$from .= ' LEFT JOIN ' . ZOO_TABLE_TAG . ' AS tag ON a.id = tag.item_id';Соответственно колонка для сортировки должна tag.name (имя тега)
— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.
Отправлено 11 June 2016 - 09:21
Что-то никак.
Пробовал так:
default.php
<th class="tags" style="width:30px;">
<?php //echo "<center> Теги </center>";
echo $this->app->html->_('grid.sort', 'Tags', 'tTag.item_id', @$this->lists['order_Dir'], @$this->lists['order']);
?>
<td class="tags">
<?php $tagsmas = $row->getTags();
if (isset($tagsmas[0])) {
echo "<center><img src='/administrator/components/com_zoo/assets/images/tick.png' width='16' height='16' border='0' alt='Да'></center>";
} else {
}
?>
</td>
item.php
<?php
/**
* @package com_zoo
* @author YOOtheme http://www.yootheme.com
* @copyright Copyright (C) YOOtheme GmbH
* @license http://www.gnu.org/licenses/gpl.html GNU/GPL
*/
/*
Class: ItemController
The controller class for item
*/
class ItemController extends AppController {
public $application;
const MAX_MOST_USED_TAGS = 8;
public function __construct($default = array()) {
parent::__construct($default);
// set table
$this->table = $this->app->table->item;
// get application
$this->application = $this->app->zoo->getApplication();
// set base url
$this->baseurl = $this->app->link(array('controller' => $this->controller), false);
// set user
$this->user = $this->app->user->get();
// register tasks
$this->registerTask('element', 'display');
$this->registerTask('apply', 'save');
$this->registerTask('save2new', 'save');
}
public function display($cachable = false, $urlparams = false) {
// get app from Request (currently used in zooapplication element)
if ($id = $this->app->request->getInt('app_id')) {
$this->application = $this->app->table->application->get($id);
}
// get database
$this->db = $this->app->database;
// set toolbar items
$canCreate = false;
$canDelete = false;
$canEditState = false;
foreach ($this->application->getTypes() as $type) {
if ($type->canCreate()) {
$canCreate = true;
}
if ($type->canDelete()) {
$canDelete = true;
}
if ($type->canEditState()) {
$canEditState = true;
}
}
$this->app->system->application->JComponentTitle = $this->application->getToolbarTitle(JText::_('Items'));
if ($canCreate) {
$this->app->toolbar->addNew();
}
$this->app->toolbar->editList();
if ($canEditState) {
$this->app->toolbar->publishList();
$this->app->toolbar->unpublishList();
}
if ($this->application->canManageFrontpage()) {
$this->app->toolbar->custom('togglefrontpage', 'checkin', 'checkin', 'Toggle Frontpage', true);
}
if ($canCreate) {
$this->app->toolbar->custom('docopy', 'copy.png', 'copy_f2.png', 'Copy');
}
if ($canDelete) {
$this->app->toolbar->deleteList();
}
$this->app->zoo->toolbarHelp();
$this->app->html->_('behavior.tooltip');
// get request vars
$this->filter_item = $this->app->request->getInt('item_filter', 0);
$this->type_filter = $this->app->request->get('type_filter', 'array', array());
$state_prefix = $this->option.'_'.$this->application->id.'.'.($this->getTask() == 'element' ? 'element' : 'item').'.';
$filter_order = $this->app->system->application->getUserStateFromRequest($state_prefix.'filter_order', 'filter_order', 'a.created', 'cmd');
$filter_order_Dir = $this->app->system->application->getUserStateFromRequest($state_prefix.'filter_order_Dir', 'filter_order_Dir', 'desc', 'word');
$filter_category_id = $this->app->system->application->getUserStateFromRequest($state_prefix.'filter_category_id', 'filter_category_id', '-1', 'string');
$limit = $this->app->system->application->getUserStateFromRequest('global.list.limit', 'limit', $this->app->system->config->get('list_limit'), 'int');
$limitstart = $this->app->system->application->getUserStateFromRequest($state_prefix.'limitstart', 'limitstart', 0, 'int');
$filter_type = $this->app->system->application->getUserStateFromRequest($state_prefix.'filter_type', 'filter_type', '', 'string');
$filter_author_id = $this->app->system->application->getUserStateFromRequest($state_prefix.'filter_author_id', 'filter_author_id', 0, 'int');
$search = $this->app->system->application->getUserStateFromRequest($state_prefix.'search', 'search', '', 'string');
$tags = $this->app->system->application->getUserStateFromRequest($state_prefix.'tTag.item_id', 'tags', '', 'string');
$search = $this->app->string->strtolower($search);
// is filtered ?
$this->is_filtered = $filter_category_id <> '-1' || !empty($filter_type) || !empty($filter_author_id) || !empty($search);
$this->users = $this->table->getUsers($this->application->id);
$this->groups = $this->app->zoo->getGroups();
// select
$select = 'a.*, EXISTS (SELECT true FROM '.ZOO_TABLE_CATEGORY_ITEM.' WHERE item_id = a.id AND category_id = 0) as frontpage';
// get from
$from = $this->table->name.' AS a';
// get data from the table
$where = array();
// application filter
$where[] = 'a.application_id = ' . (int) $this->application->id;
// category filter
if ($filter_category_id === '') {
$from .= ' LEFT JOIN '.ZOO_TABLE_CATEGORY_ITEM.' AS ci ON a.id = ci.item_id';
$where[] = 'ci.item_id IS NULL';
} else if ($filter_category_id > -1) {
$from .= ' LEFT JOIN '.ZOO_TABLE_CATEGORY_ITEM.' AS ci ON a.id = ci.item_id';
$where[] = 'ci.category_id = ' . (int) $filter_category_id;
}
// type filter
if (!empty($this->type_filter)) {
$where[] = 'a.type IN ("' . implode('", "', $this->type_filter) . '")';
} else if (!empty($filter_type)) {
$where[] = 'a.type = "' . (string) $filter_type . '"';
}
// item filter
if ($this->filter_item > 0) {
$where[] = 'a.id != ' . (int) $this->filter_item;
}
// author filter
if ($filter_author_id > 0) {
$where[] = 'a.created_by = ' . (int) $filter_author_id;
}
// if ($search) {
// $from .= ' LEFT JOIN '.ZOO_TABLE_TAG.' AS t ON a.id = t.item_id';
// $where[] = '(LOWER(a.name) LIKE '.$this->db->Quote('%'.$this->db->escape($search, true).'%', false)
// . ' OR LOWER(t.name) LIKE '.$this->db->Quote('%'.$this->db->escape($search, true).'%', false)
// . ' OR LOWER(a.alias) LIKE '.$this->db->Quote('%'.$this->db->escape($search, true).'%', false) . ')';
// }
if ($search) {
$searchData = explode(' ', $search);
$searchWhere = array();
$from .= ' LEFT JOIN ' . ZOO_TABLE_SEARCH . ' AS s ON a.id = s.item_id';
$from .= ' LEFT JOIN ' . ZOO_TABLE_TAG . ' AS tTag ON tItem.id = tTag.item_id';
foreach ($searchData as $searchWord) {
$searchWord = JString::trim($searchWord);
$searchWhere[] = implode(' OR ', array(
// 'LOWER(a.name) REGEXP ' . $this->db->Quote('^' . $this->db->escape($searchWord, true) . '', false),
// 'LOWER(a.name) REGEXP ' . $this->db->Quote('' . $this->db->escape($searchWord, true) . '$', false),
// 'LOWER(a.name) REGEXP ' . $this->db->Quote(' ' . $this->db->escape($searchWord, true) . '', false),
// 'LOWER(a.name) REGEXP ' . $this->db->Quote('' . $this->db->escape($searchWord, true) . ' ', false),
'LOWER(a.name) REGEXP ' . $this->db->Quote('[[:<:]]' . $this->db->escape($searchWord, true) . '[[:>:]]', false),
'LOWER(a.name) LIKE '.$this->db->Quote('%'.$this->db->escape($search, true).'%', false)
));
}
$where[] = '((' . implode(') AND (', $searchWhere) . '))';
}
$options = array(
'select' => 'a.id',
'from' => $from,
'conditions' => array(implode(' AND ', $where)),
'group' => 'a.id');
$count = $this->table->count($options);
$options['select'] = $select;
$options['order'] = $filter_order.' '.$filter_order_Dir;
// in case limit has been changed, adjust limitstart accordingly
$limitstart = ($limit != 0 ? (floor($limitstart / $limit) * $limit) : 0);
$limitstart = $limitstart > $count ? floor($count / $limit) * $limit : $limitstart;
$this->items = $this->table->all($limit > 0 ? array_merge($options, array('offset' => $limitstart, 'limit' => $limit)) : $options);
$this->items = array_merge($this->items);
$this->pagination = $this->app->pagination->create($count, $limitstart, $limit);
// category select
$options = array();
$options[] = $this->app->html->_('select.option', '-1', '- ' . JText::_('Select Category') . ' -');
$options[] = $this->app->html->_('select.option', '', '- ' . JText::_('uncategorized') . ' -');
$options[] = $this->app->html->_('select.option', '0', '- '.JText::_('Frontpage'));
$this->lists['select_category'] = $this->app->html->_('zoo.categorylist', $this->application, $options, 'filter_category_id', 'class="inputbox auto-submit"', 'value', 'text', $filter_category_id);
// type select
$options = array($this->app->html->_('select.option', '0', '- '.JText::_('Select Type').' -'));
$this->lists['select_type'] = $this->app->html->_('zoo.typelist', $this->application, $options, 'filter_type', 'class="inputbox auto-submit"', 'value', 'text', $filter_type, false, false, $this->type_filter);
// author select
$options = array($this->app->html->_('select.option', '0', '- '.JText::_('Select Author').' -'));
$this->lists['select_author'] = $this->app->html->_('zoo.itemauthorlist', $options, 'filter_author_id', 'class="inputbox auto-submit"', 'value', 'text', $filter_author_id);
// table ordering and search filter
$this->lists['order_Dir'] = $filter_order_Dir;
$this->lists['order'] = $filter_order;
$this->lists['search'] = $search;
// display view
$layout = $this->getTask() == 'element' ? 'element' : 'default';
$this->getView()->setLayout($layout)->display();
}
public function loadtags() {
// get request vars
$tag = $this->app->request->getString('tag', '');
echo $this->app->tag->loadTags($this->application->id, $tag);
}
public function add() {
// set toolbar items
$this->app->system->application->JComponentTitle = $this->application->getToolbarTitle(JText::_('Item') .': <small><small>[ '.JText::_('New').' ]</small></small>');
$this->app->toolbar->cancel();
// get types
$this->types = array();
foreach ($this->application->getTypes() as $name => $type) {
if ($this->app->user->canCreate(null, $type->getAssetName())) {
$this->types[$name] = $type;
}
}
// no types available ?
if (count($this->types) == 0) {
$this->app->error->raiseNotice(0, JText::_('Please create a type first.'));
$this->app->system->application->redirect($this->app->link(array('controller' => 'manager', 'task' => 'types', 'group' => $this->application->application_group), false));
}
// only one type ? then skip type selection
if (count($this->types) == 1) {
$type = array_shift($this->types);
$this->app->system->application->redirect($this->baseurl.'&task=edit&type='.$type->id);
}
// display view
$this->getView()->setLayout('add')->display();
}
public function edit() {
// disable menu
$this->app->request->setVar('hidemainmenu', 1);
// get request vars
$cid = $this->app->request->get('cid.0', 'int');
$edit = $cid > 0;
// get item
if ($edit) {
if (!$this->item = $this->app->table->item->get($cid)) {
$this->app->error->raiseError(500, JText::sprintf('Unable to access item with id %s', $cid));
return;
}
// check ACL
if (!$this->item->canEdit()) {
throw new ItemControllerException("Invalid access permissions", 1);
}
} else {
$this->item = $this->app->object->create('Item');
$this->item->application_id = $this->application->id;
$this->item->type = $this->app->request->getVar('type');
$this->item->publish_down = $this->app->database->getNullDate();
$this->item->access = $this->app->joomla->getDefaultAccess();
// check ACL
if (!$this->item->canCreate()) {
throw new ItemControllerException("Invalid access permissions", 1);
}
}
// get item params
$this->params = $this->item->getParams();
// set toolbar items
$this->app->system->application->JComponentTitle = $this->application->getToolbarTitle(JText::_('Item').': '.$this->item->name.' <small><small>[ '.($edit ? JText::_('Edit') : JText::_('New')).' ]</small></small>');
$this->app->toolbar->apply();
$this->app->toolbar->save();
$this->app->toolbar->save2new();
if ($edit) {
$this->app->toolbar->save2copy();
}
$this->app->toolbar->cancel('cancel', $edit ? 'Close' : 'Cancel');
$this->app->zoo->toolbarHelp();
// published select
$this->lists['select_published'] = $this->app->html->_('select.booleanlist', 'state', null, $this->item->state);
// published searchable
$this->lists['select_searchable'] = $this->app->html->_('select.booleanlist', 'searchable', null, $this->item->searchable);
// categories select
$related_categories = $this->item->getRelatedCategoryIds();
$this->lists['select_frontpage'] = $this->app->html->_('select.booleanlist', 'frontpage', null, in_array(0, $related_categories));
$this->lists['select_categories'] = count($this->application->getCategoryTree()) > 1 ?
$this->app->html->_('zoo.categorylist', $this->application, array(), 'categories[]', 'size="15" multiple="multiple" data-no_results_text="'.JText::_('No results match0r').'" data-placeholder="'.JText::_('Select Category').'"', 'value', 'text', $related_categories, false, false, 0 ,'<sup>|_</sup> ', '. ', '')
: '<a href="'.$this->app->link(array('controller' => 'category'), false).'" >'.JText::_('Please add categories first').'</a>';
$this->lists['select_primary_category'] = $this->app->html->_('zoo.categorylist', $this->application, array($this->app->html->_('select.option', '', JText::_('COM_ZOO_NONE'))), 'params[primary_category]', 'data-no_results_text="'.JText::_('No results match').'"', 'value', 'text', $this->params->get('config.primary_category'), false, false, 0 ,'<sup>|_</sup> ', '. ', '');
// most used tags
$this->lists['most_used_tags'] = $this->app->table->tag->getAll($this->application->id, null, null, 'items DESC, a.name ASC', null, self::MAX_MOST_USED_TAGS);
// comments enabled select
$this->lists['select_enable_comments'] = $this->app->html->_('select.booleanlist', 'params[enable_comments]', null, $this->params->get('config.enable_comments', 1));
// display view
$this->getView()->setLayout('edit')->display();
}
public function save() {
// check for request forgeries
$this->app->session->checkToken() or jexit('Invalid Token');
// init vars
$now = $this->app->date->create();
$frontpage = $this->app->request->getBool('frontpage', false);
$categories = $this->app->request->get('categories', null);
$details = $this->app->request->get('details', null);
$cid = $this->app->request->get('cid.0', 'int');
$tzoffset = $this->app->date->getOffset();
$post = array_merge($this->app->request->get('post:', 'array', array()), $details);
try {
// get item
if ($cid) {
$item = $this->table->get($cid);
} else {
$item = $this->app->object->create('Item');
$item->application_id = $this->application->id;
$item->type = $this->app->request->getVar('type');
}
// Check ACL
if ($cid && !$item->canCreate() || !$cid && !$item->canEdit()) {
throw new ItemControllerException("Invalid access permissions", 1);
}
if (!$item->canEditState()) {
unset($item->state);
}
// bind item data
self::bind($item, $post, array('elements', 'params', 'created_by'));
$created_by = isset($post['created_by']) ? $post['created_by'] : '';
$item->created_by = empty($created_by) ? $this->app->user->get()->id : $created_by == 'NO_CHANGE' ? $item->created_by : $created_by;
$tags = isset($post['tags']) ? $post['tags'] : array();
$item->setTags($tags);
// bind element data
$item->elements = $this->app->data->create();
foreach ($item->getElements() as $id => $element) {
if (isset($post['elements'][$id])) {
$element->bindData($post['elements'][$id]);
} else {
$element->bindData();
}
}
// set alias
if (!strlen(trim($item->alias))) {
$item->alias = $this->app->string->sluggify($item->name);
}
$item->alias = $this->app->alias->item->getUniqueAlias($item->id, $this->app->string->sluggify($item->alias));
// set modified
$item->modified = $now->toSQL();
$item->modified_by = $this->user->get('id');
// set created date
try {
$item->created = $this->app->date->create($item->created, $tzoffset)->toSQL();
} catch (Exception $e) {
$item->created = $this->app->date->create()->toSQL();
}
// set publish up date
try {
$item->publish_up = $this->app->date->create($item->publish_up, $tzoffset)->toSQL();
} catch (Exception $e) {
$item->publish_up = $this->app->date->create()->toSQL();
}
// set publish down date
try {
$item->publish_down = $this->app->date->create($item->publish_down, $tzoffset)->toSQL();
} catch (Exception $e) {
$item->publish_down = $this->app->database->getNullDate();
}
// get primary category
$primary_category = @$post['params']['primary_category'];
if (empty($primary_category) && count($categories)) {
$primary_category = $categories[0];
}
// set params
$item->getParams()
->remove('metadata.')
->remove('template.')
->remove('content.')
->remove('config.')
->set('metadata.', @$post['params']['metadata'])
->set('template.', @$post['params']['template'])
->set('content.', @$post['params']['content'])
->set('config.', @$post['params']['config'])
->set('config.enable_comments', @$post['params']['enable_comments'])
->set('config.primary_category', $primary_category);
// save item
$this->table->save($item);
// make sure categories contain primary category
if (!empty($primary_category) && !in_array($primary_category, $categories)) {
$categories[] = $primary_category;
}
// save category relations
if ($frontpage) {
$categories[] = 0;
}
$this->app->category->saveCategoryItemRelations($item, $categories);
// set redirect message
$msg = JText::_('Item Saved');
} catch (AppException $e) {
// raise notice on exception
$this->app->error->raiseNotice(0, JText::_('Error Saving Item').' ('.$e.')');
$this->_task = 'apply';
$msg = null;
}
$link = $this->baseurl;
switch ($this->getTask()) {
case 'save2copy' :
case 'apply' :
$link .= '&task=edit&type='.$item->type.'&cid[]='.$item->id;
break;
case 'save2new' :
$link .= '&task=add';
break;
}
$this->setRedirect($link, $msg);
}
public function save2copy() {
$this->app->request->set('cid.0', 0)
->set('id', 0)
->set('name', $this->app->request->get('name', 'string').' ('.JText::_('Copy').')');
$this->save();
}
public function docopy() {
// check for request forgeries
$this->app->session->checkToken() or jexit('Invalid Token');
// init vars
$now = $this->app->date->create()->toSQL();
$cid = $this->app->request->get('cid', 'array', array());
if (count($cid) < 1) {
$this->app->error->raiseError(500, JText::_('Select a item to copy'));
}
try {
// copy items
foreach ($cid as $id) {
// get item
$item = $this->table->get($id);
$categories = $item->getRelatedCategoryIds();
// Check ACL
if (!$item->canCreate()) {
continue;
}
// copy item
$item->id = 0; // set id to 0, to force new item
$item->name .= ' ('.JText::_('Copy').')'; // set copied name
$item->alias = $this->app->alias->item->getUniqueAlias($id, $item->alias.'-copy'); // set copied alias
$item->state = 0; // unpublish item
$item->created = $item->modified = $now;
$item->created_by = $item->modified_by = $this->user->get('id');
$item->hits = 0;
// copy tags
$item->setTags($this->app->table->tag->getItemTags($id));
// save copied item/element data
$this->table->save($item);
// save category relations
$this->app->category->saveCategoryItemRelations($item, $categories);
}
// set redirect message
$msg = JText::_('Item Copied');
} catch (AppException $e) {
// raise notice on exception
$this->app->error->raiseNotice(0, JText::_('Error Copying Item').' ('.$e.')');
$msg = null;
}
$this->setRedirect($this->baseurl, $msg);
}
public function remove() {
// check for request forgeries
$this->app->session->checkToken() or jexit('Invalid Token');
// init vars
$cid = $this->app->request->get('cid', 'array', array());
if (count($cid) < 1) {
$this->app->error->raiseError(500, JText::_('Select a item to delete'));
}
try {
// delete items
foreach ($cid as $id) {
$item = $this->table->get($id);
// Check ACL
if (!$item->canDelete()) {
continue;
}
$this->table->delete($item);
}
// set redirect message
$msg = JText::_('Item Deleted');
} catch (AppException $e) {
// raise notice on exception
$this->app->error->raiseWarning(0, JText::_('Error Deleting Item').' ('.$e.')');
$msg = null;
}
$this->setRedirect($this->baseurl, $msg);
}
public function savepriority() {
// check for request forgeries
$this->app->session->checkToken() or jexit('Invalid Token');
// init vars
$msg = JText::_('Order Priority saved');
// init vars
$priority = $this->app->request->get('priority', 'array', array());
try {
// update the priority for items
foreach ($priority as $id => $value) {
$item = $this->table->get((int) $id);
// only update, if changed and ACL is checked
if ($item->canEdit() && $item->priority != $value) {
$item->priority = $value;
$this->table->save($item);
}
}
// set redirect message
$msg = json_encode(array(
'group' => 'info',
'title' => JText::_('Success!'),
'text' => JText::_('Item Priorities Saved')));
} catch (AppException $e) {
// raise error on exception
$msg = json_encode(array(
'group' => 'error',
'title' => JText::_('Error!'),
'text' => JText::_('Error editing item priority').' ('.$e.')'));
}
echo $msg;
}
public function resethits() {
// check for request forgeries
$this->app->session->checkToken() or jexit('Invalid Token');
// init vars
$msg = null;
$cid = $this->app->request->get('cid.0', 'int');
try {
// get item
$item = $this->table->get($cid);
// Check ACL
if (!$item->canEdit()) {
throw new ItemControllerException("Invalid access permissions", 1);
}
// reset hits
if ($item->hits > 0) {
$item->hits = 0;
// save item
$this->table->save($item);
// set redirect message
$msg = JText::_('Item Hits Reseted');
}
} catch (AppException $e) {
// raise notice on exception
$this->app->error->raiseNotice(0, JText::_('Error Reseting Item Hits').' ('.$e.')');
$msg = null;
}
$this->setRedirect($this->baseurl.'&task=edit&cid[]='.$item->id, $msg);
}
public function publish() {
$this->_editState(1);
}
public function unpublish() {
$this->_editState(0);
}
public function makeSearchable() {
$this->_editSearchable(1);
}
public function makeNoneSearchable() {
$this->_editSearchable(0);
}
public function enableComments() {
$this->_editComments(1);
}
public function disableComments() {
$this->_editComments(0);
}
protected function _editState($state) {
// check for request forgeries
$this->app->session->checkToken() or jexit('Invalid Token');
// init vars
$cid = $this->app->request->get('cid', 'array', array());
if (count($cid) < 1) {
$this->app->error->raiseError(500, JText::_('Select an item to edit publish state'));
}
try {
// update item state
foreach ($cid as $id) {
// check ACL
if ($this->table->get($id)->canEditState()) {
$this->table->get($id)->setState($state, true);
}
}
} catch (AppException $e) {
// raise notice on exception
$this->app->error->raiseNotice(0, JText::_('Error editing Item Published State').' ('.$e.')');
}
$this->setRedirect($this->baseurl);
}
protected function _editSearchable($searchable) {
// check for request forgeries
$this->app->session->checkToken() or jexit('Invalid Token');
// init vars
$cid = $this->app->request->get('cid', 'array', array());
if (count($cid) < 1) {
$this->app->error->raiseError(500, JText::_('Select an item to edit searchable state'));
}
try {
// update item searchable
foreach ($cid as $id) {
$item = $this->table->get($id);
// Check ACL
if (!$item->canEdit()) {
continue;
}
$item->searchable = $searchable;
$this->table->save($item);
}
} catch (AppException $e) {
// raise notice on exception
$this->app->error->raiseNotice(0, JText::_('Error editing Item Searchable State').' ('.$e.')');
}
$this->setRedirect($this->baseurl);
}
protected function _editComments($enabled) {
// check for request forgeries
$this->app->session->checkToken() or jexit('Invalid Token');
// init vars
$cid = $this->app->request->get('cid', 'array', array());
if (count($cid) < 1) {
$this->app->error->raiseError(500, JText::_('Select an item to enable/disable comments'));
}
try {
// update item comments
foreach ($cid as $id) {
$item = $this->table->get($id);
// Check ACL
if (!$item->canEdit()) {
continue;
}
$item->params = $item
->getParams()
->set('config.enable_comments', $enabled);
$this->table->save($item);
}
} catch (AppException $e) {
// raise notice on exception
$this->app->error->raiseNotice(0, JText::_('Error enabling/disabling Item Comments').' ('.$e.')');
}
$this->setRedirect($this->baseurl);
}
public function toggleFrontpage() {
// check for request forgeries
$this->app->session->checkToken() or jexit('Invalid Token');
// init vars
$cid = $this->app->request->get('cid', 'array', array());
if (count($cid) < 1) {
$this->app->error->raiseError(500, JText::_('Select an item to toggle item frontpage setting'));
}
try {
// toggle item frontpage
foreach ($cid as $id) {
$item = $this->table->get($id);
// Check ACL
if (!$item->canEdit()) {
continue;
}
$categories = $item->getRelatedCategoryIds();
if (($key = array_search('0', $categories, true)) !== false) {
unset($categories[$key]);
} else {
array_push($categories, '0');
}
$this->app->category->saveCategoryItemRelations($item, $categories);
}
} catch (AppException $e) {
// raise notice on exception
$this->app->error->raiseNotice(0, JText::_('Error toggling item frontpage setting').' ('.$e.')');
}
$this->setRedirect($this->baseurl);
}
public function callElement() {
// get request vars
$element_identifier = $this->app->request->getString('elm_id', '');
$item_id = $this->app->request->getInt('item_id', 0);
$type = $this->app->request->getString('type', '');
$this->method = $this->app->request->getCmd('method', '');
$this->args = $this->app->request->getVar('args', array(), 'default', 'array');
JArrayHelper::toString($this->args);
// load element
if ($item_id) {
$item = $this->table->get($item_id);
} elseif (!empty($type)) {
$item = $this->app->object->create('Item');
$item->application_id = $this->application->id;
$item->type = $type;
} else {
return;
}
// Check ACL
if (!$item->canEdit()) {
return;
}
// execute callback method
if ($element = $item->getElement($element_identifier)) {
echo $element->callback($this->method, $this->args);
}
}
}
/*
Class: ItemControllerException
*/
class ItemControllerException extends AppException {}
$from .= ' LEFT JOIN ' . ZOO_TABLE_TAG . ' AS tTag ON tItem.id = tTag.item_id';
$tags = $this->app->system->application->getUserStateFromRequest($state_prefix.'tTag.item_id', 'tags', '', 'string');
Т.е. надо сделать сортировку - отобразить есть или нет тегов у статей.
JBZoo чат /
Разработка Joomla расширений и т.д.! / Рекомендую хостинг Joomla
Joomla расширение для Яндекс Турбо и Яндекс Дзен - помощь в настройке
Отправлено 11 June 2016 - 16:07
Я думаю тут проблема может в логике... надо проверить не на сам тег, а просто - есть ли у статьи теги или нет и вот по этому правилу - условия.
JBZoo чат /
Разработка Joomla расширений и т.д.! / Рекомендую хостинг Joomla
Joomla расширение для Яндекс Турбо и Яндекс Дзен - помощь в настройке
Отправлено 14 June 2016 - 06:37 Лучший Ответ
Нужно сделать так.
} else {
$from .= ' LEFT JOIN ' . ZOO_TABLE_TAG . ' AS tTag ON a.id = tTag.item_id';
}
— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.