[Решено] Прайс-лист Excel - модуль автоформирова

  • 217 Ответов
  • 32655 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

Tuzemec

  • ****
  • 224
  • 26
  • Ня!
Вашему вниманию представляю модуль формирования прайс-листа в формате xls для MS Office Excel, OpenOffice.
Описание:
Модуль формирует список всего товара имеющегося на сайте, разбивая на категории и подкатегории.
Работает на Joomla! 1.6 - 2.5 и VirtueMart 2.0.x
Отображает только опубликованный товар без учета наличия на складе.
Не отображает пустые категории и подкатегории
Обновленная версия от T-rain в архиве под названием "mod_price - version T-rain.zip" Пользуемся, говорим "Спасибо T-rain", модернизируем...  :D
Обновленная версия от Exciter в архиве под названием "mod_price - ver. Exciter.zip"
Изменения:
  • Появилась масса настроек стиля отображения таблицы
  • Добавлена возможность SEF-ссылок на товар
  • Реализовано большее количество строк для шапки и подвала, с возможностью выбора местоположения
Пользуемся, говорим "Спасибо Exciter", модернизируем...  :D
Обновленная версия от Tuzemec в архиве под названием "mod_price.1.1.7.zip"
Изменения:
  • Появилась возможность ввода символа валюты
  • Расширена возможность выбора отображаемых колонок
  • Мелкие доработки в запросах
Примечание: Для включения кнопки "Обновить каталог" раскомментируйте 109 строку в файле mod_price.php
Пользуемся, говорим "Спасибо Tuzemec", модернизируем...  :D

Вышла новая версия модуля "Генератор прайса Excel 2.0". Посмотреть его в действии можно здесь
Теперь стало возможным выгрузка фотографий товара и получение полностью валидного сформированного прайса.

[вложение удалено Администратором]
Но по секрету скажу, что на 6-ой странице Вы найдете уже НЕкоммерческую версию генератора
« Последнее редактирование: 18.09.2014, 02:26:23 от Tuzemec »
Каждый ваш клик помогает заработать сыну на конфеты
Не дайте ребенку остаться без сладкого! Сделай ТЫЦ!

*

Skiminok

  • ***
  • 43
  • 0
  • Всё что ни делается, всё к лучшему!
а как вместо тг. сделать руб. ?
Всё что ни делается, всё к лучшему!

*

.more

  • *
  • 3
  • 0
в helper.php
строка 65 и\или 88

*

SDKiller

  • ******
  • 2734
  • 320
  • ...ergo sum
Жестоко. Зациклить в 3 уровня sql-запросы.

А с другой стороны - если вложенность категорий будет глубже?

*

T-rain

  • ***
  • 29
  • 6
Я скачал посмотреть неделю назад.
Забавная штука.

Как раз всю прошедшую неделю забавлялся переделкой генератора.
Спасибо автору за модуль.
Теперь я знаю куда больше про XML, SQL и эксель.

Чего переделал:
Сделал неограниченную глубину вложенности каталога.
Теперь в прайс попадают только активные товары.
В экселевском файле шапка зафиксирована и не прокручивается.
Оформление формируется стилями CSS (чтобы облегчить файл).
Размеры шрифта, которым отображаются категории, зависит от глубины вложенности (на каждый левел свой стиль).
Ссылки на каждый товар, само собой, работают (хотя без них прайс в 2 раза легче).
Вкладка экселевского листа (та, что внизу окна) называется "Прайс-лист от 06.07.12". Дата, само собой, берётся на момент генерации прайса.
Ещё сделана группировка категорий, та, которая раскрывается/сворачивается + и -.

Помимо самого прайса сделал приблуду, которая деактивирует категории без активных товаров (ну и попутно категории с неактивными дочерними категориями)

Собственно сам модуль нужен только непосредственно после обновления каталога с помощью CSVI 4.
Параметры такие: Joomla 2.5.4, VirtueMart 2.0.6, товаров ~14000, категорий ~1600, время причёсывания каталога 12 секунд, время генерации самого прайса 14 секунд, конечный файл весит 4.2 метра, десятым офисом открывается без проблем (под него и затачивалось). А вот с ОпенОфисом засадки. Если напрямую открыть скачанный прайс, то похерятся все стили, заданные CSS. Всёж-таки это HTML-таблица, а не родной формат экселя. Но! Если пересохранить из экселя, то тогда всё нормально откроется и ОпенОфисом.

