Доработка Универсального каталога

+26
2.94K
На моем сайте Насосы и насосные станции (www.nasosu.com.ua) установлен InstantShop для раздела Насосы и насосные станции. Однако мой сайт отлично проиндексирован в обоих поисковиках на предмет Подшипников. Поэтому стала задача запустить магазин для разделе Подшипники в Универсальном каталоге. Для этого я применил опцию Магазин для требуемого раздела (УК).

После "Пришлось решать следующие задачи:"
вставьте
Заменить кнопку В корзину из основного магазина, Подробнее — СДЕЛАЛ для этого внес изменения в файл /templates/shop_atw/components/com_catalog_view.tpl
  1. <a class="button" href="/catalog/item{$item.id}.html" title="{$LANG.DETAILS}">
  2. <span>Подробнее</span>
  3. </a>
  4. <a class="button" href="/catalog/addcart{$item.id}.html" title="{$LANG.ADD_TO_CART}" style="margin-left:1px;" onclick="$('#AddtoCart').submit();">
  5. <span>В корзину</span>
  6. </a>
Нарисовать кнопки Подробнее с линзой, Оформить заказ, Вернуться — Сделал аналогично верхнему пункту только в файле /components/catalog/includes/shopcore.php
  1. echo '<div id="cart_buttons">';
  2. echo '<div id="cart_buttons1">';
  3. echo '<a class="button" href="javascript:saveCart()" title="'.$_LANG['SAVE'].'">';
  4. echo '<span>Сохранить</span>';
  5. echo '</a> ';
  6. echo '<a class="button" href="javascript:clearCart();" title="'.$_LANG['CLEAR_CART'].'">';
  7. echo '<span>Очистить</span>';
  8. echo '</a> ';
  9. echo '</div>';
  10. echo '<div id="cart_buttons2">';
  11. echo '<a class="button" href="'.$inCore->getBackURL().'" title="'.$_LANG['BACK_TO_SHOP'].'">';
  12. echo '<span>Вернуться к товару</span>';
  13. echo '</a> ';
  14. echo '<a class="button" href="/catalog/1028" title="Продолжить покупки">';
  15. echo '<span>Вернуться в каталог</span>';
  16. echo '</a> ';
  17. echo '<a class="button" href="/catalog/order.html" title="'.$_LANG['CART_ORDER'].'">';
  18. echo '<span>Оформить заказ</span>';
  19. echo '</a> ';
  20. echo '</div>';
  21. echo '</div>';
Карточка товара, цена и В корзину — СДЕЛАЛ для этого внес изменения в файл /templates/shop_atw/components/com_catalog_item.tpl. Там же добавил СЕО.
  1.  
  2. {* ====================================== Цена ============================== *}
  3. {if $cat.view_type=='shop'}
  4. <div id="shop_price">
  5. <a class="button" href="{$item_link}" alt=" цена подшипника {$item.title}" title="подшипник {$item.title} цена" id="shop_ac_item_link">
  6. <span>{$LANG.PRICE}: {$item.price} {$LANG.RUB}</span>
  7. </a>
  8. </div>
  9. {* ======================== Кнопка добавить в корзину ======================= *}
  10. <div id="shop_ac_itemdiv">
  11. <a class="button" href="/catalog/addcart{$item.id}.html"
  12. title="купить подшипник {$item.title}" id="shop_ac_item_link">
  13. <span>Купить</span>
  14. </a>
В карточку товара добавил фразу о том, что цена указана за наличный расчет, и +20% если Безнал. вот Список изменений
  1. <div style="margin-left: 5px; margin-top:
  2. 16px; padding-left: 11px; color: #272727;"><b>
  3. Цена подшипника {$item.title} указана за наличный расчет.</b>
  4. <b>При оплате по безналичному расчету + 20% к цене</b>
  5. </div>
При оформлении заказа добавил поле Адрес доставки, для этого изменил файл /language/components/catalog.php,
  1. $_LANG['ADRESS_DELIVERY'] ='Адрес доставки';
а также /components/catalog/includes/shopcore.php
  1.  
  2. echo '<tr>';
  3. echo '<td width="40%" align="right">'.$_LANG['ADRESS_DELIVERY'].': </td>';
  4. echo '<td width="60%" align="left"><input name="address_delivery" type="text" size="45" /></td>';
  5. echo '</tr>';
Написал текст письма которое уходит Покупателю -сделал для этого изменил /components/catalog/includes/shopcore.php
  1. $item_mail_message .= "На нашем сайте www.nasosu.com.ua от Вас получен заказ на подшипники. Объем заказа показан ниже: .\n";
  2. $item_mail_message .= $row . '. ' . $item['title'] . ' (' . $item['itemscount'] . ' x ' . $item['price'] . ' '.$_LANG['RUB'].') = ' . $item['totalprice'] . ' '.$_LANG['RUB'] . "\n";
  3. }
  4. ob_start(); shopDiscountsInfo($total); ob_clean();
  5. $total = number_format($total, 2, '.', '');
  6. $item_mail_message .= "\n" . $_LANG['TOTAL_ORDER_PRICE'].': '.$total.' '.$_LANG['RUB'] . "\n";
  7. $item_mail_message .= "Стоимость заказа указана за наличный расчет, без учета доставки.\n";
  8. $item_mail_message .= "Оплата на карту Приватбанка (№XXXX получатель: Вася Пупкин).\n";
  9. $item_mail_message .= "При оплате по безналичному расчету +20% к цене заказа.\n";
  10. $item_mail_message .= "Срок доставки 1-2 рабочих дня.\n";
