|
|
03.04.2014, 18:50
|
|
mahmah
Зарегистрирован: 2014-01-28
Сообщений: 9
|
Добрый день! Я не очень разбираюсь в программировании, делаю в основном все по шаблонам и согласно инструкциям)
Никак не могу решить задачу: есть компонент с выставками и есть компонент с музеями. Нужно, чтобы при вводе выставки, она отображалась именно на странице полного описания того музея, где она проходит.
БУДУ очень признательна за помощь!
|
|
|
03.04.2014, 21:12
|
|
Nexwich
Панасин Александр
Зарегистрирован: 2011-04-05
Сообщений: 1037
|
По данному вопросу я отвечал уже не однократно и уже надоело повторятся. Найти одну из подобных тем не смог так как не одна не имеет верного названия как и ваша
http://netcat.ru/support/forum/razrabotka-sayta/topic_13571.html
Здесь есть подобное решение на 80%
Коротко
Вставить в нужное место, где $sub номер раздела с выставками а $cc номер компонента в разделе с выставками
Код:<?=nc_objects_list($sub,$cc,"db_Message_ID=".$f_RowID."",true)?>
А в компоненте поле создайте поле для записи номера объекта (id музея) например db_Message_ID (чтобы не путаться)
После чего в системных настройках выставок впишите выборку
Код:if($db_Message_ID) $query_where = " a.db_Message_ID = '".$db_Message_ID."' ";
Как это работает расписано по ссылке.
Модуль "Почтовые уведомления" – настройка email уведомлений на вашем сайте без программирования. Бесплатно. http://netcat.ru/products/CatStore/solution_242.html
|
|
|
03.04.2014, 22:45
|
|
Гость
Гость
|
Александр, спасибо большое! Попробую сделать, вроде бы все поняла, сделаю- отпишусь!
|
|
|
04.04.2014, 00:07
|
|
Игорь
Игорь Мишарин
Зарегистрирован: 2011-11-20
Сообщений: 482
|
Я думаю, можно сделать, проще и удобнее. Все-таки, при добавлении новой выставки придется искать номер (RowID) музея, в котором она проводится, что не совсем удобно.
Предлагается добавить поле "Музей, в котором проводится выставка", если его нет. И уже по нему фильтровать.
Т.е. в это поле должно быть выпадающим списком (select), в котором уже есть все музеи, причем формироваться он (список) должен динамически, путем запроса к БД или же прописать функцию в fuction.inc.php.
Если это интересно, могу показать "на пальцах".))
Stark
|
|
|
04.04.2014, 07:35
|
|
Гость
Гость
|
Игорь, спасибо! Покажите, пожалуйста! Я тоже задумалась, что надо будет искать, но сочла это неудобством, которое можно потерпеть ради того, чтобы все выводилось , как хочется. Если есть более удобный способ, я конечно же с удовольствием им воспользуюсь)
|
|
|
04.04.2014, 23:32
|
|
Игорь
Игорь Мишарин
Зарегистрирован: 2011-11-20
Сообщений: 482
|
1. В компоненте выставок создаете текстовое поле "Музей"
2. В шаблонах действия и добавления вместо этого поля формируете запросом к БД select с именем поля Музей, например, f_Museum. Запрос производится к компоненту с музеями, выборка поля название:
Код:listQuery("select distinct Name as name from MessageXX","<option value='\$data[name]'>\$data[name]</option>")
3. В нужно месте вызываете:
Код:<?=nc_objects_list($sub,$cc,"Museum=$f_Name")?>
4. В Системных настройках шаблона для вывода в Музеях компонента Выставки:
Код:if($Museum) {$query_where = "a.Museum = '$Museum'";}
Stark
|
|
|
05.04.2014, 15:45
|
|
mahmah
Зарегистрирован: 2014-01-28
Сообщений: 9
|
Игорь,
попробовала, поле добавила, но у меня почему-то при вводе выставки предлагает все музеи и не дает выбрать, просто петерчесление без выборки( где-то я ошиблась?
|
|
|
05.04.2014, 17:09
|
|
Игорь
Игорь Мишарин
Зарегистрирован: 2011-11-20
Сообщений: 482
|
Наверняка забыла про <select name='$f_Museum'></select>
<option></option> - это же элемент select'а
Т.е. вот так:
Код:
<select name='f_Museum'>
<option value='$f_Museum'>- выбрать -</option>
<?=listQuery("select distinct Name as name from MessageXX","<option value='\$data[name]'>\$data[name]</option>");?>
</select>
Stark
|
|
|
08.04.2014, 12:03
|
|
mahmah
Зарегистрирован: 2014-01-28
Сообщений: 9
|
Игорь! Список теперь выводится, но все равно не получается, теперь у меня просто выбирается музей, но не передается в качестве параметра.
Я сделала с помощью Связи с другим объектом. Поставила тип поля museum - Связь с объектом Выставки и остальное сделала, как предложил Александр. Вроде бы работает) Но если не сложно, подскажите в чем ошибка опять у меня, т.к. Ваш способ мне нравится больше, удобнее из списка выпадающего выбирать)
|
|
|
08.04.2014, 18:06
|
|
Игорь
Игорь Мишарин
Зарегистрирован: 2011-11-20
Сообщений: 482
|
Цитата: теперь у меня просто выбирается музей, но не передается в качестве параметра.
Может вы просто не видите то, что есть в полей Музей?
Тогда просто рядом с select'ом вставьте
и будет видно содержимое этого поля.
Stark
|
|
|
09.04.2014, 08:22
|
|
Nexwich
Панасин Александр
Зарегистрирован: 2011-04-05
Сообщений: 1037
|
Ваша ошибка в
<?=listQuery("select distinct Name as name from MessageXX","<option value='\$data[name]'>\$data[name]</option>");?>
Вам необходимо передавать уникальное значение а это Message_ID
А значит в добавок доработать запрос "select distinct Name as name, Message_ID as id" (или "SELECT * FROM MessageXX", "SELECT Message_ID,Name FROM MessageXX") тогда нужно будет вставить в value='\$data[id]'
А последующая выборка должна проходить по этому полю
if($db_Message_ID) $query_where = " a.Museum = '".$db_Message_ID."' ";
Если вы уже запутались, то значит вы именуете поля как вздумается.
Модуль "Почтовые уведомления" – настройка email уведомлений на вашем сайте без программирования. Бесплатно. http://netcat.ru/products/CatStore/solution_242.html
|