Классная штука получилась, опять же низкий поклон автору первоначального модуля.
« Последнее редактирование: 06.07.2012, 19:42:04 от T-rain »

*

Tuzemec

  • ****
  • 224
  • 26
  • Ня!
Собственно сам модуль нужен только непосредственно после обновления каталога с помощью CSVI 4.
Параметры такие: Joomla 2.5.4, VirtueMart 2.0.6, товаров ~14000, категорий ~1600, время причёсывания каталога 12 секунд, время генерации самого прайса 14 секунд, конечный файл весит 4.2 метра, десятым офисом открывается без проблем (под него и затачивалось). А вот с ОпенОфисом засадки. Если напрямую открыть скачанный прайс, то похерятся все стили, заданные CSS. Всёж-таки это HTML-таблица, а не родной формат экселя. Но! Если пересохранить из экселя, то тогда всё нормально откроется и ОпенОфисом.
Я на линухе работаю и у меня стоит 3 версии офиса. OpenOffice, MS Office и LibreOffice. Так вот последний устанавливается у пользователей ubuntu по-умолчанию и в нем вообще отказывается подобные доки открывать. Не понимает он кода на котором микросовтовый и отрытый офис работает. Странно конечно. В принципе пофиг на него. У меня вот мысля появилась с такой вещью как:
1. Автовставка адреса каталога ВМ на сайте.
2. Автовставка валюты.
3. Управление отображаемыми колонками в админке.
Если 1 и 3 ещё более менее просто решить, то вот с 2 пунктом заморочка в том, что у многих стоит мультивалютность в магазинах. Вопрос приходит в том какую валюту вставить и как пересчитать цену, чтоб всё выглядело корректно.

Помимо самого прайса сделал приблуду, которая деактивирует категории без активных товаров (ну и попутно категории с неактивными дочерними категориями)
А вот эту функцию пришлось отключить. Что-то на хосте ругается... мол не верный параметр передается файлу подключения к базе. В общем в топку, и без нее отлично. Пусть манагеры работают качественно и следят за товаром! =))) Хотя вещь нужная, но возможно из-за разницы в ВМ всё происходит. Я обновил на днях ВМ с 2.0.6 до 2.0.8а

Кстати, T-rain, чего на форуме-то  проапгрейдиной версии нет? Может выложить народу на обозрение? Глядишь, еще чего прикрутят и из модуля в компонент перерастет... =))
« Последнее редактирование: 07.07.2012, 14:36:59 от Tuzemec »
Каждый ваш клик помогает заработать сыну на конфеты
Не дайте ребенку остаться без сладкого! Сделай ТЫЦ!

*

T-rain

  • ***
  • 29
  • 6
Так вроде сыровата программулька.
Да и слишком много зашито в код, настроек маловато. Но это потому, что прайс моему заказчику нужен конкретный, с определёнными полями. Кроме всего прочего, поле product_s_desc пришлось использовать под артикул производителя, помимо 1Совского sku.
А так да, есть смысл делать её более гибкой. Была у меня такая мысль, но не стал перегружать сильно код.

Кстати, обновиться у меня не получилось с указанных версий.
Joomla вообще завалилась - пропали стили, а VirtueMart слишком сильно модифицирован у меня - даже не стал пробовать. Сижу теперь и плакаю ))

Код выложу чуть попозже, как перечитаю, да подправлю комментарии.

Up: сейчас залил на боевой сайт. Время исполнения обоих скриптов по 2 с небольшим секунды.
« Последнее редактирование: 07.07.2012, 15:47:26 от T-rain »

*

T-rain

  • ***
  • 29
  • 6
то вот с 2 пунктом заморочка в том, что у многих стоит мультивалютность в магазинах. Вопрос приходит в том какую валюту вставить и как пересчитать цену, чтоб всё выглядело корректно.
А вот это как раз просто. Указать массивом используемые валюты, запустить в цикле перебора валют функцию формирования прайса с параметром $valuta (его подставить, где надо, в самом прайсе) и потом один раз запустить с использованием всех валют. После чего спокойно генерим и выводим ссылки на все прайсы.
Скажем, при использовании тг. и руб. получатся прайсы price_TG.xls, price_RUB.xls  и price_TG_RUB.xls. Серверу не больше 10 секунд пахать, а потенциальным покупателям приятно выбрать прайс с нужной валютой.

Курс обмена, по идее можно брать с какого-нибудь РБК.
« Последнее редактирование: 07.07.2012, 19:06:17 от T-rain »

*

