- Posts: 382
- Thank you received: 77
Cpanel order don't use canonical url and breaks it
10 years 8 months ago #230714
by almika
Cpanel order don't use canonical url and breaks it was created by almika
-- HikaShop version -- : 2.6.0
-- Joomla version -- : 3.4.6
Hi,
My setting for canonical url is "Use canonical URL and generate it if missing".
I checked all canonical url for products. All was fine.
But then I see - some url were broken.
Just now I know that is happened after a user see his order in cpanel.
Products' show in cpanel orders don't use canonical url's from product table and rewrite it.
If I set "Use canonical URL", Cpanel/order/show don't rewrite it, but no use it still.
Any advices, please.
Thank you.
-- Joomla version -- : 3.4.6
Hi,
My setting for canonical url is "Use canonical URL and generate it if missing".
I checked all canonical url for products. All was fine.
But then I see - some url were broken.
Just now I know that is happened after a user see his order in cpanel.
Products' show in cpanel orders don't use canonical url's from product table and rewrite it.
If I set "Use canonical URL", Cpanel/order/show don't rewrite it, but no use it still.
Any advices, please.
Thank you.
Please Log in or Create an account to join the conversation.
10 years 8 months ago #230732
by nicolas
Replied by nicolas on topic Cpanel order don't use canonical url and breaks it
Hi,
Edit the file "show" of the view "order" via the menu Display>Views and replace its content with:
and that should fix the issue.
Edit the file "show" of the view "order" via the menu Display>Views and replace its content with:
Code:
<?php
$colspan = 2;
global $Itemid;
$url_itemid = '';
if(!empty($Itemid)) {
$url_itemid = '&Itemid=' . $Itemid;
}
$config = hikashop_config();
?>
<div id="hikashop_order_main">
<fieldset>
<div class="header hikashop_header_title">
<h1>
<?php
if($this->invoice_type == 'order' || empty($this->element->order_invoice_number)) {
echo JText::_('HIKASHOP_ORDER').':'.$this->element->order_number;
} else {
echo JText::_('INVOICE').':'.$this->element->order_invoice_number;
}
?>
</h1>
</div>
<?php
if($this->invoice_type == 'order') {
?>
<div class="toolbar hikashop_header_buttons" id="toolbar">
<table>
<tr>
<?php
if(hikashop_level(1)) {
if($this->config->get('print_invoice_frontend') && !in_array($this->element->order_status, array('created','refunded','cancelled'))) {
?>
<td><?php
echo $this->popup->display(
'<span class="icon-32-print" title="'. JText::_('PRINT_INVOICE').'"></span>'. JText::_('PRINT_INVOICE'),
'PRINT_INVOICE',
hikashop_completeLink('order&task=invoice&order_id='.$this->element->order_id.$url_itemid,true),
'hikashop_print_invoice',
760, 480, '', '', 'link'
);
?></td>
<?php
}
}
?>
<td>
<a id="hikashop_order_back_button" onclick="submitbutton('cancel'); return false;" href="#">
<span class="icon-32-back" title="<?php echo JText::_('HIKA_BACK'); ?>"></span>
<?php echo JText::_('HIKA_BACK'); ?>
</a>
</td>
</tr>
</table>
</div>
<?php
}
?>
</fieldset>
<form action="<?php echo hikashop_completeLink('order'.$url_itemid); ?>" method="post" name="adminForm" id="adminForm">
<table width="100%">
<tr>
<td>
<div id="hikashop_order_right_part" class="hikashop_order_right_part">
<?php
if($this->invoice_type == 'order' || empty($this->element->order_invoice_created)) {
echo JText::_('DATE').': '.hikashop_getDate($this->element->order_created, '%d %B %Y');
} else {
echo JText::_('DATE').': '.hikashop_getDate($this->element->order_invoice_created, '%d %B %Y');
}
?>
<br/>
<?php
if($this->invoice_type == 'order' || empty($this->element->order_invoice_number)) {
echo JText::_('HIKASHOP_ORDER').': '.@$this->element->order_number;
} else {
echo JText::_(strtoupper($this->invoice_type)).': '.@$this->element->order_invoice_number;
}
?>
</div>
<div id="hikashop_order_left_part" class="hikashop_order_left_part"><?php
echo $this->store_address;
?></div>
</td>
</tr>
<tr>
<td>
<table width="100%">
<tr>
<?php
$params = null;
$js = '';
?>
<?php
if(!empty($this->element->billing_address)) {
?>
<td>
<fieldset class="adminform" id="htmlfieldset_billing">
<legend style="background-color: #FFFFFF;"><?php echo JText::_('HIKASHOP_BILLING_ADDRESS'); ?></legend>
<?php
$addressClass = hikashop_get('class.address');
echo $addressClass->displayAddress($this->element->fields,$this->element->billing_address,'address');
?>
</fieldset>
</td>
<?php
}
if(!empty($this->element->order_shipping_id) && !empty($this->element->shipping_address)) {
?>
<td>
<fieldset class="adminform" id="htmlfieldset_shipping">
<legend style="background-color: #FFFFFF;"><?php echo JText::_('HIKASHOP_SHIPPING_ADDRESS'); ?></legend>
<?php
$override = false;
if(method_exists($this->currentShipping, 'getShippingAddress')) {
$override = $this->currentShipping->getShippingAddress($this->element->order_shipping_id);
}
if($override !== false ) {
echo $override;
} else {
$addressClass = hikashop_get('class.address');
echo $addressClass->displayAddress($this->element->fields, $this->element->shipping_address, 'address');
}
?>
</fieldset>
</td>
<?php
}
?>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<fieldset class="adminform" id="htmlfieldset_products">
<legend style="background-color: #FFFFFF;"><?php echo JText::_('PRODUCT_LIST'); ?></legend>
<table cellpadding="1" width="100%">
<thead>
<tr>
<th class="hikashop_order_item_name_title title"><?php
echo JText::_('PRODUCT');
?></th>
<?php
$files = false;
foreach($this->order->products as $product ){
if(!empty($product->files)) {
$files = true;
break;
}
}
if($this->invoice_type == 'order' && $files) {
$colspan++;
?>
<th class="hikashop_order_item_files_title title"><?php
echo JText::_('HIKA_FILES');
?></th>
<?php
}
?>
<th class="hikashop_order_item_price_title title"><?php
echo JText::_('UNIT_PRICE');
?></th>
<th class="hikashop_order_item_quantity_title title titletoggle"><?php
echo JText::_('PRODUCT_QUANTITY');
?></th>
<th class="hikashop_order_item_total_title title titletoggle"><?php
echo JText::_('PRICE');
?></th>
</tr>
</thead>
<tbody>
<?php
$k=0;
$group = $this->config->get('group_options',0);
$productClass = hikashop_get('class.product');
foreach($this->order->products as $product) {
if($group && $product->order_product_option_parent_id)
continue;
?>
<tr class="row<?php echo $k;?>">
<td class="hikashop_order_item_name_value">
<?php
if($this->invoice_type=='order' && !empty($product->product_id)) {
$prodData = $productClass->get($product->product_id);
?>
<a class="hikashop_order_product_link" href="<?php echo hikashop_contentLink('product&task=show&cid='.$product->product_id.$url_itemid,$prodData); ?>">
<?php
}
?>
<p class="hikashop_order_product_name">
<?php echo $product->order_product_name; ?>
<?php if($this->config->get('show_code')) { ?>
<span class="hikashop_product_code_order"><?php echo $product->order_product_code; ?></span>
<?php } ?>
</p>
<?php
if($group) {
$display_item_price = false;
foreach($this->order->products as $j => $optionElement) {
if($optionElement->order_product_option_parent_id != $product->order_product_id)
continue;
if($optionElement->order_product_price > 0) {
$display_item_price = true;
}
}
if($display_item_price) {
if($this->config->get('price_with_tax')) {
echo ' '.$this->currencyHelper->format($product->order_product_price + $product->order_product_tax, $this->order->order_currency_id);
} else {
echo ' '.$this->currencyHelper->format($product->order_product_price, $this->order->order_currency_id);
}
}
}
?>
<?php if($this->invoice_type == 'order' && !empty($product->product_id)) { ?>
</a>
<?php } ?>
<p class="hikashop_order_product_custom_item_fields">
<?php
if(hikashop_level(2) && !empty($this->fields['item'])) {
foreach($this->fields['item'] as $field) {
$namekey = $field->field_namekey;
if(!empty($product->$namekey) && strlen($product->$namekey)) {
echo '<p class="hikashop_order_item_'.$namekey.'">' .
$this->fieldsClass->getFieldName($field) . ': ' .
$this->fieldsClass->show($field,$product->$namekey) .
'</p>';
}
}
}
if($group) {
foreach($this->order->products as $j => $optionElement) {
if($optionElement->order_product_option_parent_id != $product->order_product_id)
continue;
$product->order_product_price += $optionElement->order_product_price;
$product->order_product_tax += $optionElement->order_product_tax;
$product->order_product_total_price += $optionElement->order_product_total_price;
$product->order_product_total_price_no_vat += $optionElement->order_product_total_price_no_vat;
?>
<p class="hikashop_order_option_name">
<?php
echo $optionElement->order_product_name;
if($optionElement->order_product_price > 0) {
if($this->config->get('price_with_tax')) {
echo ' ( + '.$this->currencyHelper->format($optionElement->order_product_price + $optionElement->order_product_tax, $this->order->order_currency_id).' )';
} else {
echo ' ( + '.$this->currencyHelper->format($optionElement->order_product_price, $this->order->order_currency_id).' )';
}
}
?>
</p>
<?php
}
}
?>
</p>
<?php
if(!empty($product->extraData))
echo '<p class="hikashop_order_product_extra">' . (is_string($product->extraData) ? $product->extraData : implode('<br/>', $product->extraData)) . '</p>';
?>
</td>
<?php if($this->invoice_type == 'order' && $files) { ?>
<td class="hikashop_order_item_files_value">
<?php
if(!empty($product->files) && ($this->order_status_download_ok || bccomp($product->order_product_price, 0, 5) == 0)) {
$html = array();
foreach($product->files as $file) {
$fileHtml = '';
if(!empty($this->download_time_limit) && ($this->download_time_limit + (!empty($this->order->order_invoice_created) ? $this->order->order_invoice_created : $this->order->order_created)) < time()) {
$fileHtml = JText::_('TOO_LATE_NO_DOWNLOAD');
}
if(!empty($file->file_limit) && (int)$file->file_limit != 0) {
$download_number_limit = $file->file_limit;
if($download_number_limit < 0)
$download_number_limit = 0;
} else {
$download_number_limit = $this->download_number_limit;
}
if(!empty($download_number_limit) && $download_number_limit<=$file->download_number) {
$fileHtml = JText::_('MAX_REACHED_NO_DOWNLOAD');
}
if(empty($fileHtml)) {
if(empty($file->file_name)) {
$file->file_name = JText::_('DOWNLOAD_NOW');
}
$file_pos = '';
if(!empty($file->file_pos)) {
$file_pos = '&file_pos='.$file->file_pos;
}
$fileHtml = '<a href="'.hikashop_completeLink('order&task=download&file_id='.$file->file_id.'&order_id='.$this->order->order_id.$file_pos.$url_itemid).'">'.$file->file_name.'</a>';
$order_created = (empty($this->order->order_invoice_created) ? $this->order->order_created : $this->order->order_invoice_created);
if(!empty($this->download_time_limit))
$fileHtml .= ' / ' . JText::sprintf('UNTIL_THE_DATE', hikashop_getDate($order_created + $this->download_time_limit));
if(!empty($download_number_limit))
$fileHtml .= ' / '. JText::sprintf('X_DOWNLOADS_LEFT', $download_number_limit - $file->download_number);
} else {
if(empty($file->file_name)) {
$file->file_name = JText::_('EMPTY_FILENAME');
}
$fileHtml = $file->file_name . ' ' . $fileHtml;
}
$html[] = $fileHtml;
}
echo implode('<br/>', $html);
}
?>
</td>
<?php } ?>
<td class="hikashop_order_item_price_value"><?php
if($this->config->get('price_with_tax')) {
echo $this->currencyHelper->format($product->order_product_price + $product->order_product_tax, $this->order->order_currency_id);
} else {
echo $this->currencyHelper->format($product->order_product_price, $this->order->order_currency_id);
}
?></td>
<td class="hikashop_order_item_quantity_value"><?php
echo $product->order_product_quantity;
?></td>
<td class="hikashop_order_item_total_value"><?php
if($this->config->get('price_with_tax')) {
echo $this->currencyHelper->format($product->order_product_total_price,$this->order->order_currency_id);
} else {
echo $this->currencyHelper->format($product->order_product_total_price_no_vat,$this->order->order_currency_id);
}
?></td>
</tr>
<?php
$k = 1 - $k;
}
?>
<tr>
<td style="border-top:2px solid #B8B8B8;" colspan="<?php echo $colspan; ?>">
</td>
<td class="hikashop_order_subtotal_title" style="border-top:2px solid #B8B8B8;" class="key">
<label><?php
echo JText::_( 'SUBTOTAL' );
?></label>
</td>
<td class="hikashop_order_subtotal_value" style="border-top:2px solid #B8B8B8;"><?php
if($this->config->get('price_with_tax')) {
echo $this->currencyHelper->format($this->order->order_subtotal,$this->order->order_currency_id);
} else {
echo $this->currencyHelper->format($this->order->order_subtotal_no_vat,$this->order->order_currency_id);
}
?></td>
</tr>
<?php
$taxes = round($this->order->order_subtotal - $this->order->order_subtotal_no_vat + $this->order->order_shipping_tax + $this->order->order_payment_tax - $this->order->order_discount_tax,$this->currencyHelper->getRounding($this->order->order_currency_id, true));
if(!empty($this->order->order_discount_code)) {
?>
<tr>
<td colspan="<?php echo $colspan; ?>">
</td>
<td class="hikashop_order_coupon_title key">
<label><?php
echo JText::_( 'HIKASHOP_COUPON' );
?></label>
</td>
<td class="hikashop_order_coupon_value"><?php
if($this->config->get('price_with_tax')) {
echo $this->currencyHelper->format($this->order->order_discount_price*-1.0,$this->order->order_currency_id);
} else {
echo $this->currencyHelper->format(($this->order->order_discount_price-@$this->order->order_discount_tax)*-1.0,$this->order->order_currency_id);
}
?></td>
</tr>
<?php
}
if(!empty($this->order->order_shipping_method)) {
?>
<tr>
<td colspan="<?php echo $colspan; ?>">
</td>
<td class="hikashop_order_shipping_title key">
<label><?php
echo JText::_( 'SHIPPING' );
?></label>
</td>
<td class="hikashop_order_shipping_value"><?php
if($this->config->get('price_with_tax')) {
echo $this->currencyHelper->format($this->order->order_shipping_price,$this->order->order_currency_id);
} else {
echo $this->currencyHelper->format($this->order->order_shipping_price-@$this->order->order_shipping_tax,$this->order->order_currency_id);
}
?></td>
</tr>
<?php
}
if(!empty($this->order->additional)) {
$exclude_additionnal = explode(',', $this->config->get('order_additional_hide', ''));
foreach($this->order->additional as $additional) {
if(in_array($additional->order_product_name, $exclude_additionnal))
continue;
?>
<tr>
<td colspan="<?php echo $colspan; ?>">
</td>
<td class="hikashop_order_additionall_title key">
<label><?php
echo JText::_($additional->order_product_name);
?></label>
</td>
<td class="hikashop_order_additional_value"><?php
if(!empty($additional->order_product_price)) {
$additional->order_product_price = (float)$additional->order_product_price;
}
if(!empty($additional->order_product_price) || empty($additional->order_product_options)) {
if($config->get('price_with_tax')){
echo $this->currencyHelper->format($additional->order_product_price + @$additional->order_product_tax, $this->order->order_currency_id);
}else{
echo $this->currencyHelper->format($additional->order_product_price, $this->order->order_currency_id);
}
} else {
echo $additional->order_product_options;
}
?></td>
</tr>
<?php
}
}
if(!empty($this->order->order_payment_method) && $this->order->order_payment_price != 0) {
?>
<tr>
<td colspan="<?php echo $colspan; ?>">
</td>
<td class="hikashop_order_payment_title key">
<label><?php
echo JText::_( 'HIKASHOP_PAYMENT' );
?></label>
</td>
<td class="hikashop_order_payment_value" ><?php
if($this->config->get('price_with_tax')) {
echo $this->currencyHelper->format($this->order->order_payment_price, $this->order->order_currency_id);
} else {
echo $this->currencyHelper->format($this->order->order_payment_price - @$this->order->order_payment_tax, $this->order->order_currency_id);
}
?></td>
</tr>
<?php
}
if($taxes != 0){
if($this->config->get('detailed_tax_display') && !empty($this->order->order_tax_info)) {
foreach($this->order->order_tax_info as $tax) {
?>
<tr>
<td colspan="<?php echo $colspan; ?>">
</td>
<td class="hikashop_order_tax_title key">
<label><?php
echo $tax->tax_namekey;
?></label>
</td>
<td class="hikashop_order_tax_value"><?php
echo $this->currencyHelper->format($tax->tax_amount, $this->order->order_currency_id);
?></td>
</tr>
<?php
}
} else {
?>
<tr>
<td colspan="<?php echo $colspan; ?>">
</td>
<td class="hikashop_order_tax_title key">
<label><?php
echo JText::_( 'VAT' );
?></label>
</td>
<td class="hikashop_order_tax_value"><?php
echo $this->currencyHelper->format($taxes,$this->order->order_currency_id);
?></td>
</tr>
<?php
}
}
?>
<tr>
<td colspan="<?php echo $colspan; ?>">
</td>
<td class="hikashop_order_total_title key">
<label><?php
echo JText::_( 'HIKASHOP_TOTAL' );
?></label>
</td>
<td class="hikashop_order_total_value" ><?php
echo $this->currencyHelper->format($this->order->order_full_price, $this->order->order_currency_id);
?></td>
</tr>
</tbody>
</table>
</fieldset>
</td>
</tr>
<tr>
<td>
<?php
if(!empty($this->shipping)) {
echo JText::_('HIKASHOP_SHIPPING_METHOD') . ' : ';
if(is_string($this->order->order_shipping_method)) {
if(strpos($this->order->order_shipping_id, '-') !== false)
echo $this->shippingClass->getShippingName($this->order->order_shipping_method, $this->order->order_shipping_id);
else
echo $this->shipping->getName($this->order->order_shipping_method, $this->order->order_shipping_id);
} else
echo implode(', ', $this->order->order_shipping_method);
echo '<br/>';
}
?>
<?php
if(!empty($this->payment)) {
echo JText::_('HIKASHOP_PAYMENT_METHOD') . ' : ' . $this->payment->getName($this->order->order_payment_method, $this->order->order_payment_id);
}
?>
</td>
</tr>
<tr>
<td>
<?php
JPluginHelper::importPlugin('hikashop');
JPluginHelper::importPlugin('hikashopshipping');
JPluginHelper::importPlugin('hikashoppayment');
$dispatcher = JDispatcher::getInstance();
$dispatcher->trigger('onAfterOrderProductsListingDisplay', array(&$this->order, 'order_front_show'));
?>
</td>
</tr>
<?php if(hikashop_level(2) && !empty($this->fields['order'])) { ?>
<tr>
<td>
<fieldset class="hikashop_order_custom_fields_fieldset">
<legend><?php echo JText::_('ADDITIONAL_INFORMATION'); ?></legend>
<table class="hikashop_order_custom_fields_table adminlist" cellpadding="1" width="100%">
<?php
foreach($this->fields['order'] as $fieldName => $oneExtraField) {
if(!@$oneExtraField->field_frontcomp || empty($this->order->$fieldName))
continue;
?>
<tr class="hikashop_order_custom_field_<?php echo $fieldName;?>_line">
<td class="key"><?php
echo $this->fieldsClass->getFieldName($oneExtraField);
?></td>
<td><?php
echo $this->fieldsClass->show($oneExtraField,$this->order->$fieldName);
?></td>
</tr>
<?php
}
?>
</table>
</fieldset>
</td>
</tr>
<?php } ?>
<?php if(hikashop_level(2) && !empty($this->order->entries)) { ?>
<tr>
<td>
<fieldset class="htmlfieldset_entries">
<legend><?php echo JText::_('HIKASHOP_ENTRIES'); ?></legend>
<table class="hikashop_entries_table adminlist" cellpadding="1" width="100%">
<thead>
<tr>
<th class="title titlenum"><?php
echo JText::_( 'HIKA_NUM' );
?></th>
<?php
if(!empty($this->fields['entry'])) {
foreach($this->fields['entry'] as $field) {
echo '<th class="title">' . $this->fieldsClass->trans($field->field_realname) . '</th>';
}
}
?>
</tr>
</thead>
<tbody>
<?php
$k = 0;
$i = 1;
foreach($this->order->entries as $entry) {
?>
<tr class="row<?php echo $k;?>">
<td><?php
echo $i;
?></td>
<?php
if(!empty($this->fields['entry'])) {
foreach($this->fields['entry'] as $field) {
$namekey = $field->field_namekey;
if(!empty($entry->$namekey))
echo '<td>'.$this->fieldsClass->show($field, $entry->$namekey).'</td>';
}
}
?>
</tr>
<?php
$k = 1 - $k;
$i++;
}
?>
</tbody>
</table>
</fieldset>
</td>
</tr>
<?php } ?>
</table>
<input type="hidden" name="cid" value="<?php echo (int)$this->element->order_id; ?>" />
<input type="hidden" name="option" value="<?php echo HIKASHOP_COMPONENT; ?>" />
<input type="hidden" name="task" value="" />
<input type="hidden" name="ctrl" value="<?php echo JRequest::getCmd('ctrl'); ?>" />
<input type="hidden" name="cancel_redirect" value="<?php echo JRequest::getString('cancel_redirect'); ?>" />
<input type="hidden" name="cancel_url" value="<?php echo JRequest::getString('cancel_url'); ?>" />
<?php echo JHTML::_( 'form.token' ); ?>
</form>
</div>
<div style="page-break-after:always"></div>
The following user(s) said Thank You: almika
Please Log in or Create an account to join the conversation.
10 years 8 months ago #230746
by almika
Replied by almika on topic Cpanel order don't use canonical url and breaks it
Thank you very much, nicolas!
Excellent work!
Merci beaucoup, mon ami.
Excellent work!
Merci beaucoup, mon ami.
Please Log in or Create an account to join the conversation.
Time to create page: 0.061 seconds