我有一个代码,css,js和所有内容,当我点击按钮时,它会改变它的状态,但它旁边的计数器保持不变。计数器仅在刷新页面时更改,如何修复?
这是代码。
/**
* Implements hook_menu().
*/
function likepost_menu() {
$items['likepost/like/%'] = array(
'title' => 'Like',
'page callback' => 'likepost_like',
'page arguments' => array(2),
'access arguments' => array('access content'),
'type' => MENU_SUGGESTED_ITEM,
);
return $items;
}
function likepost_like($nodeid) {
$nodeid = (int)$nodeid;
global $user;
$like = likepost_get_like($nodeid, $user->uid);
if ($like !== 0) {
db_delete('likepost_table_for_likes')
->condition('userid', $user->uid)
->condition('nodeid', $nodeid)
->execute();
//Update the like value , which will be sent as response
$like = 0;
} else {
db_insert('likepost_table_for_likes')
->fields(array(
'userid' => $user->uid,
'nodeid' => $nodeid
))
->execute();
//Update the like value , which will be sent as response
$like = 1;
}
$total_count = likepost_get_total_like($nodeid);
drupal_json_output(array(
'like_status' => $like,
'total_count' => $total_count
)
);
}
/**
* Return the total like count for a node.
*/
function likepost_get_total_like($nid) {
$total_count = db_query('SELECT count(*) from {likepost_table_for_likes} where nodeid = :nodeid',
array(':nodeid' => $nid))->fetchField();
return (int)$total_count;
}
/**
* Return whether the current user has liked the node.
*/
function likepost_get_like($nodeid, $userid) {
$like = db_query('SELECT count(*) FROM {likepost_table_for_likes} WHERE
nodeid = :nodeid AND userid = :userid', array(':nodeid' => $nodeid, ':userid' => $userid))->fetchField();
return (int)$like;
}
/**
* Implementation of hook_node_view
*/
function likepost_node_view($node, $view_mode) {
if ($view_mode == 'full'){
$node->content['likepost_display'] = array('#markup' => display_like_post_details($node->nid),'#weight' => 100);
$node->content['#attached']['js'][] = array('data' => drupal_get_path('module', 'likepost') .'/likepost.js');
$node->content['#attached']['css'][] = array('data' => drupal_get_path('module', 'likepost') .'/likepost.css');
}
}
/**
* Displays the Like post details.
*/
function display_like_post_details($nid) {
global $user;
$totalLike = likepost_get_total_like($nid);
$hasCurrentUserLiked = likepost_get_like($nid , $user->uid);
return theme('like_post',array('nid' =>$nid, 'totalLike' =>$totalLike, 'hasCurrentUserLiked' => $hasCurrentUserLiked));
}
/**
* Implements hook_theme().
*/
function likepost_theme() {
$themes = array (
'like_post' => array(
'arguments' => array('nid','totalLike','hasCurrentUserLiked'),
),
);
return $themes;
}
function theme_like_post($arguments) {
$nid = $arguments['nid'];
$totalLike = $arguments['totalLike'];
$hasCurrentUserLiked = $arguments['hasCurrentUserLiked'];
global $base_url;
$output = '<div class=”likepost”>';
$output .= 'Total number of likes on the post are ';
$output .= '
'.$totalLike.'
';
if($hasCurrentUserLiked == 0) {
$linkText = 'Like';
} else {
$linkText = 'Delete Like';
}
$output .= l($linkText, $base_url.'/likepost/like/'.$nid, array('attributes' => array('class' => 'like-link')));
$output .= '</div>';
return $output;
}
启用模块时,css也不起作用。我是Drupal的新手,希望你能帮助我。这是js文件
jQuery(document).ready(function () {
jQuery('a.like-link').click(function () {
jQuery.ajax({
type: 'POST',
url: this.href,
dataType: 'json',
success: function (data) {
if(data.like_status == 0) {
jQuery('a.like-link').html('Like');
}
else {
jQuery('a.like-link').html('Delete Like');
}
jQuery('.total_count').html(data.total_count);
},
data: 'js=1'
});
return false;
});
});