Tuzemec

  • ****
  • 224
  • 26
  • Ня!
Указать массивом используемые валюты, запустить в цикле перебора валют функцию формирования прайса с параметром $valuta (его подставить, где надо, в самом прайсе) и потом один раз запустить с использованием всех валют.
Вот это как раз у меня в голове еще не проработалось... знаний маловато всё же...
В файле helper.php  в функции Recurse есть ошибочки:
1. В строке 193 обращение к не объявленной переменной $c.
2. В строке 192 "Объект класса StdClass не может быть преобразован в целое число".
Решение:
1. Объявляем в начале функции Recurse переменную $c
Код
function Recurse ($cat, $a, $url){
$c = '';
$prod = QueryProd($cat);
2. Ставим дополнительный знак "="
Было
Код
if ($cat != 0) $url .= $cat->slug.'/'; 
Стало
Код
if ($cat !== 0) $url .= $cat->slug.'/'; 
Каждый ваш клик помогает заработать сыну на конфеты
Не дайте ребенку остаться без сладкого! Сделай ТЫЦ!

*

T-rain

  • ***
  • 29
  • 6
Собственно, объявление когда-то было, но однажды я его по всяким причинам заремал, и сработало без него, потому и убрал впоследствии.
Хотя конечно, грамотнее поставить.

Что до второго знака "=", то скажу, что я старый сишник, и пользуюсь синтаксисом С++. Но, конечно же учту и это. Спасибо за поправки.
Сейчас занимаюсь наведением порядка и повышением удобочитаемости. Да и хочу заменить в строке вывода названия категории плюсики на названия родительских категорий.
Чуть дальше по времени скину откорректированную версию модуля.
« Последнее редактирование: 09.07.2012, 15:15:17 от T-rain »

*

Tuzemec

  • ****
  • 224
  • 26
  • Ня!
Да и хочу заменить в строке вывода названия категории плюсики на названия родительских категорий.
А что с плюсиками не так? По мне так они там в самый раз.
Еще в функциях ResetAndUpdate и Update нужно заменить переменную
Код
 $Pro = $db->loadObjectList();
Она некорректно срабатывает и тоже ошибку выдает. Заменить ее на исполнение запроса (Query - используется для исполнения запроса, не возвращающего никаких данных. Например, вставки или удаления строк из таблицы по некоторому условию.)
Итог
Код
Было:
$Pro = $db->loadObjectList();

Стало:
$db->Query();
А в остальном всё работает как часы! ::)
Каждый ваш клик помогает заработать сыну на конфеты
Не дайте ребенку остаться без сладкого! Сделай ТЫЦ!

*

T-rain

  • ***
  • 29
  • 6
Я вот как раз эту тему рыл и нашёл такое же решение. А то чё-то стрёмно делать никому не нужную выгрузку, если просто нужно исполнить запрос.

Про плюсики. Сейчас я их заремал, но хочу вывести в настройки в админке ввод символа уровня. И если символ не введён, то по умолчанию выдавать названия родительских категорий.

*

Duke_r

  • **
  • 10
  • 0
 >:(

Завидую белой завистью пользователям новой Joomla и виртуемарта ((

А как быть с версией Joomla 1.5 и VirtueMart 1.1.9 ?
Может кто поможет и повторит, создаст модуль для этой связки?
Думаю пользователей работающих на 1.5 с 1.1.9   еще очень много и все они будут очень благодарны!
 ::)

Заранее спасибо!  *DRINK*

*

Exciter

  • ***
  • 153
  • 8
  • Теория + практика
Народ, для общего блага, предлагаю выложить код в общий доступ.
Я например без проблем разбираюсь и в SQL и в PHP и в остальном. Мог бы внести свою лепту в разработку. Да и кроме меня найдутся люди.
Но хочется чтобы в модуле присутствовали мысли и других людей. Писать свою версию на основе выложенного модуля, это значить родить новую версию этого модуля, которая не факто что будет жить.
Давайте объединим усилия и совместно сделаем достойный модуль?
Теория без практики мертва, а практика без теории слепа (с).

*

T-rain

  • ***
  • 29
  • 6
Дайте доделать затравку для гибкого модуля, ибо слишком много зашито в код. Я сейчас раскурочил код, как соберу обратно - выложу для дальнейшей доработки всеми желающими. Для монстров SQL тоже уже есть задание. Даже 2 )))
Немного терпения. Вопрос нескольких дней.

*

Tuzemec

  • ****
  • 224
  • 26
  • Ня!