В этом же файле нужно получить цену входящую и прибыль, ПОКА НЕ СДЕЛАЛ (может кто подскажет)
Нужно создать автоматическое вычисление цены безнала — ПОКА НЕ СДЕЛАЛ (может кто подскажет)

В связи с нестабильным курсом доллара, была задача создать вычисление цен в каталоге раздел Подшипники через курс.
И я нашел как мне кажется отличное элегантное решение:
1. Изменение в админ панели сайта (добавляем доллары в коэффициенты)
Для этого в файле admin/components/catalog/backend.php добавил строку
  1. <option value="USD" <?php if (@$mod['unit']=='USD') {echo 'selected';} ?>>Курс доллара</option>
2. Изменение в самом компоненте (добавляем формулы вычисления)
Для того, чтобы это работало нужно еще в файле /components/catalog/includes/shopcore.php добавить вычисление с новым коэффициентом
две строки, в разные места файла
  1. if ($dis['unit']=='USD'){ $total = $total*($dis['value']); }
  2. if ($dis['unit']=='USD'){ $price = $price*($dis['value']); }
Результатом этих изменений стало следующее. Товар введен в каталог к Долларах, но отображается на сайте в гривнах по курсу который можно изменять сколько угодно раз, а самое главное это то что все остальные коэффициенты работают. Мои изменения носили характер добавления.
Есть несколько не решенных задач. которые я не могу решить т.к. не являюсь специалистом пхп или программистом. Все что я делал носило исключительно здравый смысл и инженерную логику.
Буду рад, если кому-то моя информация будет полезна.
+3
eoleg eoleg 9 лет назад #
+
Домен конечно неудачный, я сначала подумал как на этот форум порнуха попала. laugh
+1
Yossarian Yossarian 9 лет назад #
Никогда не думал об этом.
Главное, что работает и продает. как насосы так и подшипники.
0
R161Net R161Net 9 лет назад #
Бывает! :)
0
sotastroy sotastroy 9 лет назад #
Долго искал цену в гривнах, оказывается она есть только в УК, шоп все равно в долларах. СЕО добавили - хорошо, но лучше бы добавили микроразметку.
Группе, к которой вы принадлежите, запрещено просматривать этот скрытый текст

Исправлений не много, но должны пригодиться. Сайт в целом - красивый, правда кое-где дефолтные цвета вылезают, что портит общую цветовую гамму.
0
Yossarian Yossarian 9 лет назад #
Не все так плохо. Я чуть позже напишу свою доработку InstantShop и внедрение гривны в магазин.
Будет отображение в гривнах, а ввод товара на сайт в долларах.
Это уже сделано, но пока не описано - вот мой второй сайт - www.auto-detali.net
+4
Helg Helg 9 лет назад #
nasosu
Домен да!!! улыбнуло laugh
+1
wayfox wayfox 9 лет назад #
nasosu.com.ua O_o что простите вы сделаете ))))) Прикольно )
-1
Raiden Raiden 9 лет назад #
Меняйте домен на nasosy.com.ua, ы обычно заменяется Y в англицкой раскладке, хотя какая разница smile скрытый смысл и так и так сквозить будет)
+2
Yossarian Yossarian 9 лет назад #
Зачем мне менять домен, меня все устраивает. Если у кого то из посетителей возбуждено воображение то есть сайты с требуемым содержанием. Мой сайт продается товары и весьма успешно.
Не понятно, почему вы обсуждаете имя сайта вместо того чтобы обсудить доработку?
+1
Bubble Gumoff Bubble Gumoff 9 лет назад #
Давайте обсудим, как я понял на одном сайте вы захотели продавать и насосы и подшипники. Хотя раздела подшипники на сайте не увидел, ну да ладно. Вы решили Использовать и каталог и Shop на одном сайте под разные типы товаров, видимо для того чтобы не смешивать тематики, а почему просто не клонировали Shop?
+1
Yossarian Yossarian 9 лет назад #
Все не так, как видно не первый взгляд. На сайте установлен InstantShop, для корректной работы компонента по подбору насосов была сделана доработка фильтра товаров, а именно добавлены нужные поля которые системы вытаскивает из параметров и вычисляет (от и до). Доработку мне делал один из фрилансеров. Результат доработки следующий:
Вот страница с насосам - http://nasosu.com.ua/shop/nasosy/nasosy-dlja-vody
Вот страница с подшипниками - http://nasosu.com.ua/shop/podshipniki
как видно везде одинаковые поля (подача, напор температура) но это параметры насосов а не подшипников. Убрать эти поля из фильтра я не могу. Программист не отвечает и связи с ним нет.
Подшипники изначально были выгружены в Универсальный каталог, поэтому я и продолжил там их использование. Все подшипники (около 9000 страниц) проиндексированы и гуглем и яндексом. При поиске подшипника мой сайт всегда первый, зачем убивать то что и так прекрасно работает (примеры поисковых запросов из яндекса: подшипник 46306л, подшипник 534110, подшипник 778706 размеры, 113522 и т.д.)
+1
Raiden Raiden 9 лет назад #
По той же видимо причине, что и вы тут минусами расшвырялись) Личное мнение о том, что видим) Ничего обидного в наших комментах не было) Просто маленькая неграмотность автора сайта, вот и всё.
+1
Yossarian Yossarian 9 лет назад #
я ничего не швырял и не делал оценку ни одного комментария. это кто-то делает за меня.
Мне нужно обсудить доработку, т.к. по ней у меня самого полно вопросов а вы опять пытаетесь обсудить уже МЕНЯ а не доработку, это как говорят в Одессе - ПОЦИЗМ!!!
0
eoleg eoleg 9 лет назад #
Вам ставят плюсы а это значит люди вам благодарны!
Обсудить можно то что установлено, не думаю что все уже сегодня установили ваш хак и сформировали свое мнение.
Поэтому подождите, по хаку скорее всего не скоро комментарии появятся.

