Здравствуйте
Joomla 1.5.14 Adsmanager 2.5RC2 Xmap 1.2
Нашел плагин для подключения adsmanager к xmap:
<?php
/**
* @author Guillermo Vargas, http://joomla.vargas.co.cr
* @email guille@vargas.co.cr
* @version $Id: com_adsmanager.php 106 2008-02-15 21:46:56Z root $
* @package Xmap
* @license GNU/GPL
* @description Xmap plugin for AdsManager Component
*/
defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
/** Add support for AdsManager categories and ads to Xmap */
class xmap_com_adsmanager {
/** Get the content tree for this kind of content */
function &getTree( &$xmap, &$parent, &$params ) {
global $database;
$catid=0;
if ( strpos($parent->link, 'page=show_category') ) {
$link_query = parse_url( $parent->link );
parse_str( html_entity_decode($link_query['query']), $link_vars );
$catid = intval(mosGetParam($link_vars,'catid',0));
}
$include_ads = mosGetParam($params,'include_ads',1);
$include_ads = ( $include_ads == 1
|| ( $include_ads == 2 && $xmap->view == 'xml')
|| ( $include_ads == 3 && $xmap->view == 'html'));
$params['include_ads'] = $include_ads;
$priority = mosGetParam($params,'cat_priority',$parent->priority);
$changefreq = mosGetParam($params,'cat_changefreq',$parent->changefreq);
if ($priority == '-1')
$priority = $parent->priority;
if ($changefreq == '-1')
$changefreq = $parent->changefreq;
$params['cat_priority'] = $priority;
$params['cat_changefreq'] = $changefreq;
$priority = mosGetParam($params,'ad_priority',$parent->priority);
$changefreq = mosGetParam($params,'ad_changefreq',$parent->changefreq);
if ($priority == '-1')
$priority = $parent->priority;
if ($changefreq == '-1')
$changefreq = $parent->changefreq;
$params['ad_priority'] = $priority;
$params['ad_changefreq'] = $changefreq;
xmap_com_adsmanager::getCategories($xmap,$parent,$catid,$params);
}
function getCategories ( &$xmap, &$parent, $catid=0,&$params ) {
global $database,$mosConfig_absolute_path,$mosConfig_lang,$my;
$query = "SELECT * FROM #__adsmanager_categories WHERE `published`=1 and parent=$catid ORDER BY ordering";
$database->setQuery($query);
$rows = $database->loadAssocList();
$xmap->changeLevel(1);
foreach($rows as $row) {
$node = new stdclass;
$node->id = $parent->id;
$node->uid = $parent->uid . 'c' .$row['id'];
$node->browserNav = $parent->browserNav;
$node->name = $row['name'];
$node->modified = $xmap->now;
$node->link = 'index.php?option=com_adsmanager&page=show_category&catid='.$row['id'].'&text_search=&order=0&expand=0&Itemid='.$parent->id;
$node->pid = $row['parent']; // parent id
$node->priority = $params['ad_priority'];
$node->changefreq = $params['ad_changefreq'];
$xmap->printNode($node);
xmap_com_adsmanager::getCategories ( $xmap, $parent, $row['id'],$params);
}
if ( $params['include_ads'] ) {
$query = "SELECT id,name,ad_headline FROM #__adsmanager_ads WHERE `published`=1 and category = $catid";
$database->setQuery($query);
$rows = $database->loadAssocList();
foreach ( $rows as $row ) {
$node = new stdclass;
$node->id = $parent->id;
$node->uid = $parent->uid . 'a' .$row['id'];
$node->browserNav = $parent->browserNav;
$node->name = $row['ad_headline'];
$node->modified = $xmap->now;
$node->link = 'index.php?option=com_adsmanager&page=show_ad&adid='.$row['id'].'&catid='.$catid.'&Itemid='.$parent->id;
$node->priority = $params['ad_priority'];
$node->changefreq = $params['ad_changefreq'];
$node->tree = array();
$xmap->printNode($node);
}
}
$xmap->changeLevel(-1);
}
}
Проблема заключается в том, что номер категории берется из таблицы "_adsmanager_ads":
$query = "SELECT id,name,ad_headline FROM #__adsmanager_ads WHERE `published`=1 and category = $catid";
но почему то значение параметра "category" таблицы "_adsmanager_ads" всегда равно 0, т.е. не передается номер категории в которую добавляется объявление...
Поэтому ссылка в Xmap имеет вид
...index.php?option=com_adsmanager&page=show_ad&adid=4&catid=
0&Itemid=27
и объявления в карте сайта находятся на одном уровне с категориями, а не подчиняются иерархически категориям, к которым относятся..
Есть вариант брать "catid" вместо "category" из таблицы _adsmanager_adcat, но я мало смыслю в php и у меня не получается грамотно построить такой запрос..
Так вот, почему не передается номер категории в "category" в таблицу "_adsmanager_ads" базы данных при добавлении объявления?