Народ, для общего блага, предлагаю выложить код в общий доступ.
Я например без проблем разбираюсь и в SQL и в PHP и в остальном. Мог бы внести свою лепту в разработку. Да и кроме меня найдутся люди.
Но хочется чтобы в модуле присутствовали мысли и других людей. Писать свою версию на основе выложенного модуля, это значить родить новую версию этого модуля, которая не факто что будет жить.
Давайте объединим усилия и совместно сделаем достойный модуль?

Модуль от T-rain
Но всё же, думаю, стоит дождаться когда он сам выложит свое решение.
Каждый ваш клик помогает заработать сыну на конфеты
Не дайте ребенку остаться без сладкого! Сделай ТЫЦ!

*

Tuzemec

  • ****
  • 224
  • 26
  • Ня!
>:(

Завидую белой завистью пользователям новой Joomla и виртуемарта ((

А как быть с версией Joomla 1.5 и VirtueMart 1.1.9 ?
Может кто поможет и повторит, создаст модуль для этой связки?

А я думаю, ето еще один повод перейти на новую версию движка...
Каждый ваш клик помогает заработать сыну на конфеты
Не дайте ребенку остаться без сладкого! Сделай ТЫЦ!

*

Exciter

  • ***
  • 153
  • 8
  • Теория + практика
T-rain
Есть еще вопрос.
Прайс в этом варианте возможен только скачиваемый или есть возможность сделать вывод не в файл а сразу на страницу?
Думаю можно в админке ввести параметр - куда выводить содержимое прайса.
Теория без практики мертва, а практика без теории слепа (с).

*

T-rain

  • ***
  • 29
  • 6
В коде, если видел, формируется простая HTML-таблица. В конце формирования можно сохранять не в xls, а в HTML, txt, png - да вообще как угодно. Можешь даже в базу писать, как текстовку конкретного материала Joomla. Идея, кстати.

Просто у меня выходит порядка 4,5 мегабайта табличка, так что о выводе как страницы не думал, если честно. Тяжеловата получается.

Про параметр позже подумаем, я сегодня валидацию web-цветов вроде закончил, да шеф пораньше с работы погнал, так что несколько моментов недоделаны остались.

Ув. знатоки, подскажите пожалуйста, почему у меня не получается сделать сортировку товаров по артикулу (модуль прайса от Tuzemec). Код следующий:

$query = "SELECT a.virtuemart_product_id, b.product_name, b.slug, c.product_price, d.product_sku ";
$query .= "FROM #__virtuemart_product_categories AS a, #__virtuemart_products_ru_ru AS b, #__virtuemart_product_prices AS c, #__virtuemart_products AS d ";
$query .= "WHERE a.virtuemart_category_id = ".$docher->virtuemart_category_id." AND b.virtuemart_product_id = a.virtuemart_product_id AND b.virtuemart_product_id = c.virtuemart_product_id AND b.virtuemart_product_id = d.virtuemart_product_id";
$query .= "ORDER BY d.product_sku ASC";

Ни то, что по артикулу, сортировку товаров вообще ни по какому параметру не удается выполнить, названия товаров просто не выводятся при запросе $query .= "ORDER BY ..."
Собственных знаний не хватает, может кто-нибудь подскажет, где у меня в коде ошибка?

*

T-rain

  • ***
  • 29
  • 6
А вот кстати была у меня такая проблема - хотел по аналогии с сортировкой каталогов сделать, но что-то не пошло. Проблему так и оставил пока открытой.
обращался к другу - программеру под SQL, но он сидит под Oracle и мне с моим MySQL подсказать не может.
Вообще надо глянуть, как хранится результат запроса. Если это просто массив, то можно воспользоваться штатной сортировкой php.

*

Tuzemec

  • ****
  • 224
  • 26
  • Ня!
Обновленный генератор прайса от T-rain.
Пользуемся, говорим "Спасибо" и модернизируем  :D

[вложение удалено Администратором]
Каждый ваш клик помогает заработать сыну на конфеты
Не дайте ребенку остаться без сладкого! Сделай ТЫЦ!

*

Exciter

  • ***
  • 153
  • 8
  • Теория + практика
После клика "Сформировать прайс" получаю
Warning: Missing argument 5 for Recurse(), called in /..a.ru/modules/mod_price/helper.php on line 133 and defined in /..a.ru/modules/mod_price/helper.php on line 169

В строке 133 дописать $way
Код
$html .= Recurse (0, 0, $url, $pam, $way);

И после клика "Обновить каталог" в магазине отключаются все категории без товаров. На мой взгляд это не дело. Приходится включать их, т.к. описание категории есть и они нужны на сайте для ссылочной массы.
« Последнее редактирование: 08.08.2012, 01:52:10 от Exciter »
Теория без практики мертва, а практика без теории слепа (с).

*

T-rain

  • ***
  • 29
  • 6
Какой капризный у тебя, оказывается, PHP ))))
Хорошо, поправлю.
Кстати, $way тогда нужно инициализировать по-хорошему.
Перед этой строкой дай ему значение.
Типа $way = '';
Или даже можно попробовать вставить эту конструкцию в вызов:
Код
$html .= Recurse (0, 0, $url, $pam, $way='');
А то мож у кого тоже ругнётся.

