Перейти к содержимому


Фотография
- - - - -

вывод информации по id материала


Лучший Ответ snserg , 01 December 2014 - 13:21

раз все молчат - отвечу сам. обошелся строкой вида

 

controller=myctrl&task=index&app_id=1&&id=15&option=com_zoo&view=frontpage&layout=frontpage&

 

вот таким кодом выводим материал

            $zappId = 1;    // id приложения
            $categoryId = 0;       // категория, 0 - титульная страница
            $order = '';       // cортировка
            $offset = 0;      // смещение
            $limit = 50;        //  количество материалов
            $template = 'catalog'; //шаблон приложения
            
            $zapp = app::getInstance('zoo');
            $renderer = $zapp->renderer->create('item');
            $renderer->addPath($zapp->path->path("jbtmpl:$template"));
            $renderer->addPath($zapp->path->path('component.site:'));
            
            $itemModel = $zapp->table->item;
            $items = $itemModel->getByCategory($zappId, $categoryId, false, null, $order, $offset, $limit);
            
            foreach($items as $item) {
            
            echo $renderer->render('item.teaser', array('item' => $item));
}
Перейти к сообщению


  • Закрытая тема Тема закрыта
Сообщений в теме: 21

#1 snserg

snserg

Отправлено 27 November 2014 - 11:32

Добрый день, господа. 

 

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

 

id_заказа         id_специалиста

 

100                         12

100                         15

100                         23

 

После окончания таймера пользователю нужно показать только материалы оставленные специалистами откликнувшимися на его заказ.

 

как я это вижу:

 

1. после создания заказа получаем его ID - вопрос, как это сделать?

2. после окончания таймера берем полученный выше ID и делаем запрос в нашу таблицу выбирая ID_специалистов.

3. по id специалистов выбираем id материала специалистов

4. выводим только материалы специалистов - вопрос как это сделать?

 

 

обработка вывода и выбором идет в отдельном php файле , который написан мной.


  • 0

#2 SmetDenis

SmetDenis

Отправлено 27 November 2014 - 12:41

1. после создания заказа получаем его ID - вопрос, как это сделать?

После создания в адресе сайта будет order_id
Либо можно выбрать последний из базы данных в таблице zoo_item, но это менее надежный метод.

4. выводим только материалы специалистов - вопрос как это сделать?

Сделать запрос в базу данных и выбрать нужные.



-------------
Извините, но подобных возможностей у нас нет и практически все что вы написали придется сделать своими силами.
Я могу вам порекомендовать предварительно прочитать о API
http://jbzoo.ru/docs...o-jbzoo-zoo-api
http://forum.jbzoo.c...enta-zoo-jbzoo/
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#3 snserg

snserg

Отправлено 27 November 2014 - 12:49

хорошо. order_id можно попробовать выковырять. 

 

а вот как выбрать материалы по id и отобразить их пока не представляю. может хоть тут что то подскажите?


  • 0

#4 SmetDenis

SmetDenis

Отправлено 27 November 2014 - 12:54


$item = $app->table->item->get($itemId);
Процесс вывода материала довольно сложный. Можно выводить по элементам
$item->getElement('element_id')->render();
Все же посмотрите информацию по ссылкам, там это есть.
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#5 snserg

snserg

Отправлено 28 November 2014 - 11:18

ок. почитал API. все очень кратко описано. пробую подключить framework. 
 
    define('_JEXEC', 1);
    define('JPATH_BASE', dirname(__FILE__) . '/..' );
 
    define('DS', DIRECTORY_SEPARATOR);
    require_once(JPATH_BASE.DS.'includes'.DS.'defines.php');
    require_once(JPATH_BASE.DS.'configuration.php');
    require_once(JPATH_BASE.DS.'includes'.DS.'framework.php');
    require_once(JPATH_ADMINISTRATOR . '/components/com_zoo/config.php');
    require_once(JPATH_ROOT . '/media/zoo/applications/jbuniversal/framework/jbzoo.php');
    $zoo = App::getInstance('zoo');
    JBZoo::init();
    JFactory::getApplication('site')->initialise();
 
