Astra.CMS

 

 

Форум » Приемы конструирования и интеграции дизайна

Каталог материалов и модуль магазина - доступ к определенному полю

Стоит ли открыть форум? Напишите об этом по адресу admin@astracms.ru написав в теме "открыть форум". Я не автор движка и поэтому не могу консультировать так, как это делал бы он, но возможно у нас получится совместно находить решения.

Автор Текст сообщения

Maksim
Сообщений: 277

Подскажите пожалуйста, столкнулся с такой задачей:

1. Есть каталог материалов / магазин
2. Есть дополнительное поле, например gruppa со списком (grup) значений
3. Есть пользователи с дополнительным полем, которое ссылается на список в дополнениях (grup) - тот же список что и в пункте 2.

Каким образом можно сделать так, чтобы пользователь у которого определенное значение в дополнительном поле (grup) мог видеть только записи/страницы из магазина или каталога материалов у которых значение дополнительного поля (grup) совпадает? И соответственно, если значения не совпадают, записи не выводятся.

Для детальной страницы получилось таким образом
{if $auth->data.idgroup==5 && $auth->data.group==$items.group}
Но не понятно, как добавить цикл к этой выборке, если в шаблоне "каталога" возникает цикл, то items.group должен быть ввиде
$items[i].group
 

Maksim
Сообщений: 277

Вроде решил, нужно было добавить

{section name=i loop=$items}
{if $auth->data.idgroup==5 && $auth->data.group==$items[i].group}
...
{section name=i loop=$items}
{$items[i].group}
{/section}
...
{esle}
Доступ к данным закрыт
{/if}
{/section}
Это правильное решение, или можно было бы сделать проще?



 
aristoc

admin
Сообщений: 1159

Зачем еще один подцикл - не понял. У них к тому же и счетчик одинаковый i.
 

Maksim
Сообщений: 277

Еще один подцикл нужен был для вывода характеристик из записей, чтобы все они были в единой таблице.
{section name=i loop=$items}
{if $auth->data.idgroup==5 && $auth->data.group==$items[i].group}

{if $items}
<h2>Таблица товаров</h2>
<table class="grid">
<tr>
<td>Название товара</td>
<td>Характеристика</td>
</tr>
{section name=i loop=$items}
<tr>
<td>{$items[i].name}</td>
<td>{$items[i].har}</td>
</tr>
{/section}
{/if}
</table>
{/if}

{/section}

По поводу счетчика не понял, поменял i на j получил на выходе двойные значения  unsure
 

Maksim
Сообщений: 277

Возможно ли сделать так, чтобы не возникал дополнительный цикл?
{if $auth->data.idgroup==5 && $auth->data.group==$items[i].group}
если нет, подскажите пожалуйста, как нужно правильно выводить внутренний цикл, чтобы счетчик не пересекался?
{section name=i loop=$items}
 
aristoc

admin
Сообщений: 1159

Так и не понял зачем нужен внутренний цикл. Если для вывода полей товара, то почему в нем идет обход всех товаров. Доп. поля можно и просто вывести в таблице без цикла, если они известны.
 

Вы не можете добавить сообщение. Вам необходимо авторизироваться на сайте под своим логином либо зарегистрироваться.