最近一直在调整页面,一直在思考用户体验度。发现原版zencart不能在产品页面直接显示产品的评论,特地对页面进行修改,修改成可以直接在产品 页面显示产品评论。其修改步骤如下:
第一:从\modules\pages\product_reviews\product_reviews\header_php.php, 复制以下代码放到\modules\pages\product_reviews\product_info\header_php.php(就是把前面文件的代码整个复制到后面的header.php,去头去尾)
代码如下:
$zco_notifier->notify(‘NOTIFY_HEADER_START_PRODUCT_REVIEWS’);
// check product exists and current
// if product does not exist or is status 0 send to _info page
$products_reviews_check_query = "SELECT count(*) AS count
FROM " . TABLE_PRODUCTS . " p
WHERE p.products_id= :productsID
AND p.products_status = 1";
$products_reviews_check_query = $db->bindVars($products_reviews_check_query, ‘:productsID’, $_GET['products_id'], ‘integer’);
$products_reviews_check = $db->Execute($products_reviews_check_query);
if ($products_reviews_check->fields['count'] < 1) {
zen_redirect(zen_href_link(zen_get_info_page((int)$_GET['products_id']), ‘products_id=’ . (int)$_GET['products_id']));
}
$review_query_raw = "SELECT p.products_id, p.products_price, p.products_tax_class_id, p.products_image, p.products_model, pd.products_name
FROM " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd
WHERE p.products_id = :productsID
AND p.products_status = 1
AND p.products_id = pd.products_id
AND pd.language_id = :languagesID";
$review_query_raw = $db->bindVars($review_query_raw, ‘:productsID’, $_GET['products_id'], ‘integer’);
$review_query_raw = $db->bindVars($review_query_raw, ‘:languagesID’, $_SESSION['languages_id'], ‘integer’);
$review = $db->Execute($review_query_raw);
$products_price = zen_get_products_display_price($review->fields['products_id']);
if (zen_not_null($review->fields['products_model'])) {
$products_name = $review->fields['products_name'] . ‘<br /><span class="smallText">[' . $review->fields['products_model'] . ‘]</span>’;
} else {
$products_name = $review->fields['products_name'];
}
// set image
// $products_image = $review->fields['products_image'];
if ($review->fields['products_image'] == ” and PRODUCTS_IMAGE_NO_IMAGE_STATUS == ‘1′) {
$products_image = PRODUCTS_IMAGE_NO_IMAGE;
} else {
$products_image = $review->fields['products_image'];
}
$review_status = " and r.status = 1";
$reviews_query_raw = "SELECT r.reviews_id, left(rd.reviews_text, 100) as reviews_text, r.reviews_rating, r.date_added, r.customers_name
FROM " . TABLE_REVIEWS . " r, " . TABLE_REVIEWS_DESCRIPTION . " rd
WHERE r.products_id = :productsID
AND r.reviews_id = rd.reviews_id
AND rd.languages_id = :languagesID " . $review_status . "
ORDER BY r.reviews_id desc";
$reviews_query_raw = $db->bindVars($reviews_query_raw, ‘:productsID’, $_GET['products_id'], ‘integer’);
$reviews_query_raw = $db->bindVars($reviews_query_raw, ‘:languagesID’, $_SESSION['languages_id'], ‘integer’);
$reviews_split = new splitPageResults($reviews_query_raw, MAX_DISPLAY_NEW_REVIEWS);
$reviews = $db->Execute($reviews_split->sql_query);
$reviewsArray = array();
while (!$reviews->EOF) {
$reviewsArray[] = array(‘id’=>$reviews->fields['reviews_id'],
‘customersName’=>$reviews->fields['customers_name'],
‘dateAdded’=>$reviews->fields['date_added'],
‘reviewsText’=>$reviews->fields['reviews_text'],
‘reviewsRating’=>$reviews->fields['reviews_rating']);
$reviews->MoveNext();
}
require(DIR_WS_MODULES . zen_get_module_directory(‘require_languages.php’));
$breadcrumb->add(NAVBAR_TITLE); (特别注意不要复制这一段,不然产品导航的后面会出现“NAVBAR_TITLE”)
第二步,从\templates \YOUR_TEMPLATE_NAME\templates\tpl_product_reviews_default.php,复制以下代码至: \templates\YOUR_TEMPLATE_NAME\templates\tpl_product_info_display.php文件的这 个标签处<!–eof Reviews button and count –>
代码如下:
<!–bof Reviews content –>
<?php
if ($reviews_split->number_of_rows > 0) {
if ((PREV_NEXT_BAR_LOCATION == ‘1′) || (PREV_NEXT_BAR_LOCATION == ‘3′)) {
?>
<div id=”productReviewsDefaultListingTopNumber”><?php echo $reviews_split->display_count(TEXT_DISPLAY_NUMBER_OF_REVIEWS); ?></div>
<div id=”productReviewsDefaultListingTopLinks”><?php echo TEXT_RESULT_PAGE . ‘ ‘ . $reviews_split->display_links(MAX_DISPLAY_PAGE_LINKS, zen_get_all_get_params(array(‘page’, ‘info’, ‘main_page’))); ?></div>
<?php
}
foreach ($reviewsArray as $reviews) {
?>
<hr />
<div><?php echo sprintf(TEXT_REVIEW_DATE_ADDED, zen_date_short($reviews['dateAdded'])); ?> <?php echo sprintf(TEXT_REVIEW_BY, zen_output_string_protected($reviews['customersName'])); ?></div>
<div><?php echo zen_image(DIR_WS_TEMPLATE_IMAGES . ’stars_’ . $reviews['reviewsRating'] . ‘.gif’, sprintf(TEXT_OF_5_STARS, $reviews['reviewsRating'])), sprintf(TEXT_OF_5_STARS, $reviews['reviewsRating']); ?></div>
<div><?php echo zen_break_string(zen_output_string_protected(stripslashes($reviews['reviewsText'])), 60, ‘-<br />’) . ((strlen($reviews['reviewsText']) >= 1000) ? ‘…’ : ”); ?></div>
<br />
<?php
}
?>
<?php
} else {
?>
<hr />
<div id=”productReviewsDefaultNoReviews”><?php echo TEXT_NO_REVIEWS . (REVIEWS_APPROVAL == ‘1′ ? ‘<br />’ . TEXT_APPROVAL_REQUIRED: ”); ?></div>
<br />
<?php
}
if (($reviews_split->number_of_rows > 0) && ((PREV_NEXT_BAR_LOCATION == ‘2′) || (PREV_NEXT_BAR_LOCATION == ‘3′))) {
?>
<hr />
<div id=”productReviewsDefaultListingBottomLinks”><?php echo TEXT_RESULT_PAGE . ‘ ‘ . $reviews_split->display_links(MAX_DISPLAY_PAGE_LINKS, zen_get_all_get_params(array(‘page’, ‘info’, ‘main_page’))); ?></div>
<?php
}
?>
<!–eof Reviews content –>
第三步,将常数TEXT_OF_5_STARS处理掉。找到语言文件includes/languages/english /product_info.php的结尾处加入代码: define(‘BOX_REVIEWS_TEXT_OF_5_STARS’, ‘%s of 5 Stars!’);
第四步,就是整理代码了,整理代码达到自己的效果。。。