Hi Community,
ich nutze Datafeeds um Produktdaten zu importieren. Um die "Produktansicht" mit "Extra-Content" anzureichern, gibt es das Modul mod_datamenu --> "Article". Dieses Modul fügt der Ergebnisseite "Joomla Beiträge" hinzu (über den Beitrags-Alias).
Eine Ergebnisseite sieht z.B. so aus.
Nun habe ich "Global" -> Beitragsbewertungen "Anzeigen". Die Beitragsbewertung ist auch bei "normalen" Joomla Beiträgen möglich, jedoch nicht über das mod_datamenu.
Die php-Datei "mod_datamenu.php" ist für den Aufruf des jeweiligen Beitrag über die Beitrags-Alias zuständig (getArticle). Der Code ist weiter unten.
PHP
<?php
#
# Copyright brambring.nl
# http://www.affiliatefeeds.nl
# joomla@brambring.nl
#
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
// Include the syndicate functions only once
require_once( dirname(__FILE__).'/helper.php' );
require_once (JPATH_SITE . '/components/com_datafeeds/helpers/helpers.php');
if ( defined('ELASTIC') ) {
require_once( dirname(__FILE__).'/elastichelper.php' );
$class='ModElastichelper';
} else {
$class='modDatamenuHelper';
}
$layout = $params->get('layout',$params->get('type','default'));
$prefix = $params->get('prefix','');
$grid = $params->get('grid',3);
$ajax = $params->get('ajax',0);
$list_count = $params->get('list_count',15);
$levels = $params->get('levels',9);
$list_sort = $params->get('list_sort',"hits");
$list_volg = $params->get('list_volg',"DESC");
$group_by = $params->get('group_by',"");
$custom_layout = $params->get('custom_layout',''); //legacy
$algo = $params->get('algo','smart');
$moduleclass_sfx = $params->get('moduleclass_sfx','');
$sqlfilter = $params->get('sqlfilter','');
$mod_field0 = $params->get('mod_field0',"");
$mod_groep = $params->get('mod_groep',"");
$cache=false;
if ($params->get('dfcache', 0) ) {
$cache = JFactory::getCache( 'mod_datamenu' );
$cache->setLifeTime( $params->get( 'cache_time', 15 ));
$cache->setCaching( true );
}
$app = JFactory::getApplication();
$menus = $app->getMenu();
#$menus = &JSite::getMenu();
if ( $ajax ) {
$default_ids = JRequest::getInt("Itemid",0);
$menu=new stdClass();
#ok we zouden nog kunnen uitzoeken wel menu dit is
#laten we voor nu even queries en tijd sparen
$menu->alias=$params->get("Itemid",0);
$menu->id=$default_ids;
$menu->component="";
} else {
$default_ids = $params->get('default_id',0);
if ($itemid= JRequest::getInt("Itemid",0)) {
$menu = $menus->getItem($itemid);
} else {
$menu = $menus->getActive();
}
}
if ( $menu ) {
$alias=$menu->id;
} else {
$menu=new stdClass;
$menu->component="";
$alias="0";
}
#deze zijn niet nodig voor de cache
$seen=array();
$show_param = $params->get('show',0);
$mod_params=clone $params ;
foreach (explode(",",$default_ids) as $default_id ) {
$id=0;
if ( $menu->component == "com_datafeeds" && $default_id >= 0 ) {
$id=$menu->id;
$show=$show_param;
} else {
if ( $default_id ) {
$id = abs($default_id);
$show=0;
}
}
$slug='';
if ( ! $id || isset($seen[$id]) ) { continue ;}
$seen[$id]=1;
if ( $id ) {
$alias='C'.$id.'-M'.$alias;
# dereference
$params = clone $menus->getParams( $id );
if ( $menu->component != "com_datafeeds" || ($id == $menu->id) || ($menu->component == "com_datafeeds" && $default_id < 0 ) ) {
$q=JRequest::getVar('qt','');
if ( $q ) {
$params->set("qt",$q);
$slug .= "-$q";
}
$q=JRequest::getVar('qf','');
if ( $q ) {
$params->set("qf",$q);
}
$q=JRequest::getVar('q','');
if ( $q ) {
$params->set("qq",$q); #todo check legacy
$params->set("q",$q);
$slug .= "-$q";
} else {
$q = $params->get('q',"");
if ( $q ) {
$params->set("q",$q);
}
}
$q=JRequest::getVar('min','');
if ( $q ) {
$params->set("min",$q);
}
$q=JRequest::getVar('max','');
if ( $q ) {
$params->set("max",$q);
}
for ($v=0;$v<=9;$v++) {
$q=JRequest::getVar("q$v",'');
if ( $q ) {
$params->set("q$v",$q);
$slug .= "-$q";
}
}
}
if ( ($show == 0 ) || ( ($show == 1 )&& ! $slug ) || (($show==2) && $slug ) ) {
$params->merge($mod_params);
$params->set('merge','ja');
$params->set('id',$id);
$params->set('module_id',$module->id);
$params->set('module_title',$module->title);
$params->set('ajax',$ajax);
$params->set('alias',$alias);
$baselink= "index.php?option=com_datafeeds&Itemid=$id";
$params->set('menu_type',$menu->component);
$params->set('baselink',$baselink);
$params->set('slug',$slug);
$params->set('id',$id);
#$params->set('menu_alias',$menu->alias);
#$params->set('layout',$layout); $ not needed ?
if ( $layout =='menu' ) $layout='default';
if ( $layout =='custom' ) $layout=$custom_layout; //legacy
$tmpl=false;
switch ($layout ) {
case 'article':
case 'artikel':
#het artikel werkt met de alias als string idem voor de links
$params->set('alias',$menu->alias);
if ( $cache !== false ) {
$list = $cache->get(array('$class', 'getArticle'), array(&$params));
} else {
$list=$class::getArticle($params);
}
$document= JFactory::getDocument();
if (isset($list['introtext'])) {
echo $list['introtext'];
$document->setDescription( join(' ',array($list['metadesc'])) );
$document->setMetaData ("keywords",join(',',array($list['metakey'])));
$myjsondecode = json_decode($list['metadata'], true);
if ($myjsondecode['robots'] == 'index, follow') {
$document->setMetaData ("robots", $myjsondecode['robots']);
} else {
$document->setMetaData ("robots", 'noindex, nofollow');
}
if ( @$title=$list['title'] ) {
switch ( DF_USE_CONTENT_TITLE ) {
case 'prepend' : $document->setTitle($title . ' ' . $document->getTitle());break;
case 'append' : $document->setTitle($document->getTitle().' '.$title);break;
default : $document->setTitle($title );break;
}
}
}
break;
case 'links':
$params->set('alias',$menu->alias.$slug);
if ( $cache !== false ) {
$list = $cache->get(array('$class', 'getLinks'), array(&$params));
} else {
$list=$class::getLinks($params);
}
echo $list;
break;
case 'merchant':
$tmpl=JModuleHelper::getLayoutPath( 'mod_datamenu',$layout );
if ( $cache !== false) {
$dataitems = $cache->get(array('$class', 'getMerchants'), array(&$params));
} else {
$dataitems=$class::getMerchants($params);
}
break;
default:
$tmpl=JModuleHelper::getLayoutPath( 'mod_datamenu',$layout );
if ( file_exists ( $tmpl ) ) {
if ( strpos($layout,"_list") > 0 ) {
if ( $cache !== false) {
$dataitems = $cache->get(array('$class', 'getList'), array(&$params));
} else {
$dataitems=$class::getList($params);
}
}
elseif ( strpos($layout,"_items") > 0 ) {
if ( $cache !== false) {
$dataitems = $cache->get(array('$class', 'getItems'), array(&$params));
} else {
$dataitems=$class::getItems($params);
}
}
elseif ( strpos($layout,"_menu") > 0 ) {
if ( $cache !== false) {
$dataitems = $cache->get(array('$class', 'getMenu'), array(&$params));
} else {
$dataitems=$class::getMenu($params);
}
} elseif (strpos($layout,"_custom") > 0 ) {
#do nothing stub the dataitems, the function must take care
$dataitems=array();
} else { # normal menu
if ( $cache !== false) {
$dataitems = $cache->get(array('$class', 'getData'), array(&$params));
} else {
$dataitems=$class::getData($params);
}
}
}
break;
}
if ( $tmpl ) {
require( $tmpl);
}
}
} # foreach
} # if show
Alles anzeigen
Wie kann ich nun auf der Ergebnisseite die "Beitragsbewertung" aufrufen. Hoffentlich habt ihr ne Idee.
Sonnige Grüße
mad