Направьте на путь истинный
На сайте есть список партнеров (название, адрес, телефон, сайт) и акции в которых эти партнеры участвуют. У каждой акции разные партнеры, но все берутся из одного списка (список всех партнеров) и выводятся внутри акции. В дополнительных поляк чекбоксами, галочку поставил – партнер отображается на странице. На странице вывод должен быть отсортирован по menuindex.
Мне пришлось делать на скорую руку, чтобы хоть как то работало:
Как это все грамотно и правильно реализовать?
Мне пришлось делать на скорую руку, чтобы хоть как то работало:
- Каждый партнер это отдельный ресурс, все лежит в контейнере (ID8)
- Создал tv с типом checkbox, в возможных значениях сделал запрос в БД:
@SELECT pagetitle, id FROM [[+PREFIX]]site_content WHERE parent=8 ORDER BY menuindex ASC
- На странице вывел этот tv
Как это все грамотно и правильно реализовать?
Комментарии: 7
Мм… а почему у вас при изменении контента убирается чекбокс?
Вообще, через чекбоксы такие списки лучше не выводить (партнеров ведь может быть много), поэтому уместнее было бы реализовать список партнеров в виде тв-типа «список ресурсов» или «список (множественный выбор)».
Во втором случае в возможных значениях необходимо указать:
И создать новый сниппет, который будет возвращать результаты:
В таком случае «привязка» партнеров будет происходить по их id, что позволит свободно изменять их остальные данные без опасения потерять выбранных парнетров.
Вообще, через чекбоксы такие списки лучше не выводить (партнеров ведь может быть много), поэтому уместнее было бы реализовать список партнеров в виде тв-типа «список ресурсов» или «список (множественный выбор)».
Во втором случае в возможных значениях необходимо указать:
@EVAL return $modx->runSnippet('snippet_name');
И создать новый сниппет, который будет возвращать результаты:
<?php
$output = '';
$q = $modx->newQuery('modResource');
$q->where(array(
"parent" => "8"
));
$q->sortby('menuindex','ASC');
$q->select(array(
"modResource.id",
"modResource.pagetitle",
));
$s = $q->prepare();
$s->execute();
while($row = $s->fetch(PDO::FETCH_ASSOC)){
$data[] = "{$row['pagetitle']}=={$row['pagetitle']}";
}
$output = implode("||", $data);
return $output;
В таком случае «привязка» партнеров будет происходить по их id, что позволит свободно изменять их остальные данные без опасения потерять выбранных парнетров.
UPD:
$data[] = "{$row['pagetitle']}=={$row['id']}";
Вот и для меня это загадка почему слетал чекбокс и данные на странице не обновлялись, пока заново не выставишь.
Испробовал Ваш вариант, всё окей, спасибо!
Чекбоксами тоже удобно, показывает всех партнеров в таком виде: prnt.sc/eqp0qg — галку поставил и вывело.
Вот сегодня назрел другой вопрос, допустим у двух акций выводится один и тот же партнер «Магазин 1» и у него есть ссылка на сайт shop.com, но в одной акции требуется выставить ссылку shop.com/akciya1, а во второй shop.com/akciya2, как мне в таком случае лучше поступить? Ссылка для партнера забивается внутри ресурса и всё. Что то у меня пока пусто в голове на этот счет, не могу придумать.
Испробовал Ваш вариант, всё окей, спасибо!
Чекбоксами тоже удобно, показывает всех партнеров в таком виде: prnt.sc/eqp0qg — галку поставил и вывело.
Вот сегодня назрел другой вопрос, допустим у двух акций выводится один и тот же партнер «Магазин 1» и у него есть ссылка на сайт shop.com, но в одной акции требуется выставить ссылку shop.com/akciya1, а во второй shop.com/akciya2, как мне в таком случае лучше поступить? Ссылка для партнера забивается внутри ресурса и всё. Что то у меня пока пусто в голове на этот счет, не могу придумать.
MIGX
В первой колонке выбираете партнера (из того же тв-поля), во второй прописываете ссылку до их посадочной страницы.
В первой колонке выбираете партнера (из того же тв-поля), во второй прописываете ссылку до их посадочной страницы.
Я всё правильно понял?
Для страницы акции я делаю migx tv у которого 2 столбца:
1) выбор партнера сниппетом (уже одиночный выбор получается)
2) поле с ссылкой (если не заполнено — выводим стандартный url из ресурса)
Ну и каждый партнер добавляется через кнопку новой строкой?
Для страницы акции я делаю migx tv у которого 2 столбца:
1) выбор партнера сниппетом (уже одиночный выбор получается)
2) поле с ссылкой (если не заполнено — выводим стандартный url из ресурса)
Ну и каждый партнер добавляется через кнопку новой строкой?
Именно..)
Если вам не нужно будет фильтровать акции по партнерам — для вас это оптимальный и наиболее удобный вариант.
Если вам не нужно будет фильтровать акции по партнерам — для вас это оптимальный и наиболее удобный вариант.
Спасибо Максим, буду пробовать :)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.