Minishop2 вывод свойств как категорий в разделе
Здравствуйте!
Есть такой вопрос. У меня есть товары, которые соотносятся с автомобилями: марка, модель, кузов.
Марку автомобиля я сделал категориями, т/к их немного (самих товаров около 6к).
У каждого товара в свойствах я прописал модель и кузов (повторюсь, что марка это категория).
Теперь я хочу чтобы в категории (т/е в марке автомобиля) не происходил сразу вывод товаров, а сначала вышли все модели, под моделями кузова.
Т/е мне нужно что-то вроде фильтра по свойствам, но внутри категории. Пока хочу просто их выводить хотя бы.
Готового ничего не нашел, поэтому стал писать сниппет:
Делать отдельно категории/разделы для марок и кузовов не удобно. Нужно сделать именно так как я описал.
Надеюсь на вашу помощь.
Есть такой вопрос. У меня есть товары, которые соотносятся с автомобилями: марка, модель, кузов.
Марку автомобиля я сделал категориями, т/к их немного (самих товаров около 6к).
У каждого товара в свойствах я прописал модель и кузов (повторюсь, что марка это категория).
Теперь я хочу чтобы в категории (т/е в марке автомобиля) не происходил сразу вывод товаров, а сначала вышли все модели, под моделями кузова.
Т/е мне нужно что-то вроде фильтра по свойствам, но внутри категории. Пока хочу просто их выводить хотя бы.
Готового ничего не нашел, поэтому стал писать сниппет:
$table = 'modx_ms2_products';
$sql = "SELECT * FROM $table GROUP BY model";
$q = $modx->prepare($sql);
$q->execute(array(0));
$arr = $q->fetchAll(PDO::FETCH_ASSOC);
Но в этой таблице нет понятия кто кого наследует по разделам. И тут еще нужно использовать modx_site_content таблицу, т/к там взаимосвязи по разделам лежат (т/к марка это раздел/категория).Надеюсь на вашу помощь.
Комментарии: 6
Сделал таким образом. Мне кажется кривовато, если кто-то поймет мою задачу и предложит более правильный код, я буду очень благодарен.
Может быть и это кому-то понадобится:
<?php
$return = '';
$tableProducts = 'modx_ms2_products';
$tableContent = 'modx_site_content';
$sql = " SELECT DISTINCT $tableProducts.model
FROM $tableProducts INNER JOIN $tableContent
ON $tableProducts.id = $tableContent.id
WHERE $tableContent.parent = $pageid
GROUP BY model ORDER BY model ASC";
$query = new xPDOCriteria($modx, $sql);
if ($query->prepare() && $query->stmt->execute()) {
$res = $query->stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($res as $row) {
$nameModel = $row['model'];
$return .= '';
$return .= ''.$nameModel.'';
// Query for YEAR
$sql2 = «SELECT year
FROM $tableProducts
WHERE model = '$nameModel'
GROUP BY year ORDER BY year ASC»;
$query2 = new xPDOCriteria($modx, $sql2);
if ($query2->prepare() && $query2->stmt->execute()) {
$res2 = $query2->stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($res2 as $row) {
$nameYear = $row['year'];
$return .= ''.$nameYear.'';
}
}
$return .= '';
}
}
return $return;
Может быть и это кому-то понадобится:
<?php
$return = '';
$tableProducts = 'modx_ms2_products';
$tableContent = 'modx_site_content';
$sql = " SELECT DISTINCT $tableProducts.model
FROM $tableProducts INNER JOIN $tableContent
ON $tableProducts.id = $tableContent.id
WHERE $tableContent.parent = $pageid
GROUP BY model ORDER BY model ASC";
$query = new xPDOCriteria($modx, $sql);
if ($query->prepare() && $query->stmt->execute()) {
$res = $query->stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($res as $row) {
$nameModel = $row['model'];
$return .= '';
$return .= ''.$nameModel.'';
// Query for YEAR
$sql2 = «SELECT year
FROM $tableProducts
WHERE model = '$nameModel'
GROUP BY year ORDER BY year ASC»;
$query2 = new xPDOCriteria($modx, $sql2);
if ($query2->prepare() && $query2->stmt->execute()) {
$res2 = $query2->stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($res2 as $row) {
$nameYear = $row['year'];
$return .= ''.$nameYear.'';
}
}
$return .= '';
}
}
return $return;
Не успел отредактировать.
Дублирую тут.
Дублирую тут.
<?php
$return = '';
$tableProducts = 'modx_ms2_products';
$tableContent = 'modx_site_content';
$sql = " SELECT DISTINCT $tableProducts.model
FROM $tableProducts INNER JOIN $tableContent
ON $tableProducts.id = $tableContent.id
WHERE $tableContent.parent = $pageid
GROUP BY model ORDER BY model ASC";
$query = new xPDOCriteria($modx, $sql);
if ($query->prepare() && $query->stmt->execute()) {
$res = $query->stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($res as $row) {
$nameModel = $row['model'];
$return .= '<li>';
$return .= '<div class="model-list__name">'.$nameModel.'</div>';
// Query for YEAR
$sql2 = "SELECT year
FROM $tableProducts
WHERE model = '$nameModel'
GROUP BY year ORDER BY year ASC";
$query2 = new xPDOCriteria($modx, $sql2);
if ($query2->prepare() && $query2->stmt->execute()) {
$res2 = $query2->stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($res2 as $row) {
$nameYear = $row['year'];
$return .= '<div class="model-list__year">'.$nameYear.'</div>';
}
}
$return .= '</li>';
}
}
return $return;
Жестко…
Т/е?
Мне кажется что с помощью mSearch2 можно сделать.
Напиши здесь или скинь в ЛС ссылку на сайт. У меня подобная задача, интересно посмотреть, как выглядит решение в реальности.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.