получаю ошибку 
 
 Class 'systemHelper' not found in [/size]/Applications/joomla-3.3.6/apps/joomla/htdocs/administrator/components/com_zoo/framework/classes/app.php on line [/size]162
 
И что дальше?
 
почитал топик 
http://forum.jbzoo.c...lper-not-found/
но ответа не понял
  • 0

#6 SmetDenis

SmetDenis

Отправлено 29 November 2014 - 16:59

Вы порядок инициализации нарушили (например initialise должен быть до jbzoo::init())
и по большому счету делать собственную инициализацию всей Joomla - бессмысленно.
Т.к. она уже есть и работает.

Попробуйте другой вариант.

Создайте тут контроллер
media\zoo\applications\jbuniversal\framework\controllers\myctrl.php
 
<?php
// no direct access
defined('_JEXEC') or die('Restricted access');

class MyctrlJBUniversalController extends JBUniversalController
{

    public function index()
    {
       // свой код
    }
}
Теперь чтобы выполнить свой код нужно зайти на страницу каталога с параметрами
?controller=myctrl&task=index&app_id=<ID каталога JBZoo>

  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#7 snserg

snserg

Отправлено 30 November 2014 - 10:07

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

$Itemid = JRequest::getInt( 'Itemid', id меню(15), 'get' );
$option = JRequest::getVar('option', null);

 
или же можно обойтись 
 
?controller=myctrl&task=index&app_id=1&option=com_content&id=15  


  • 0

#8 snserg

snserg

Отправлено 01 December 2014 - 13:21   Лучший Ответ

раз все молчат - отвечу сам. обошелся строкой вида

 

controller=myctrl&task=index&app_id=1&&id=15&option=com_zoo&view=frontpage&layout=frontpage&

 

вот таким кодом выводим материал

            $zappId = 1;    // id приложения
            $categoryId = 0;       // категория, 0 - титульная страница
            $order = '';       // cортировка
            $offset = 0;      // смещение
            $limit = 50;        //  количество материалов
            $template = 'catalog'; //шаблон приложения
            
            $zapp = app::getInstance('zoo');
            $renderer = $zapp->renderer->create('item');
            $renderer->addPath($zapp->path->path("jbtmpl:$template"));
            $renderer->addPath($zapp->path->path('component.site:'));
            
            $itemModel = $zapp->table->item;
            $items = $itemModel->getByCategory($zappId, $categoryId, false, null, $order, $offset, $limit);
            
            foreach($items as $item) {
            
            echo $renderer->render('item.teaser', array('item' => $item));
}

  • 0

#9 SmetDenis

SmetDenis

Отправлено 01 December 2014 - 17:28

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

$Itemid = JRequest::getInt( 'Itemid', id меню(15), 'get' );
$option = JRequest::getVar('option', null);

 
или же можно обойтись 
 
?controller=myctrl&task=index&app_id=1&option=com_content&id=15  

 

Itemid - это привязка к пункту меню Joomla

option - обязателен, говорит наверняка какой именно компонент должен обработать запрос.

Иногда он автоматически определяется по пункту меню.

 

Лучше их указывать обоих, чтобы они ссылались на Zoo

 

 

вот таким кодом выводим материал

 

В целом все верно за исключением

$renderer->render('item.teaser', array('item' => $item));

Если у типа материла есть своя папка с шаблонами, то её лучше указать в пути рендерера, например так

$renderer->render('item.' . $item->type . '.teaser', array('item' => $item));

  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#10 snserg

snserg

Отправлено 01 December 2014 - 17:33

материал выводится одной колонкой и без рамки. мне нужно в две колонки и с рамкой. как это можно сделать?


  • 0




Click to return to top of page in style!