У меня, кстати, все небрежности на удивление гладко проходили.

А вот с "Обновить каталог" - это, похоже, на любителя.
Можно как-то попытаться склеить...  ну типа вызывать её только на этапе построения прайса, скажем.
Но тогда проблема в следующем: прайс формируется, обходя каталог сверху, а "Обновить каталог" обходит снизу дерева категорий.

Можно строить некую виртуальную или временную таблицу...  но я не знаю как (((

Кстати, как у тебя тогда показываются пустые категории? Просто без товара? Конкретно у меня этого нельзя допускать - ибо человек, решивший купить, к примеру, шампунь просто не увидит товара в оконечной категории. Развернётся и уйдёт обиженный.

А поисковики вроде на карту сайта xml-ную должны реагировать лучше, чем на обходы пауков. По крайней мере, яндексвебмастеру и Google я успешно скормил карту сайта.

Итак, если есть идеи, как склеить обе функции, излагай.
« Последнее редактирование: 08.08.2012, 02:07:36 от T-rain »

*

Exciter

  • ***
  • 153
  • 8
  • Теория + практика
Добавил строкой выше
Код
$way = '';

Гложет один давнишний вопрос.
Вывод делается только в CSV файл или можно както сразу на сайт вывод сделать? Т.е. прайс сразу на странице?

А вот кстати была у меня такая проблема - хотел по аналогии с сортировкой каталогов сделать, но что-то не пошло. Проблему так и оставил пока открытой.
Где делается запрос (файл строка) и что нужно получить?

Можешь даже в базу писать, как текстовку конкретного материала Joomla. Идея, кстати.

Просто у меня выходит порядка 4,5 мегабайта табличка, так что о выводе как страницы не думал, если честно. Тяжеловата получается.
Идея отличная. А про вес в 4.5 метра, так это не вес на современных хостингах. Сервера нужны чтобы пахать. Врят лим поперёк горла встанет переварить 5 метров инфы. ))

Можно как-то попытаться склеить...  ну типа вызывать её только на этапе построения прайса, скажем.
Но тогда проблема в следующем: прайс формируется, обходя каталог сверху, а "Обновить каталог" обходит снизу дерева категорий.

Можно строить некую виртуальную или временную таблицу...  но я не знаю как (((

Кстати, как у тебя тогда показываются пустые категории? Просто без товара?

А поисковики вроде на карту сайта xml-ную должны реагировать лучше, чем на обходы пауков. По крайней мере, яндексвебмастеру и Google я успешно скормил карту сайта.
Вообще формирование прайса должно проходить каждый раз при запуске модуля. Только так будем иметь всегда свежий прайс.
Временную таблицу не сделать, можно результат просто скинуть в массив и работать с ним.
Категории выводятся без товара, но это на этапе заполнения магазина. Тут не критично выводить пустые категории, т.к. посетители уже видят будущий примерный ассортимент товаров в магазине.
По поводы XML карты. Им важно иметь код ответа 200 для страницы. )) Если по карте есть ответы 200, то этот контент попадёт в индекс. А откуда пришла ссылка от паука или от карты вопрос второй.
Итак?
« Последнее редактирование: 08.08.2012, 02:16:57 от Exciter »
Теория без практики мертва, а практика без теории слепа (с).

*

T-rain

  • ***
  • 29
  • 6
В коде, если видел, формируется простая HTML-таблица. В конце формирования можно сохранять не в xls, а в HTML, txt, png - да вообще как угодно. Можешь даже в базу писать, как текстовку конкретного материала Joomla. Идея, кстати.
Просто у меня выходит порядка 4,5 мегабайта табличка, так что о выводе как страницы не думал, если честно. Тяжеловата получается.
Ты уже задавал подобный вопрос, и я на него отвечал )))

