2 вопроса только. как вывести имя автора, и аватар автора (аватар интегрирован с СВ)
Это код модуля mod_jcomments, тут выводится и имя автора и аватар (P.S. имя автора тут выводится комментария а не стати !)
<?php
/**
* JComments Latest - show latest comments or latest commented content items items
*
* @version 2.2.9
* @package JComments
* @author smart (smart@joomlatune.ru)
* @copyright (C) 2006-2009 by smart (http://www.joomlatune.ru)
* @license GNU/GPL: http://www.gnu.org/copyleft/gpl.html
*
**/
// ensure this file is being included by a parent file
(defined('_VALID_MOS') OR defined('_JEXEC')) or die('Direct Access to this location is not allowed.');
// define directory separator short constant
if (!defined('DS')) {
define('DS', DIRECTORY_SEPARATOR);
}
global $mainframe;
$comments = $mainframe->getCfg('absolute_path'). DS . 'components' . DS . 'com_jcomments' . DS . 'jcomments.php';
if (file_exists($comments)) {
require_once ($comments);
} else {
return;
}
if ( !defined( '_JCOMMENTS_MODULE' ) ) {
define( '_JCOMMENTS_MODULE', 1 );
class modJCommentsHelper
{
function getList($params, $unpublished = false, $orderby = 'date')
{
global $mainframe, $my;
$dbo = & JCommentsFactory::getDBO();
$acl = & JCommentsFactory::getACL();
$config = & JCommentsFactory::getConfig();
$object_group = trim($params->get('object_group', 'com_content'));
switch($orderby)
{
case 'vote':
$orderby = '(cc.isgood-cc.ispoor) DESC';
break;
case 'date':
default:
$orderby = 'cc.date DESC';
break;
}
if ( $object_group == 'com_content' ) {
$sectionid = intval($params->get('sectionid'));
$exclude_sectionid = trim($params->get('exclude_sectionid', ''));
$exclude_sections = array();
if ($exclude_sectionid != '') {
$exclude_sections = explode(',', $exclude_sectionid);
}
$catid = intval($params->get('catid'));
$exclude_catid = trim($params->get('exclude_catid', ''));
$exclude_catids = array();
if ($exclude_catid != '') {
$exclude_catids = explode(',', $exclude_catid);
}
$query = "SELECT cc.id, cc.userid, cc.comment, cc.name, cc.username, cc.email, cc.date, cc.object_id, cc.object_group, '' as avatar "
. "\n FROM #__jcomments AS cc"
. "\n LEFT JOIN #__content AS c ON c.id = cc.object_id"
. "\n WHERE cc.published = " . ($unpublished ? '0' : '1')
. "\n AND c.access <= '$my->gid'"
. "\n AND (c.publish_up = '0000-00-00 00:00:00' OR c.publish_up <= NOW())"
. "\n AND (c.publish_down = '0000-00-00 00:00:00' OR c.publish_down >= NOW())"
. "\n AND cc.object_group = 'com_content'"
. ((!$catid && $sectionid)? "\n AND (c.sectionid IN ($sectionid) )" : '')
. (count($exclude_sections)? "\n AND (c.sectionid NOT IN (".implode(',', $exclude_sections).") )" : '')
. ($catid ? "\n AND (c.catid IN ($catid) )" : '')
. (count($exclude_catids)? "\n AND (c.catid NOT IN (".implode(',', $exclude_catids).") )" : '')
. (JCommentsMultilingual::isEnabled()? "\nAND cc.lang = '" . JCommentsMultilingual::getLanguage(). "'" : "")
. "\n ORDER BY " . $orderby
. "\n LIMIT " . intval( $params->get( 'count' ) )
;
} else {
$groups = explode( ',', $object_group );
$query = "SELECT cc.id, cc.userid, cc.comment, cc.name, cc.username, cc.email, cc.date, cc.object_id, cc.object_group, '' as avatar "
. "\n FROM #__jcomments AS cc"
. "\n WHERE cc.published = " . ($unpublished ? '0' : '1')
. (count($groups)? "\n AND (cc.object_group = '" . implode( "' OR cc.object_group='", $groups ). "')" : '')
. (JCommentsMultilingual::isEnabled()? "\nAND cc.lang = '" . JCommentsMultilingual::getLanguage(). "'" : "")
. "\n ORDER BY " . $orderby
. "\n LIMIT " . intval( $params->get( 'count' ) )
;
}
$dbo->setQuery( $query );
$rows = $dbo->loadObjectList();
return $rows;
}
function getContentLink(&$row)
{
global $mainframe, $Itemid;
if (JCOMMENTS_JVERSION == '1.5') {
require_once (JPATH_ROOT.DS.'components'.DS.'com_content'.DS.'helpers'.DS.'route.php');
$link = JRoute::_(ContentHelperRoute::getArticleRoute($row->slug, $row->catslug, $row->sectionid)). '#comments';
} else {
$compat = $mainframe->getCfg('itemid_compat');
if ( $compat == null ) {
// Joomla 1.0.12 or below
if ( $Itemid && $Itemid != 99999999 ) {
$_Itemid = $Itemid;
} else {
$_Itemid = $mainframe->getItemid( $row->id );
}
} else if ( (int) $compat > 0 && (int) $compat <= 11) {
// Joomla 1.0.13 or higher and Joomla 1.0.11 compability
$_Itemid = $mainframe->getItemid( $row->id, 0, 0 );
} else {
// Joomla 1.0.13 or higher and new Itemid algoritm
$_Itemid = $Itemid;
}
$link = sefRelToAbs( 'index.php?option=com_content&task=view&id='. $row->id .'&Itemid='. $_Itemid );
}
return $link;
}
function getModuleStyles($params)
{
$moduleclass_sfx = $params->get('moduleclass_sfx');
$avatar_size = intval($params->get('avatar_size', 32));
$showgravatars = intval($params->get('avatar'));
if ($avatar_size <= 0) {
$avatar_size = 32;
}
ob_start();
?>
ul.jclist<?php echo $moduleclass_sfx;?> { padding: 0; list-style-image: none; list-style-type: none; }
ul.jclist<?php echo $moduleclass_sfx;?> li {background-image: none; list-style: none; list-style-image: none; margin-left: 5px !important; margin-left: 0; display: block; overflow: hidden; }
<?php
if ($showgravatars == 1) {
?>
ul.jclist<?php echo $moduleclass_sfx;?> img { width: <?php echo $avatar_size; ?>px; height: <?php echo $avatar_size; ?>px; margin: 0 5px 5px 0; float: left;}
<?php
}
?>
ul.jclist<?php echo $moduleclass_sfx;?> span img {width: auto; height: auto; float: none;}
<?php
$_css = ob_get_contents();
ob_end_clean();
if (JCOMMENTS_JVERSION == '1.5') {
$document = & JFactory::getDocument();
$document->addStyleDeclaration($_css);
} else {
echo '<style type="text/css">' . $_css . '</style>';
}
}
}
function modJCommentsLatestCommented( &$params ) {
global $mainframe, $my, $Itemid;
$dbo = & JCommentsFactory::getDBO();
$sectionid = intval($params->get('sectionid'));
$exclude_sectionid = trim($params->get('exclude_sectionid', ''));
$exclude_sections = array();
if ($exclude_sectionid != '') {
$exclude_sections = explode(',', $exclude_sectionid);
}
$catid = intval($params->get('catid'));
$exclude_catid = trim($params->get('exclude_catid', ''));
$exclude_catids = array();
if ($exclude_catid != '') {
$exclude_catids = explode(',', $exclude_catid);
}
$query = "SELECT c.id AS id, c.title AS title, c.sectionid"
. ((JCOMMENTS_JVERSION == '1.5')? ', CASE WHEN CHAR_LENGTH(c.alias) THEN CONCAT_WS(":", c.id, c.alias) ELSE c.id END as slug' : '')
. ((JCOMMENTS_JVERSION == '1.5')? ', CASE WHEN CHAR_LENGTH(ct.alias) THEN CONCAT_WS(":", ct.id, ct.alias) ELSE ct.id END as catslug' : '')
. "\n, COUNT(cc.id) AS comments, MAX(cc.date) AS commentdate"
. "\n FROM #__content AS c"
. "\n LEFT JOIN #__jcomments AS cc ON c.id = cc.object_id"
. "\n LEFT JOIN #__categories AS ct ON ct.id = c.catid"
. "\n WHERE c.state = 1"
. "\n AND c.access <= '$my->gid'"
. "\n AND (c.publish_up = '0000-00-00 00:00:00' OR c.publish_up <= NOW())"
. "\n AND (c.publish_down = '0000-00-00 00:00:00' OR c.publish_down >= NOW())"
. "\n AND cc.published = 1"
. "\n AND cc.object_group = 'com_content'"
. ((!$catid && $sectionid)? "\n AND (c.sectionid IN ($sectionid) )" : '')
. (count($exclude_sections)? "\n AND (c.sectionid NOT IN (".implode(',', $exclude_sections).") )" : '')
. ($catid ? "\n AND (c.catid IN ($catid) )" : '')
. (count($exclude_catids)? "\n AND (c.catid NOT IN (".implode(',', $exclude_catids).") )" : '')
. "\n GROUP BY c.id, c.title, c.sectionid"
. ((JCOMMENTS_JVERSION == '1.5')? ", slug, catslug" : '')
. "\n ORDER BY commentdate DESC"
. "\n LIMIT " . intval( $params->get( 'count' ) )
;
$dbo->setQuery( $query );
$rows = $dbo->loadObjectList();
echo $dbo->getErrorMsg();
if ( sizeof( $rows ) ) {
echo '<ul class="jclist'.$params->get( 'moduleclass_sfx' ).'">'."\n";
foreach( $rows as $row ) {
$link = modJCommentsHelper::getContentLink($row);
$link_title = $row->title;
$link_text = $row->title;
if ( $params->get( 'showcomments' ) ) {
$link_text .= ' (' . $row->comments . ')';
}
echo '<li><a href="'.$link.'" title="'.$link_title.'">'.$link_text.'</a></li>'."\n";
}
echo '</ul>'."\n";
}
}
function modJCommentsMostCommented( &$params )
{
global $mainframe, $my, $Itemid;
$dbo = & JCommentsFactory::getDBO();
$sectionid = intval($params->get('sectionid'));
$exclude_sectionid = trim($params->get('exclude_sectionid', ''));
$exclude_sections = array();
if ($exclude_sectionid != '') {
$exclude_sections = explode(',', $exclude_sectionid);
}
$catid = intval($params->get('catid'));
$exclude_catid = trim($params->get('exclude_catid', ''));
$exclude_catids = array();
if ($exclude_catid != '') {
$exclude_catids = explode(',', $exclude_catid);
}
$query = "SELECT c.id AS id, c.title AS title, c.sectionid"
. ((JCOMMENTS_JVERSION == '1.5')? ', CASE WHEN CHAR_LENGTH(c.alias) THEN CONCAT_WS(":", c.id, c.alias) ELSE c.id END as slug' : '')
. ((JCOMMENTS_JVERSION == '1.5')? ', CASE WHEN CHAR_LENGTH(ct.alias) THEN CONCAT_WS(":", ct.id, ct.alias) ELSE ct.id END as catslug' : '')
. "\n, COUNT(cc.id) AS comments, MAX(cc.date) AS commentdate"
. "\n FROM #__content AS c"
. "\n LEFT JOIN #__categories AS ct ON ct.id = c.catid"
. "\n LEFT JOIN #__jcomments AS cc ON c.id = cc.object_id"
. "\n WHERE c.state = 1"
. "\n AND c.access <= '$my->gid'"
. "\n AND (c.publish_up = '0000-00-00 00:00:00' OR c.publish_up <= NOW())"
. "\n AND (c.publish_down = '0000-00-00 00:00:00' OR c.publish_down >= NOW())"
. "\n AND cc.published = 1"
. "\n AND cc.object_group = 'com_content'"
. ((!$catid && $sectionid)? "\n AND (c.sectionid IN ($sectionid) )" : '')
. (count($exclude_sections)? "\n AND (c.sectionid NOT IN (".implode(',', $exclude_sections).") )" : '')
. ($catid ? "\n AND (c.catid IN ($catid) )" : '')
. (count($exclude_catids)? "\n AND (c.catid NOT IN (".implode(',', $exclude_catids).") )" : '')
. "\n GROUP BY c.id, c.title, c.sectionid"
. ((JCOMMENTS_JVERSION == '1.5')? ", slug, catslug" : '')
. "\n ORDER BY comments DESC, c.created DESC"
. "\n LIMIT " . intval( $params->get( 'count' ) )
;
$dbo->setQuery( $query );
$rows = $dbo->loadObjectList();
if ( sizeof( $rows ) ) {
echo '<ul class="jclist'.$params->get( 'moduleclass_sfx' ).'">'."\n";
foreach( $rows as $row ) {
$link = modJCommentsHelper::getContentLink($row);
$link_title = $row->title;
$link_text = $row->title;
if ($params->get('showcomments')) {
$link_text .= ' (' . $row->comments . ')';
}
echo '<li><a href="'.$link.'" title="'.$link_title.'">'.$link_text.'</a></li>'."\n";
}
echo '</ul>'."\n";
}
}
function modJCommentsLatest( &$params, $unpublished = false, $order = 'date' ) {
global $mainframe, $my;
$dbo = & JCommentsFactory::getDBO();
$acl = & JCommentsFactory::getACL();
$config = & JCommentsFactory::getConfig();
$rows = modJCommentsHelper::getList($params, $unpublished, $order);
if ( sizeof( $rows ) ) {
$show_date = intval($params->get('show_date', 0));
$show_author = intval($params->get('show_author', 0));
$show_object_title = intval($params->get('show_object_title', 0));
$show_comment_text = intval($params->get('show_comment_text', 1));
$label4more = $params->get('label4more', 'More...');
$label4author = $params->get('label4author', '');
$dateformat = $params->get('dateformat', '%d.%m.%y %H:%M');
$limit_object_title = $params->get('limit_object_title', 10);
$showsmiles = intval($params->get('showsmiles'));
$showgravatars = intval($params->get('avatar'));
$avatar_size = intval($params->get('avatar_size', 32));
$mambots = intval($params->get('mambots'));
if ($avatar_size <= 0) {
$avatar_size = 32;
}
if ($mambots) {
require_once (JCOMMENTS_HELPERS . DS . 'plugin.php');
JCommentsPluginHelper::importPlugin('jcomments');
JCommentsPluginHelper::trigger('onBeforeDisplayCommentsList', array(&$rows));
if ($acl->check('enable_gravatar')) {
JCommentsPluginHelper::trigger('onPrepareAvatars', array(&$rows));
}
}
modJCommentsHelper::getModuleStyles($params);
echo '<ul class="jclist'.$params->get( 'moduleclass_sfx' ).'">'."\n";
$bbcode = & JCommentsFactory::getBBCode();
$smiles = & JCommentsFactory::getSmiles();
$acl = & JCommentsFactory::getACL();
$maxlen = intval( $params->get( 'length' ));
foreach( $rows as $row ) {
$link = JCommentsObjectHelper::getLink( $row->object_id, $row->object_group);
$title = JCommentsText::censor($row->comment );
$title = $bbcode->filter( $title, true );
$title = JCommentsText::fixLongWords( $title, $config->getInt('word_maxlength') );
if ($acl->check('autolinkurls')) {
$title = preg_replace_callback( _JC_REGEXP_LINK, array('JComments', 'urlProcessor'), $title);
}
$title = JCommentsText::cleanText($title);
$title = JCommentsText::substr($title, $maxlen);
$link_title = str_replace( '"', '', $title );
$link_text = $title;
switch($showsmiles) {
case 1:
$link_text = $smiles->replace($link_text);
break;
case 2:
$link_text = $smiles->strip($link_text);
break;
}
echo '<li>';
if ($showgravatars == 1) {
if ($row->avatar == '') {
echo '<img src="http://www.gravatar.com/avatar.php?gravatar_id='. md5( $row->email ).'&default=' . urlencode($mainframe->getCfg( 'live_site' ). '/components/com_jcomments/images/no_avatar.png'). '&size=' . $avatar_size . '" alt="" border="0" />';
} else {
echo $row->avatar;
}
}
if ($show_object_title == 1) {
$title = JCommentsObjectHelper::getTitle( $row->object_id, $row->object_group );
$title = JCommentsText::substr($title, $limit_object_title);
$title = str_replace( '"', '', $title );
echo '<a class="jcl_objtitle" href="'.$link.'#comment-'.$row->id.'" title="'.$title.'">'.$title.'</a><br />';
}
switch( $show_comment_text ) {
case 0:
echo '<span class="jcl_comment">'.$link_text.'</span>';
break;
case 1:
echo '<a class="jcl_comment" href="'.$link.'#comment-'.$row->id.'" title="'.$link_title.'">'.$link_text.'</a>';
break;
case 2:
echo '<span class="jcl_comment">'.$link_text.'</span> ';
echo '<a class="jcl_readmore" href="'.$link.'#comment-'.$row->id.'">'.$label4more.'</a>';
break;
}
if ($show_date == 1) {
echo '<br /><span class="jcl_date">' . JCommentsText::formatDate( $row->date, $dateformat ). '</span>';
}
switch( $show_author ) {
case 0:
break;
case 1:
echo '<br />' . ($label4author != '' ? $label4author . ' ' : ''). $row->name;
break;
case 2:
echo '<br />' . ($label4author != '' ? $label4author . ' ' : ''). ($row->username ? $row->username : $row->name);
break;
}
echo '</li>'."\n";
}
echo '</ul>'."\n";
$show_full_rss = intval( $params->get( 'show_full_rss', 0 ) );
$label4rss = $params->get( 'label4rss', '' );
if ( $show_full_rss == 1 ) {
if (JCOMMENTS_JVERSION == '1.5') {
$rss_link = JoomlaTuneRoute::_('index.php?option=com_jcomments&task=rss_full&tmpl=component');
$rss_icon_link = JURI::base(). 'modules/mod_jcomments/images/rss.gif';
} else {
$rss_link = $mainframe->getCfg( 'live_site' ). '/index2.php?option=com_jcomments&task=rss_full&no_html=1';
$rss_icon_link = $mainframe->getCfg('live_site'). '/modules/jcomments/rss.gif';
}
?>
<div align="center"><a href="<?php echo $rss_link; ?>"><img src="<?php echo $rss_icon_link; ?>" alt="<?php echo $label4rss; ?>" border="0" /></a></div>
<?php
}
}
}
}
// Set default values for all possible module parameters.
$params->def( 'moduleclass_sfx', '' );
$params->def( 'count', 5 );
$params->def( 'length', 20 );
$params->def( 'type', 1 );
$params->def( 'showcomments', 0 );
switch ( intval( $params->get( 'type' ) ) ) {
case 1:
modJCommentsLatest( $params );
break;
case 2:
modJCommentsLatestCommented( $params );
break;
case 3:
modJCommentsMostCommented( $params );
break;
case 4:
modJCommentsLatest( $params, true, 'date' );
break;
case 5:
modJCommentsLatest( $params, false, 'vote' );
break;
default:
modJCommentsLatest( $params );
break;
}
?>