доброый вечер. пишу вам сюда - так как отчаялся. не могу сам справиться с задачей. есть у меня сайт на джумле. на нем есть каталог компаний. и нужно при просмотре каталога выводить кроме названия компании еще и картинку и описание. чего у меня не получается. вот уже третий день сижу, мучаюсь, вроде много перечитал, а допетрать не могу((( как по мне - проблема в том, что джумла где-то хранит свои параметры из классов, тоесть когда мне нужно было вывести тайтл и айди компании - я могу его вывести где угодно, а картинку и дескрипшин - не могу. есть класс в файле, в котором указывается, что нужно выводить именно тайтл и айди. Код (PHP): class scatalogsViewcompanys extends JView { function display($tpl = null) { global $mainframe, $option; $db =& JFactory::getDBO(); $uri =& JFactory::getURI(); $company = $this->get( 'company'); $companyfull = $this->get( 'fullcompany'); $companyname=$company->title; $javascript = 'onchange="document.adminForm.submit();"'; $cid = $mainframe->getUserStateFromRequest( $option.'cid', 'cid', 0, 'int' ); $query = ' SELECT id,title'.LANGSC.' as title FROM #__scatalog_company where published=1 order by title'.LANGSC.' '; $db->setQuery( $query ); $companys_id = $db->loadObjectList(); // array_unshift($companys_id, JHTML::_('select.option', '0', '- '.JText::_('Select Company').' -', 'id', 'title')); $lists['cid']= JHTML::_('select.genericlist', $companys_id, 'cid', 'class="inputbox_filter" size="1" '.$javascript, 'id', 'title', intval( $cid )); $filter_city = $mainframe->getUserStateFromRequest( $option.'filter_city', 'filter_city', 0, 'int' ); $query = ' SELECT id,title'.LANGSC.' as title FROM #__scatalog_city where published=1 order by title'.LANGSC.' '; $db->setQuery( $query ); $city_id = $db->loadObjectList(); array_unshift($city_id, JHTML::_('select.option', '0', '- '.JText::_('Select city').' -', 'id', 'title')); $lists['cityid']= JHTML::_('select.genericlist', $city_id, 'filter_city', 'class="inputbox_filter" size="1" '.$javascript, 'id', 'title', intval( $filter_city )); $filter_vid = $mainframe->getUserStateFromRequest( $option.'filter_vid', 'filter_vid', 0, 'int' ); $query = ' SELECT id,title'.LANGSC.' as title FROM #__scatalog_vid where published=1 order by title'.LANGSC.' '; $db->setQuery( $query ); $vid_id = $db->loadObjectList(); array_unshift($vid_id, JHTML::_('select.option', '0', '- '.JText::_('Select vid').' -', 'id', 'title')); $lists['vidid']= JHTML::_('select.genericlist', $vid_id, 'filter_vid', 'class="inputbox_filter" size="1" '.$javascript, 'id', 'title', intval( $filter_vid )); $this->assignRef( 'company',$comp); $this->assignRef('lists', $lists); $this->assignRef( 'companyname', $companyname); $this->assignRef( 'company', $company); $this->assignRef( 'companyfull', $companyfull); parent::display($tpl); } } и есть темплейт, в котором я вывожу то что мне нужно.. вот что получается: Код (PHP): <?php // no direct access defined('_JEXEC') or die('Restricted access'); ?> <style type="text/css"> .compdetail {width: 10%; text-align: right; font-weight: bold; white-space: nowrap;} </style> <form action="<?echo JRoute::_( 'index.php?option=com_scatalog§ion=company');?>" method="post" name="adminForm"> <table width="100%" border="0" cellspacing="0" cellpadding="5"> <tr><td width="33%"> <label for="cid"> <?php echo JText::_( 'LIST COMPANY' ); ?><br /> <? echo $this->lists['cid'];?> </label></td> <td width="33%"><label for="filter_city"> <?php echo JText::_( 'LIST CITY' ); ?><br /> <? echo $this->lists['cityid'];?> </label></td> <td width="33%"><label for="filter_vid"> <?php echo JText::_( 'LIST VID' ); ?><br /> <? echo $this->lists['vidid'];?> </label></td> </tr></table> <hr /> <h1 style="font-size: 26px;"><? echo $this->company->title; ?></h1> <div><a href="<? echo JRoute::_( 'index.php?option=com_scatalog§ion=actions&cid='.$this->company->id);?>"> <? echo JText::_( 'Actions img' );?></a> <a href="<? echo JRoute::_( 'index.php?option=com_scatalog§ion=rewiews&cid='.$this->company->id);?>"> <? echo JText::_( 'Rewiew img' );?></a> <a href="<? echo JRoute::_( 'index.php?option=com_scatalog§ion=rewiews&task=add&cid='.$this->company->id);?>"> <? echo JText::_( 'Add Rewiew img' );?></a> </div> <br /> <div> <? if (!empty($this->company->image)){?> <img align="left" src="/images/logo/<? echo $this->company->image; ?>"/> <? } ?> <? echo $this->company->description; ?></div> <hr clear="both" /> <? foreach($this->companyfull as $key =>$value){ ?> <h2 style="font-size: 20px;"><? echo $value->title; ?> (<? echo $value->city; ?>)</h2> <table width="100%" border="0" cellspacing="0" cellpadding="2"> <tr><td class="compdetail"><? echo JText::_( 'VIDS' ).':';?></td><td><? echo $value->vids;?></td></tr> <tr><td class="compdetail"><? echo JText::_( 'PHONE' ).':';?></td><td><? echo $value->phone;?></td></tr> <tr><td class="compdetail"><? echo JText::_( 'FAX' ).':';?></td><td><? echo $value->fax;?></td></tr> <tr><td class="compdetail"><? echo JText::_( 'ADRESS' ).':';?></td><td><? echo $value->adress;?></td></tr> <tr><td class="compdetail"><? echo JText::_( 'URL' ).':';?></td><td><? echo $value->url;?></td></tr> <tr><td class="compdetail"><? echo JText::_( 'EMAIL' ).':';?></td><td><? echo $value->email;?></td></tr> </table> <hr /> <? } // print_r($this->company); // print_r($this->companyfull); ?> <input type="hidden" name="option" value="com_scatalog" /> <input type="hidden" name="section" value="company" /> <?php echo JHTML::_( 'form.token' ); ?> </form> </pre> Вы уж извините, если я не называю вещи своими именами, или говорю что-то не верно, просто я не могу похвастаться знаниями пхп, но очень нужно решить проблему.
Re: не моуг вытащить данные из класса и вывести их Код (CODE): SELECT id,title'.LANGSC.' as title FROM бла бла бла давайте начнем с того, что вы выбираете из базы только названия и ид. Может имеет смысл добавить еще пару полей? ))))
Re: не моуг вытащить данные из класса и вывести их в коде темплейта совсем ничего не выводится или только то, что вы дописали? и вообще что вы дописали? вот этот кусок Код (PHP): <? echo $this->company->description; ?> выводится? а вот этот ? Код (PHP): <? echo $this->lists['cityid'];?>
Re: не моуг вытащить данные из класса и вывести их вы уж меня простите), но я случайно вставил не тото код, который хотел вам показать, вот правильные: Код (PHP): <?php jimport( 'joomla.application.component.view'); class scatalogsViewscatalogs extends JView { function display($tpl = null) { global $mainframe, $option; $db =& JFactory::getDBO(); $uri =& JFactory::getURI(); $company = $this->get( 'company' ); $comp=array(); foreach($company as $value){ $comp[mb_substr($value->title,0,1,'UTF-8')][]=$value; } $javascript = 'onchange="document.adminForm.submit();"'; /* $filter_catid = $mainframe->getUserStateFromRequest( $option.'cid', 'cid', 0, 'int' ); $query = ' SELECT id,title FROM #__scatalog_company where published=1'; $db->setQuery( $query ); $companys_id = $db->loadObjectList(); array_unshift($companys_id, JHTML::_('select.option', '0', '- '.JText::_('Select Company').' -', 'id', 'title')); $lists['catid']= JHTML::_('select.genericlist', $companys_id, 'cid', 'class="inputbox" size="1" '.$javascript, 'id', 'title', intval( $filter_catid ));*/ $filter_city = $mainframe->getUserStateFromRequest( $option.'filter_city', 'filter_city', 0, 'int' ); $query = ' SELECT id,title'.LANGSC.' as title FROM #__scatalog_city where published=1 order by title'.LANGSC.' '; $db->setQuery( $query ); $city_id = $db->loadObjectList(); array_unshift($city_id, JHTML::_('select.option', '0', '- '.JText::_('Select city').' -', 'id', 'title')); $lists['cityid']= JHTML::_('select.genericlist', $city_id, 'filter_city', 'class="inputbox_filter" size="1" '.$javascript, 'id', 'title', intval( $filter_city )); $filter_vid = $mainframe->getUserStateFromRequest( $option.'filter_vid', 'filter_vid', 0, 'int' ); $query = ' SELECT id,title'.LANGSC.' as title FROM #__scatalog_vid where published=1 order by title'.LANGSC.' '; $db->setQuery( $query ); $vid_id = $db->loadObjectList(); array_unshift($vid_id, JHTML::_('select.option', '0', '- '.JText::_('Select vid').' -', 'id', 'title')); $lists['vidid']= JHTML::_('select.genericlist', $vid_id, 'filter_vid', 'class="inputbox_filter" size="1" '.$javascript, 'id', 'title', intval( $filter_vid )); $this->assignRef( 'company',$comp); $this->assignRef('lists', $lists); parent::display($tpl); } } ?> и темплейт: Код (PHP): <?php // no direct access defined('_JEXEC') or die('Restricted access'); ?> <form action="<?echo JRoute::_( 'index.php?option=com_scatalog§ion=scatalogs');?>" method="post" name="adminForm"> <table width="100%" border="0" cellspacing="0" cellpadding="5"> <tr><td width="33%"><label for="filter_city"> <?php echo JText::_( 'LIST CITY' ); ?><br /> <? echo $this->lists['cityid'];?> </label></td> <td width="33%"><label for="filter_vid"> <?php echo JText::_( 'LIST VID' ); ?><br /> <? echo $this->lists['vidid'];?> </label></td> <td width="33%"> </td> </tr></table> <hr /> <? foreach($this->company as $key =>$value){ ?> <h2><? echo $key; ?></h2><br>test <table width="100%" border="0" cellspacing="0" cellpadding="2"> <? $k=0; foreach($value as $cvalue){ echo ($k==0?'<tr>':'')."<td width=\"33%\"> <a href=\"".JRoute::_( 'index.php?option=com_scatalog§ion=company&cid='.$cvalue->id)."\">{$cvalue->title}</a> </td>".($k==2?'</tr>':''); $k++; $k=($k==3?0:$k); } for(;$k<=2 and $k!=0;$k++){ echo ($k==0?'<tr>':'')."<td width=\"33%\"> </td>".($k==2?'</tr>':''); } ?> </table> <hr /> <? } // echo $this->lists['catid']; ?> <input type="hidden" name="option" value="com_scatalog" /> <input type="hidden" name="section" value="scatalogs" /> <?php echo JHTML::_( 'form.token' ); ?> </form> но не понятно. как оно облегчит мои страдания.... если просто дописать там дескрипшн и пикчер, - ничего не даст. так как эта вся фигня для списка...
Re: не моуг вытащить данные из класса и вывести их дак вы все равно в запросе Вы выбираете только id и title ... добавляйте в Ваш запрос еще поля и получайте то что нужно )
Re: не моуг вытащить данные из класса и вывести их Ну а неправильный лень удалить? И не игнорируй то, что другие говорят.
спасибо за подсказки, целое утро пробую вытащить этот дескрипшн и image, никак ен получается, я просто не могу правильно составить запро с базу, помогите мне пожалуйста. PS. пытался напрямую в шаблоне вытащить данные, подключаясь няпрямик к БД, всеравно не вышло, наверное, опять неправильно составляю запрос. есще раз спасибо всем, кто помогает... PPS могу заменить код на правильный. вместо того. что бы удалять.
Держи верный запрос: Код (PHP): $query = 'SELECT description,image FROM #__scatalog_company where published=1'; Конечно это прикол! Отдохни пару дней, по-моему ты переработал
я думаю вернее будет Код (PHP): $query = 'SELECT id, title, description, image FROM #__scatalog_company where published=1'; Ему же еще и титл с ид нужен )
Тогда уж так Код (PHP): $query = 'SELECT * FROM #__scatalog_company where published=1'; вдруг еще что-нибудь понадобится )
с этим понятно, спасибо) а как в шаблоне прописать что б выводил рисунок (image) и описание (description). и еще наберусь наглости, и спрошу. как можно обрезать дескрипшн в моем случаее, если нужно что б влазило не более 300 символов?), и как быть с переключением языка?
ну в принципе также как и титл: Код (PHP): echo $this->company->description //если у вас в поле img храниться путь к изображению echo "<img src=\"{$this->company->img}\"> З,Ы,: переменные description и img должны совпадать с именами полей в БД. Т.е. если БД поля другие, то соответственно Вы должны поменять имена переменных здесь.
всеравно не выводит картинку, и описание. в базе данных у меня есть поля image для картинки и description для описания. я пишу так: Код (PHP): echo $this->company->description echo "<img src=\"{$this->company->image}\"> " и такие варианты: Код (PHP): echo $this->company->description; echo $cvalue->description; echo $this->company->image; echo "<img src=\"{$this->company->image}\">"; и как только не пробую, всеравно ен хочет выводить, при том. что в другом файле указал доставать все данные из определенной таблицы. может кто-то сможет мне помочь в аське? или лучше в скайпе... 46четыре79один00ноль -ася krushanovskij -скайп я могу быть и там и там невидимым