Форум русской поддержки Joomla!® CMS
04.12.2016, 22:20:09 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Помогите доделать код в модуле для ZOO

 (Прочитано 230 раз)
0 Пользователей и 1 Гость смотрят эту тему.
radiant
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 84



« : 28.07.2016, 23:25:20 »

Создавая модуль, который бы мог вывести из компонента ZOO количество опубликованных материалов, из приложения с ID №1 с несколькими только отдельными типами материалов (например: отель 'hotel', ресторан 'restoran', компания 'company'), а остальные типы материалов не брались бы в подсчет.
Я в PHP особо не силен. Помогите создать правильный запрос к базе данных.
Написал в файле helper.php вот такой вариант, но где указываю типы материалов тут выдает ошибку, а без них все нормально. Помогите пожалуйста кто силен.

Код:
static function getItems($params) {
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('COUNT(id) AS count_items');
$query->from('#__zoo_item');
$query->where('state = 1');
$query->where('application_id = 1');
$query->where('type = hotel');
$query->where('type = restoran');
$query->where('type = company');
$db->setQuery($query);
$items = $db->loadResult();
return $items;
}

как укоротить код тоже не знаю.
К этой теме прикрепил архив с этим модулем.

* mod_zoo_stats.rar (2.14 Кб - загружено 5 раз.)
« Последнее редактирование: 30.07.2016, 12:08:55 от radiant » Записан
voland
Профи
********

Репутация: +487/-86
Offline Offline

Пол: Мужской
Сообщений: 8696


любит наш народ всякое гавно...


« Ответ #1 : 28.07.2016, 23:35:24 »

Может проще на платной основе сделать?
Записан
passer
Живу я здесь
******

Репутация: +69/-3
Offline Offline

Пол: Мужской
Сообщений: 829



« Ответ #2 : 29.07.2016, 12:37:27 »

Так вроде.
Код
$query->where('type = hotel', 'OR');
$query->where('type = restoran', 'OR');
$query->where('type = company');
Записан
radiant
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 84



« Ответ #3 : 29.07.2016, 20:25:53 »

Благодарю за первую поддержку!

Применил ваш вариант, но к сожалению выводит ошибку "Страницы не существует"

и пишет: Unknown column 'hotel' in 'where clause' SQL=SELECT COUNT(id) AS count_items FROM #__zoo_item WHERE state = 1 AND application_id = 1 AND type = hotel AND type = restoran AND type = company

хотя в базе есть материалы с типом: hotel, restoran, company.
Записан
vipiusss
Профи
********

Репутация: +260/-8
Offline Offline

Пол: Мужской
Сообщений: 4570


Skype: renor_


« Ответ #4 : 30.07.2016, 05:59:19 »

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

Если можете - выложите модуль, как вы его делаете, быстрее подскажем.
И Volanda привлёчём, а то соскучился смотрю )))
Записан
radiant
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 84



« Ответ #5 : 30.07.2016, 12:39:51 »

Здравствуйте! К теме прикрепил архив с модулем.

В благодарность прикрепил архив с элементом links для ZOO и бесплатного пользования - http://joomlaforum.ru/index.php/topic,329645.0.html
Записан
passer
Живу я здесь
******

Репутация: +69/-3
Offline Offline

Пол: Мужской
Сообщений: 829



« Ответ #6 : 31.07.2016, 01:22:14 »

Ну так попробуйте
Код
$query->where('type = "hotel"', 'OR');
$query->where('type ="restoran"', 'OR');
$query->where('type = "company"');
Записан
radiant
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 84



« Ответ #7 : 31.07.2016, 17:20:54 »

Ну так попробуйте
Код
$query->where('type = "hotel"', 'OR');
$query->where('type ="restoran"', 'OR');
$query->where('type = "company"');

Теперь показывает 0 материалов.
Записан
shtier
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Пол: Мужской
Сообщений: 55


Чак Норрис никогда не спит. Он выжидает.


« Ответ #8 : 01.08.2016, 19:04:15 »

В Zoo есть метод /administrator/components/com_zoo/helpers/module.php
Код:
/**
* Get items from ZOO module params.
*
* @param AppData $params Module Parameter
* @return array Items
*/
public function getItems($params) {

$items = array();
if ($application = $this->app->table->application->get($params->get('application', 0))) {

// set one or multiple categories
$category = (int) $params->get('category', 0);
if ($params->get('subcategories')) {
$categories = $application->getCategoryTree(true);
if (isset($categories[$category])) {
$category = array_merge(array($category), array_keys($categories[$category]->getChildren(true)));
}
}

// get items
if ($params->get('mode') == 'item') {
if (($item = $this->app->table->item->get($params->get('item_id'))) && $item->isPublished() && $item->canAccess()) {
$items[] = $item;
}
} else if ($params->get('mode') == 'types') {
$items = $this->app->table->item->getByType($params->get('type'), $application->id, true, null, $params->get('order', array('_itemname')), 0, $params->get('count', 4));
} else {
$items = $this->app->table->item->getByCategory($application->id, $category, true, null, $params->get('order', array('_itemname')), 0, $params->get('count', 4));
}
}
return $items;
}

Переписал ваш модуль (https://db.tt/zOi4DPGc), из расчёта что "приложений" может быть несколько и "типов" может быть несколько - дальше уже сами.
В параметрах заполнение вида
apps: 0,1,2
types: article, item, author

« Последнее редактирование: 01.08.2016, 19:12:08 от shtier » Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet