Новости Joomla

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

Damarkuzz

  • Захожу иногда
  • 116
  • 1 / 0
Имеется скрипт:
Спойлер
[свернуть]

Делается это для того, чтобы потом сравнить title страницы и наименование категории, если совпадает - выводим инфу о категории.
Теперь о проблеме. Категорий около 30 000, когда я начинаю выполнять $parent_cat = $cat_model->getCategory($product->virtuemart_category_id); , страница начинает "думать".

Подозреваю, что делаю что-то не так. Пожалуйста, укажите, что не так. Спасибо заранее! ^-^
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
А сколько у Вас count( $products ) ?
Да и в обще - Вы для каждого товара в модели запрашиваете данные категории ..
Ну если сильно нужно то там по моему есть получить список категорий id которых в массиве !
то есть это будет 1 запрос а не == count( $products )
То есть если сильно хотите - то соберите id категорий в массив - и получите все категории одним запросом
что то типа
Код
' WHERE #__virtuemart_category.category_id IN ( ' . implode( ' , ' , $arrayCat_id ). ' ) ';
Ну или через модель - но своим запросом будет быстрей !
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
Код
if($products as $product) {
    ...
}
Может тут надо не if, а foreach?

Но дело даже не в этом.
Зачем эта проверка? Хотите определить в шаблоне является ли эта страница страницей просмотра категории?
Возможно, будет интересно: Интеграция с Ozon
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
Может тут надо не if, а foreach?
Ха - А я и не глянул ! Что логический оператор перепутали с итерацией ! )))
то я бы на месте сервера - тоже долго думал бы что от меня хотят -  встретив такое  ! )))
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
я бы на месте сервера - тоже долго думал бы что от меня хотят -  встретив такое  ! )))

 :laugh:
Возможно, будет интересно: Интеграция с Ozon
*

Damarkuzz

  • Захожу иногда
  • 116
  • 1 / 0
Может тут надо не if, а foreach?

Но дело даже не в этом.
Зачем эта проверка? Хотите определить в шаблоне является ли эта страница страницей просмотра категории?

Прошу прощения, опечатался, в коде было именно foreach.
*

Damarkuzz

  • Захожу иногда
  • 116
  • 1 / 0
А сколько у Вас count( $products ) ?
Да и в обще - Вы для каждого товара в модели запрашиваете данные категории ..
Ну если сильно нужно то там по моему есть получить список категорий id которых в массиве !
то есть это будет 1 запрос а не == count( $products )
То есть если сильно хотите - то соберите id категорий в массив - и получите все категории одним запросом
что то типа
Код
' WHERE #__virtuemart_category.category_id IN ( ' . implode( ' , ' , $arrayCat_id ). ' ) ';
Ну или через модель - но своим запросом будет быстрей !

Прошу прощения, выше упомянул, что опечатался, на самом деле указан foreach,  а не if.

count( $products ) возвращает 710.
*

Damarkuzz

  • Захожу иногда
  • 116
  • 1 / 0
@rsn
Цитировать
Зачем эта проверка? Хотите определить в шаблоне является ли эта страница страницей просмотра категории?

Возможно, вы знаете модуль mod_virtuemart_products, в нём есть функция фильтрации вывода товара по родительской категории.
У меня имеется около 400 страниц с некоторым "калькулятором ссылки" на исходный товар. На каждой из страниц необходимо вывести ссылку на товар + наименование товара + картинку товара.

Мой мозг, зеленый в подобных затеях, подумал: зачем создавать 400 модулей, если можно брать категорию из title страницы, и вывести товар по сверке title и соотв. категории.
Код
if (strpos($current_title, $allParentsCategory)!== false) {
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
Ну то как придумает так и решает !
Главное что бы это по ресурсам не затратно было !!
Кста - включите отладку (общие настройки Joomla ) и там можно посмотреть - сколько какой процесс - хавает памяти и времени ! -
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
@Damarkuzz не понял Вашу задачу. Попробуйте объяснить другими словами.
Возможно, будет интересно: Интеграция с Ozon
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
Код
count( $products ) возвращает 710.
Что то Вы точно не совсем то затеяли !
при таких количествах count( $products ) возвращает 710 - я бы не советовал в обще ни каких вычислений и расчетов проводить !
А тем более  в прямом потоке HTTP - Запроса !
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
не понял Вашу задачу. Попробуйте объяснить другими словами.
Та да ! - То ли объяснили не так - то ли - что то не то делаете - типа как делить на ноль ! == можно - но ненужно ! )))
*

draff

  • Гуру
  • 5803
  • 434 / 7
  • ищу работу
Делается это для того, чтобы потом сравнить title страницы и наименование категории, если совпадает - выводим инфу о категории.
Т.е. фильтрация PHP, а не SQL ?
*

Damarkuzz

  • Захожу иногда
  • 116
  • 1 / 0
@rsn
Цитировать
@Damarkuzz не понял Вашу задачу. Попробуйте объяснить другими словами.

