L.
Всі ці умови необхідні для того, щоб перевірити, чи є у отриманому GET-запиті ідентифікатор групи, і чи немає його в обраній з таблиці рядку. Якщо в запиті передається ідентифікатор, а в базі даних у цієї категорії немає групи, даної категорії присвоюється ідентифікатор необхідної групи.
) Якщо після запиту SELECT рядки з найменуванням такої категорії не виявилося, перевіряється іншу умову, за результатом якого може відбутися 2 різних дії:
· якщо в переданому GET-запиті є ідентифікатор групи, то в таблицю jos_vm_manufacturer бази даних заноситься новий рядок з ім'ям даної категорії і її прив'язаною в 1С групи;
· якщо ж у запиті немає цього ідентифікатора, то в таблицю заноситься рядок тільки лише з назвою категорії без будь-якого ідентифікатора (тобто це поле так і залишається в значенні NULL).
У результаті всіх цих запитів таблиці бази даних заповнюється необхідними значеннями, що дає реалізувати відображення в інтернет-магазині угруповання категорій.
Однак даний спосіб реалізації даного завдання не найшвидший, оскільки кожен окремий запит до сторінки сайту визначає нове підключення до бази даних, нові зайві вибірки і т.д. Все це дуже загальмовує звернення до бази даних, що, з боку 1С уповільнює роботу модуля.
Іншим завданням згідно з технічним завданням було додавання полів для вивантаження описів і ключових слів товарів і розділів товарів.
Зміні піддалися два використовувані процедури: Пак_ВигрузітьСтруктуруГрупп для розділів товарів і Пак_ВигрузітьНоменклатуру для самих товарів.
Для процедури по вивантаженню розділів були додані нові дані в передану рядок (Малюнок N), а також відповідні назви полів таблиці для вивантаження за допомогою вбудованої в бібліотеку MYSQL.dll функції (Малюнок N):
Малюнок N. Рядок у категорії, передана в базу даних.
Малюнок N. Функція з бібліотеки MySQL.dll, що передає рядок для категорії.
Те ж саме виробляється і над вивантаженням номенклатури. Тут також додаються нові дані в передану функції рядок (Малюнок N):
Малюнок N. Рядок в номенклатурі, передана в базу даних.
Ці дії дозволяють передавати необхідні для просування інтернет-магазину дані і просувати позицію сайту в пошуку.
Ще однією проблемою для вирішення було виправлення неправильно заповнюваних типів цін. При створенні інтернет-магазину, CMS Joomla! Raquo; автоматично створює трьох типів користувачів:
· Default - Покупці з відображуваним звичайним типом цін;
· Gold Level - Для яких показується особлива ціна (наприклад, не включає надбавку);
· Wholesale - Покупці, які бачать оптову ціну.
Всі ці значення зберігаються в базі даних у таблиці jos_vm_shopper_group raquo ;, де знаходяться всі три групи і куди, якщо це знадобиться, можна додати і нові. На сайті як таке використання цих груп є безглуздим, оскільки реєстрація користувачів відключена зовсім, а всі покупки відбуваються за допомогою звичайної сесії. За технічним завданням було запропоновано рішення: використання системи знижок на основі покупок з майбутнім використанням так званих промо-кодів raquo ;, які видаються покупцеві і він має право їх ввести, тим самим змінивши на одну загальну покупку свою групу користувачів, змінивши при цьому вартість своєї покупки.
Самі зв'язки ціна - товар - тип користувача зберігається в таблиці jos_vm_product_price (Малюнок N).
Малюнок N. Таблиця зі зв'язкою ціна - товар - група користувачів.
Все це означає, що можливість використання різних типів цін і їхнє вивантаження цілком здійсненна, і вона просто не врахована при розробці модуля.
Необхідний для зміни ділянку коду необхідно було просто обернути в новий цикл, який би перевіряв при запуску процедури Пак_ОбновітьЦени в кожному товарі кожен заповнений тип цін і розвантажував його в загальний список цін (Малюнок N):
Малюнок N. Новий код вивантаження типів цін.
Останньою виправляємої проблемою виявилося зміна функціоналу вивантаження фотографій товарів, так як вони, не будучи відразу потрібного розміру, створювалися динамічно, що призводило до неприємних наслідків.
У модулі використовується процедура ВигрузкаІзображеній raquo ;, яка бере всі необхідні налаштування з четвертим вкладки форми модуля і за допомогою них один раз змінює розмір, вивантажуючи надалі в прописану папку оригінальний розмір фо...