К сожалению сми так все испоганили что безобидные когда то вещи сегодня воспринимаются по другому.
Потому и реакция на домен такая.
+3
Доротея Доротея 9 лет назад #
Вот и помогай после этого людям) Человек постарался помочь, в надежде что кому то пригодится его "труд" - а людей естественно домен рассмешил. Видимо дополнить вашу доработку не всякому под силам, вот и смеются) Не обращайте внимание v
0
Dorimen Dorimen 9 лет назад #
А как сделать, чтобы письмо отправлялось не только на почту покупателю и админу, но и продавцу (в случае, если товар выставлял в каталог не админ, а другие пользователи сайта)?
0
Yossarian Yossarian 9 лет назад #
Скорее всего нужно править файл /components/catalog/includes/shopcore.php
и добавить туда ID юзера.
0
Dorimen Dorimen 9 лет назад #
У меня не получилось ) Кто бы подсказал более подробнее )
0
Yossarian Yossarian 9 лет назад #
Я все таки думаю, что эта задача решается не только правкой PHP файлов но и созданием обращений к базе данных. Т.к. информация о электронном адресе Автора записи не содержится в каталоге а находится в карточке пользователя. Поэтому нужно соотнести Имя пользователя с его адресом почты и выполнить скрипт написать письмо.
Если сами не можете то ищите программиста. Я не программист все что я сделал это исключительно правка того что есть, а в вашем случае нужно дописывать код,
+2
Pasha Pasha 9 лет назад #
Если идентификатор пользователя есть, то все просто:
1. Узнаем адрес
$email = cmsDatabase::getInstance()->get_field('cms_users', "id = '{$user_id}'", 'email');
2. Отправляем письмо
cmsCore::mailText($email, 'Тема письма', 'Текст сообщения');
+1
Yossarian Yossarian 9 лет назад #
Спасибо Павел.
Видимо это именно то, что нужно Dorimen.
У меня еще к Вам вопрос, как заставить систему указать нужное количество товаров при заказе?
Мне нужно, чтобы пользователи не могли заказывать на сумму меньше чем 300 грн. в файле shopcore есть функция которая считает число товаров function shopItemsCounter. Не подскажите как сделать?
+1
Pasha Pasha 9 лет назад #
Не совсем понял, я хочу купить 1 например бублик за 1 рубль, вы же со своей стороны хотите чтобы я потратил не менее 300 рублей. И поэтому скрипт не вдаваясь в мои интимные подробности пытается продать мне этих самых бубликов аж 300 штук? За что вы так клиента не любите?.... В общем такая постановка вопроса некорректна, да и решается все это не в рамках комментариев. Скайп pasha--g, будет время помогу.
0
Dorimen Dorimen 9 лет назад #
А если нужно отправить двум и более продавцам? В случае, если пользователь хочет купить одновременно из одной корзины у нескольких?
0
Pasha Pasha 9 лет назад #
Да хоть всем пользователям сайта рассылку делайте, для этого и предназначены циклы

Еще от автора

Дополнение  - Указатель для сайта
На страницах блогов нашел модуль Указатель 1.10.Х (http://instantcms.ru/blogs/leothemes-ru/modul-ukazatel-1-10-h.
Доработка InstantShop
В предыдущем своем посте я описал процедуру внедрения курса доллара в Универсальный каталог.
Как создать файл YML для Яндекс.Маркет
Я как и многие, кто будет читать данный раздел являюсь пользователем замечательной системы InstantCMS.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.