Вкратце.

1) На 400 страницах в SP PageBuilder требуется вывести по одной категории товаров VirtueMart (всего 400 категорий).

2) Чтобы не создавать 400 разных модулей mod_virtuemart_products (на каждую категорию), я решил перебрать вызвать все товары через foreach ($products as $product). Возникает вопрос, как нам теперь из общего потока товаров всех категорий вывести нужную? (моё решение в п.3)

3) С помощью PHP мы берем title заголовка, и сопоставляем его с перечнем категорий
Код
foreach ($products as $product) {
   if (strpos($current_title, $allCategories)!== false) {
      print_r($product)
   }
}
*

Damarkuzz

  • Захожу иногда
  • 116
  • 1 / 0
@draff
Цитировать
Т.е. фильтрация PHP, а не SQL ?
Цитировать
Да, по другому пока что не умею
*

draff

  • Гуру
  • 5803
  • 434 / 7
  • ищу работу
Как вариант хак модуля, включить фильтр и добавить в точку входа модуля
$doc = JFactory::getDocument();
$current_title = $doc->getTitle();
$db = JFactory::getDbo();
            
            $query = $db
               ->getQuery(true)
               ->select('virtuemart_category_id')
               ->from($db->quoteName('#__virtuemart_categories_ru_ru'))
               ->where($db->quoteName('category_name'). " = " . $db->quote($current_title));
            $db->setQuery($query);
            $category_id = $db->loadResult();
*

Damarkuzz

  • Захожу иногда
  • 116
  • 1 / 0
@draff
Цитировать
Как вариант хак модуля, включить фильтр и добавить в точку входа модуля


Спасибо, пытался выполнить Ваш код, дописав некоторые вещи:


Спойлер
[свернуть]


Данным действиями я получил родительскую категорию, затем вызвал дочерние, в которых находятся товары, которые нужно вывести.
Но теперь, если выводить продукты через конструкцию foreach ($product as $products) {...}, выводятся все товары, без фильтрации по категории. Подскажите, как вывести товар, но отфильтровав по категориям?

*

draff

  • Гуру
  • 5803
  • 434 / 7
  • ищу работу
Вы создаете новый модуль или используете стандартный Вирт для вывода продуктов ?
п.с.
Выводит товары из подкатегории в стандартном модуле Вирт и без фильтрации по группе.
Спойлер
[свернуть]
« Последнее редактирование: 04.12.2020, 05:22:30 от draff »
*

draff

  • Гуру
  • 5803
  • 434 / 7
  • ищу работу
Запрос на получение родительской категории
Код
				$query = $db
->getQuery(true)
->select($db->quoteName('vc.category_parent_id'))
->from($db->quoteName('#__virtuemart_categories', 'vc'))
->join('INNER', $db->quoteName('#__virtuemart_categories_ru_ru', 'rc'). '  ON ' . $db->quoteName('rc.virtuemart_category_id'). ' = ' . $db->quoteName('vc.virtuemart_category_id'))
->where($db->quoteName('rc.category_name'). " = " . $db->quote($current_title));
$db->setQuery($query);
$category_id = !empty($db->loadResult())? $db->loadResult() : $category_id;
*

Damarkuzz

  • Захожу иногда
  • 116
  • 1 / 0
Вы создаете новый модуль или используете стандартный Вирт для вывода продуктов ?
п.с.
Выводит товары из подкатегории в стандартном модуле Вирт и без фильтрации по группе.
Спойлер
[свернуть]

Большое спасибо, получилось вывести товары:
1) Главной категории (Тест)
2) Дочерней категории первой вложенности (Тест -> Тапочки)

Но, если товары находятся во второй вложенности и далее (Тест->Тапочки->Тканевые) - товары не выводятся.
*

draff

  • Гуру
  • 5803
  • 434 / 7
  • ищу работу
*

Damarkuzz

  • Захожу иногда
  • 116
  • 1 / 0
@draff да, гораздо быстрее
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Один пункт меню думает что он главный

Автор DamaVbubi

Ответов: 4
Просмотров: 330
Последний ответ 13.02.2024, 19:49:10
от DamaVbubi
Долго грузятся страницы категорий

Автор SuperRomario

Ответов: 4
Просмотров: 1511
Последний ответ 03.07.2023, 17:59:07
от Wood
Ошибка 1054 Unknown column 'created_by' in 'field list' VirtueMart

Автор Evgen Kulibin

Ответов: 3
Просмотров: 794
Последний ответ 26.02.2023, 01:56:42
от lakshmi
Как вывести в категории VirtueMart кастомное поле с редактором?

Автор dc_web

Ответов: 4
Просмотров: 378
Последний ответ 05.10.2022, 11:07:00
от sivers
Проблема с выводом изображения в VirtueMart 3

Автор vetkrs

Ответов: 0
Просмотров: 262
Последний ответ 30.09.2022, 17:22:43
от vetkrs