mesnitu:
Hi
You can. I'm not sure if I can guide you, cause it has been a while since I did that, but look at :
admin/includes/modules/product_bookx/ and compare with the normal product.
The files are this ones:
collect_info.php
copy_to_confirm.php
delete_product_confirm.php
preview_info.php
update_product.php
Ex: For the update , I have a include file, because bookx looks for a additional update_product*.php around line 380 ( I have 0.9.4-revision4 of bookx), but in others I dont', because I became aware of that latter. So see if you can take advantage of that.
//** look for additional update_product*.php files and include now *//
$incl_dir = @dir(DIR_FS_ADMIN . '/includes/modules/product_bookx');
while ($file = $incl_dir->read()) {
if ('update_product_' == substr($file, 0, 15)) {
include_once DIR_FS_ADMIN . '/includes/modules/product_bookx/' . $file; // This should handle any extra values collected in collect_info.php
}
}
$incl_dir->close();
>
> So I created a update_product_seo.php that has ( **in the same folder)**
>
> ```php
// BEGIN CEON URI MAPPING 1 of 1
require_once(DIR_WS_CLASSES . 'class.CeonURIMappingAdminProductPages.php');
$ceon_uri_mapping_admin = new CeonURIMappingAdminProductPages();
$ceon_uri_mapping_admin->updateProductHandler($products_id, $zc_products->get_handler($product_type));
// END CEON URI MAPPING 1 of 1
For the collect_info.php same thing, created a collect_info_seo.php,
// BEGIN CEON URI MAPPING 1 of 2
require_once(DIR_WS_CLASSES . 'class.CeonURIMappingAdminProductPages.php');
$ceon_uri_mapping_admin = new CeonURIMappingAdminProductPages();
$ceon_uri_mapping_admin->collectInfoHandler();
// END CEON URI MAPPING 1 of 2
>
> **and around line 1158 **
>
> ```php
<?php if (isset($extra_html_end)) echo $extra_html_end; // this was possibly filled by an included file above ?>
<?php // BEGIN CEON URI MAPPING 2 of 2
echo $ceon_uri_mapping_admin->collectInfoBuildURIMappingFields();
// END CEON URI MAPPING 2 of 2 ?>
In the preview_info.php , it's diferent (don't ask me why)
Around line 84 you'll see :
foreach ($bookx_author_ids as $key => $author_id) {
$pInfo->authors_display .= (!empty($pInfo->authors_display) ? ' | ' : '') . ($bookx_author_type_ids ? bookx_get_author_type_description($bookx_author_type_ids[$key], (int)$_SESSION['languages_id']) . ': ' : '') . bookx_get_author_name($author_id);
}
}
// BEGIN CEON URI MAPPING 1 of 4
require_once(DIR_WS_CLASSES . 'class.CeonURIMappingAdminProductPages.php');
$ceon_uri_mapping_admin = new CeonURIMappingAdminProductPages();
$ceon_uri_mapping_admin->productPreviewProcessSubmission($current_category_id);
// END CEON URI MAPPING 1 of 4
} else {
>
> Around line 146
>
> ```php
while (!$genres->EOF) {
$pInfo->genres_display .= (!empty($pInfo->genres_display) ? ' | ' : '') . $genres->fields['genre_description'];
$genres->MoveNext();
}
// BEGIN CEON URI MAPPING 2 of 4
require_once(DIR_WS_CLASSES . 'class.CeonURIMappingAdminProductPages.php');
$ceon_uri_mapping_admin = new CeonURIMappingAdminProductPages();
$ceon_uri_mapping_admin->productPreviewInitialLoad((int) $_GET['pID'],
$zc_products->get_handler((int) $_GET['product_type']));
// END CEON URI MAPPING 2 of 4
}
Line 274
<tr>
<td class="main"><?php echo sprintf(TEXT_PRODUCT_MORE_INFORMATION, $pInfo->products_url); ?></td>
</tr>
<?php
}
?>
<?php // BEGIN CEON URI MAPPING 3 of 4
$ceon_uri_mapping_admin->productPreviewOutputURIMappingInfo($languages[$i]);
// END CEON URI MAPPING 3 of 4 ?>
<tr>
<td><?php echo zen_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
</tr>
```
>
> Around 353
>
> ```php
echo ( (isset($_GET['search']) && !empty($_GET['search'])) ? zen_draw_hidden_field('search', $_GET['search']) : '') . ( (isset($_POST['search']) && !empty($_POST['search']) && empty($_GET['search'])) ? zen_draw_hidden_field('search', $_POST['search']) : '');
// BEGIN CEON URI MAPPING 4 of 4
echo $ceon_uri_mapping_admin->productPreviewBuildHiddenFields();
// END CEON URI MAPPING 4 of 4
echo zen_image_submit('button_back.gif', IMAGE_BACK, 'name="edit"') . '####';
```
>
> copy_to_confirm.php
>
> ```php
if ($_POST['copy_discounts'] == 'copy_discounts_yes') {
zen_copy_discounts_to_product($old_products_id, (int)$dup_products_id);
}
// BEGIN CEON URI MAPPING 1 of 1
require_once(DIR_WS_CLASSES . 'class.CeonURIMappingAdminProductPages.php');
$ceon_uri_mapping_admin = new CeonURIMappingAdminProductPages();
$ceon_uri_mapping_admin->copyToConfirmHandler($products_id_from, $products_id_to,
$product->fields['products_type'], $zc_products->get_handler($product->fields['products_type']),
$categories_id);
// END CEON URI MAPPING 1 of 1
>
> But I also have the metatags ( not entirely working ), so in this folder I have
>
> collect_info_metatags.php
> collect_info_seo.php
> delete_product_confirm.php
> preview_info.php
> update_product_seo.php
> collect_info.php
> copy_to_confirm.php
> preview_info_meta_tags.php
> update_product.php
>
> I don't remember changing anything in meta_tags files. I think I just copy from modules/product
> Note: Metatags are working as normal product, but as I remember without them, I couldn't had any metatags at all.
> This is what I remember.... hope it can guide you.
First let me thank you very, very much for easy populate/bookx plugin! Installed and working without a glitch. using Easy Populate 4.0.33a - Beta 02-29-2016 w/ BookX0.9.9
I know it has been some time since I tried to implement the ceon URI mods you stated above but I could never get it to work as intended. Could you provide some help at this time? My setup:
Zen Cart 1.54
Responsive_sheffield_blue v2.0 template
Bookx version 0.9.4 r8
PHP Version 5.3.29
When I tried to implement the changes you outlined above, I got the ceon uri code at the top of the collect_info page and could not get any further, and of course no ceon box at the bottom of the page, so could we start there if you have the time. There were other problems but I thought if I could get the collect_info.php working I might be able to figure out the other pages and maybe the metatags problems also.
Best regards,
Frank