*

T-rain

  • ***
  • 29
  • 6
А про вес в 4.5 метра, так это не вес на современных хостингах. Сервера нужны чтобы пахать. Врят лим поперёк горла встанет переварить 5 метров инфы. ))

Тут проблема как раз не в сервере, а в браузере.
Представь, как будет выглядеть вывод такой таблички (у меня уже она, кстати, занимает 6,5 метра) при лагающем инете. Точнее, сколько это будет занимать времени.
Что-то около 15000+ строк.

Для небольшого прайса наверняка прокатит.
Ну вот, кстати, тебе идею даю: переделай шапку из экселевской в HTMLную, сохраняй, как обычно, а потом вызывай в любом месте сайта, как фрейм.


Что до запросов:
Код
$db = JFactory::getDBO();
$query = "SELECT a.virtuemart_category_id, a.virtuemart_product_id, b.product_sku, b.product_packaging, c.product_name, c.slug, c.product_s_desc ";
$query .= "FROM #__virtuemart_product_categories AS a, #__virtuemart_products AS b, #__virtuemart_products_ru_ru AS c ";
$query .= "WHERE a.virtuemart_category_id = ".($cat ? $cat->virtuemart_category_id : '0')." ";
$query .= "  AND b.virtuemart_product_id = a.virtuemart_product_id AND b.published = '1' ";
$query .= "  AND b.published = '1' ";
$query .= "  AND c.virtuemart_product_id = a.virtuemart_product_id ";
$db->setQuery($query);
$ProdList = $db->loadObjectList();
Вот в этой хреновине не получается сделать сортировку.
Хотя вот эта отлично отрабатывает:
Код
$db = JFactory::getDBO();
$query = "SELECT a.virtuemart_category_id, a.category_name, a.slug ";
$query .= "FROM #__virtuemart_categories_ru_ru AS a, #__virtuemart_categories AS b, #__virtuemart_category_categories AS c ";
$query .= "WHERE a.virtuemart_category_id = b.virtuemart_category_id AND b.virtuemart_category_id = c.id AND b.published = '1' AND c.category_parent_id = ".($cat ? $cat->virtuemart_category_id :'0')." ";
$query .= "ORDER BY a.category_name ASC"; // Сортировка дочерних каталогов по алфавиту (А->Я).
$db->setQuery($query);
$DochCatList = $db->loadObjectList();
Вроде всё по аналогии делал, но не срабатывает ((
« Последнее редактирование: 08.08.2012, 02:20:49 от T-rain »

*

Exciter

  • ***
  • 153
  • 8
  • Теория + практика
Ну вот, кстати, тебе идею даю: переделай шапку из экселевской в HTMLную, сохраняй, как обычно, а потом вызывай в любом месте сайта, как фрейм.

Там если выводить на страницу, то части HTML кода вообще не нужно.

Если выводить в чистый законченный HTML, то шапка будет такой
Код
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru-ru" lang="ru-ru" dir="ltr" >

Но если для вывода на страницу, то эти директивы не нужны. А также head и meta. Body естественно тоже.

Строка
Код
$query .= "  AND b.published = '1' ";
там не лишняя случайно?
Теория без практики мертва, а практика без теории слепа (с).

*

T-rain

  • ***
  • 29
  • 6
Ну тогда всё ещё проще.
Вышли готовый HTML-прайс, я тогда гляну, что конкретно нужно вырезать и в админке добавлю возможность выбора формата вывода.

Да, действительно лишняя. Это я в предыдущей строке не выпилил.
Код
$query .= "  AND b.published = '1' ";
Всё равно на днях собирался сделать выбор колонок для вывода в прайсе, тогда бы и наткнулся точно.
Но за внимательность благодарен. )))
« Последнее редактирование: 08.08.2012, 02:31:56 от T-rain »

*

Exciter

  • ***
  • 153
  • 8
  • Теория + практика
А что сортировать?
Сделал запрос в базу. Он выводит список товаров в конкретной категории. Например
Код
WHERE a.virtuemart_category_id =41

Что сортировать? Запрос выводит их также магазин при сортировке по ID

Добавил в запрос
Код
order by c.product_name
всё отсортировалось по имени. Не понимаю может я что то?
« Последнее редактирование: 08.08.2012, 02:48:32 от Exciter »
Теория без практики мертва, а практика без теории слепа (с).