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

radiant

  • Осваиваюсь на форуме
  • 88
  • 3
Создавая модуль, который бы мог вывести из компонента 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;
}

как укоротить код тоже не знаю.
К этой теме прикрепил архив с этим модулем.
« Последнее редактирование: 30.07.2016, 11:08:55 от radiant »
*

voland

  • Профи
  • 9524
  • 422
  • Эта строка съедает место на вашем мониторе
Может проще на платной основе сделать?
*

passer

  • Живу я здесь
  • 875
  • 70
Так вроде.
Код: php
$query->where('type = hotel', 'OR');
$query->where('type = restoran', 'OR');
$query->where('type = company');
*

radiant

  • Осваиваюсь на форуме
  • 88
  • 3
Благодарю за первую поддержку!

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

и пишет: 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

  • Профи
  • 5653
  • 324
  • Злой я сегодня.Без обид.
Так вам до этого таблицы надо сделать запросом.
Вам пишут немного не так:вы сначало сделайте куда, а потом уже код.

Если можете - выложите модуль, как вы его делаете, быстрее подскажем.
И Volanda привлёчём, а то соскучился смотрю )))
Миграция, установка, обновление версий Joomla  |  Создание сайтов "под ключ"  |  Эксклюзивные заглушки "offline"  |  Работа с "напильником" над шаблонами и расширениями
*

radiant

  • Осваиваюсь на форуме
  • 88
  • 3
Здравствуйте! К теме прикрепил архив с модулем.

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

passer

  • Живу я здесь
  • 875
  • 70
Ну так попробуйте
Код: php
$query->where('type = "hotel"', 'OR');
$query->where('type ="restoran"', 'OR');
$query->where('type = "company"');
*

radiant

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

Теперь показывает 0 материалов.
*

shtier

  • Осваиваюсь на форуме
  • 76
  • 6
  • Чак Норрис никогда не спит. Он выжидает.
В 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, 18:12:08 от shtier »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться