Меню
Яхты Benetti
Benetti - Mediterraneo 116
play-button
Технические характеристики
Длина габаритная
35.30 м
Ширина габаритная
7.70 м
Осадка
2.15 м
Водоизмещение
200 тонн
Запас хода (при крейсерской скорости)
3200 мм
Дизайнер интерьера
Benetti Interior Style Department
Внешний дизайн и концепция
Giorgio Maria Cassetta
Кол-во спальных мест
10 + 7
Количество кают
5 + 4
Желаете поговорить
о яхте?
Связаться
МОСКВА
Offices
P:
YACHTIQUE
Styling Lounge
P:
HONG KONG
Offices
P:
FORT LAUDERDALE
Offices
P:
LIVORNO
Yards
P:
Планы палуб
Внешний вид
Сандек
Верхняя палуба
Главная палуба
Нижняя палуба

Отладочная информация для модуля 328140 «Другие яхты серии»
Конфиг модуля
  • Holder = 5507 (модуль использует эту подшивку)
  • holder_table = account_list (родная таблица подшивки)
  • module_table = account_boat (таблица заданная для модуля)
  • qs-select = 1 (учитывать или нет параметры из QUERY_STRING)
  • firstboat = 0
  • wsdl-address = undef (Веб сервис)
  • wsdl-operation = undef (Веб функция)
JSON API

HashArray подробно в документации по API

TEXT API

TotalItemsUniqsPagesLetterBackwardForwardMinMaxFirstLastPrevNext

Имена QS переменных

Параметры QUERY_STRING, которые читает модуль.

  • qa_Id = boat (параметр для идентификации айтема, например, boat=1, где 1 — идентификатор ($URN) айтема. По умолчанию это префикс таблицы, т.е. boat.)
  • qa_FirstItem = firstboat (параметр указывает с какого айтема начинается вывод списка на странице, например, firstboat=10, — показывать на странице 11,12 и далее айтем)
  • qa_ItemQuantity = quantboat (параметр для указания кол-ва айтемов на странице, например, quantboat=100, показывать по 100 айтемов на странице)
  • qa_Sort = sortboat (параметр указывает сортировку, например, sortboat=boat_chr_name — сортировка по имени)
  • qa_Desc = descboat (параметр указывает прямой или обратный порядок сортировки, например, descboat=1 — включён обратный порядок)
Значения QS переменных

Важные QUERY_STRING переменные и их значения.

  • $URN = mediterraneo-116
  • @URN = mediterraneo-116
  • $FirstItem = 0
  • $ItemQuantity = 100
Настройки для вычисления урлов
  • $current_page_qs = yachts (урл страницы)
  • @current_page_qs = yachts (все урлы, если их несколько)
  • $current_page_domain = undef (субдомен текущей страницы)
Настройки сортировки
  • SortBy = boat_uid_id
  • Desc =
Все переменные SQL

Все переменные %VARS1 которые можно использовать в sql-select, sql-where, data-mask, sql-groupby, sql-having, sql-limit

{ 'offset' : 0, 'row_count' : 100, 'remote_ip' : '3.237.71.23', 'lang' : undef, 'url_hex' : 'f5185a6559a357216dcedf528fab1a00', 'urn' : 'mediterraneo-116', 'urns' : 'mediterraneo-116', 'uri' : '/yachts/class/mediterraneo-116/', 'referer' : undef, 'method' : 'GET', 'page' : 15784, 'branch' : 120, 'account' : 975, 'domain' : 'benettiyachts.ru', 'holder' : 5507, 'member' : 4749, 'user' : 65881879, 'users' : 65881879, 'uri_string' : 'http://benettiyachts.ru/yachts/class/mediterraneo-116/', 'uri_path_query' : '/yachts/class/mediterraneo-116/', 'uri_path' : '/yachts/class/mediterraneo-116/', 'query_string' : '', 'request_uri' : '/yachts/class/mediterraneo-116/', 'http_referer' : undef, 'http_host' : 'benettiyachts.ru', 'http_scheme' : 'http://', 'browser_string' : undef, 'browser_version' : '2.0', 'engine_string' : undef, 'engine_version' : undef, 'os_string' : undef, 'device_string' : undef, 'robot_string' : 'CCBot', 'user_agent' : 'CCBot/2.0 (https://commoncrawl.org/faq/)', 'delayed' : undef, 'final_render' : undef, 'breadcrumbs' : sub { "DUMMY" }, 'sitesearch' : sub { "DUMMY" }, 'module_parent' : 327865, 'module' : 328140, 'status' : undef, 'Function' : 'boat', 'boat_uid_ids' : sub { "DUMMY" }, 'boat_hld_holders' : sub { "DUMMY" }, 'boat_mbr_members' : sub { "DUMMY" }, 'boat_cur_cost5' : '0.00', 'boat_val_cost2' : 'EUR', 'boat_cur_cost1' : '0.00', 'listing_image' : 'office/975/i/boat/116med1500-780.jpg', 'boat_set_region4' : 'в Европе', 'boat_set_berths' : '10 + 7', 'boat_eur_cost2' : 0, 'boat_int_breadth' : '7.70', 'boat_smp_update' : '2020-04-25 18:08:57', 'boat_int_passenger' : 0, 'boat_eur_cost6' : 0, 'boat_set_clear3' : '', 'boat_txt_text2' : '', 'boat_eur_cost7' : 14800000, 'boat_txt_text4' : '<p><b>Настоящая классика от Benetti.</b><br></p> <p>Модель длиной 35.3 м с корпусом из композита и структурой из карбона отличается классическим для Benetti, но в то же время очень современным дизайном работы <b>Giorgio M. Cassetta</b>. Он разработан так, чтобы сделать яхту максимально светлой: в остеклении надстройки — окна 3-метровой высоты, которые в центре салона (в зоне столовой) полностью открываются, давая выход на боковую палубу: благодаря своей ширине она выглядит как терраса.<br><br></p> <p>Каюта владельца располагается в носовой части главной палубы, а 4 каюты для гостей, каждая с огромным иллюминатором на уровне воды, — в центре нижней палубы. Помещения экипажа (в носовой части корпуса, плюс капитанская каюта на верхней палубе у поста управления) расположены так, чтобы обеспечить команде — удобство для работы, а гостям — максимальную приватность.<br><br></p> <p>Mediterraneo 116 выделяется обилием палубного пространства для отдыха на свежем воздухе, в том числе — полностью кастомизируемым сандеком площадью 80 кв.м. с закрытым скай-лаунжем и открытой террасой в корме. Два двигателя по 1400 л.с. позволяют развивать скорость 15 узлов, а благодаря эфективным обводам корпуса, в экономичном 10-узловом режиме запас автономности Mediterraneo 116 составляет 3200 морских миль.<br><br></p>', 'boat_int_depth' : '0.00', 'boat_set_interior' : 'Benetti Interior Style Department', 'boat_chk_used' : 0, 'boat_rom_views' : 11753, 'boat_int_displacement2' : 0, 'boat_cur_cost6' : '0.00', 'boat_int_hours' : 0, 'boat_val_cost5' : 'RUR', 'boat_hgt_image6' : 102, 'boat_set_keel' : '', 'boat_set_cabines' : '5 + 4', 'boat_val_cost7' : 'EUR', 'boat_set_region3' : '', 'boat_set_material' : 'GRP', 'boat_set_region1' : '', 'boat_chk_main' : 0, 'boat_enm_type' : 'MOTOR', 'boat_cur_cost7' : '14800000.00', 'boat_chk_export' : 0, 'boat_val_cost4' : 'RUR', 'boat_cur_cost4' : '0.00', 'boat_txt_text3' : '', 'boat_hgt_image2' : 380, 'boat_cur_cost2' : '0.00', 'boat_enm_old' : 'NO', 'boat_mbr_member' : 179545, 'boat_int_draft' : '2.15', 'boat_int_water' : 4000, 'boat_int_length' : '0.00', 'boat_eur_cost3' : 0, 'boat_set_clear4' : 'VAT не выплачен', 'boat_wth_image4' : 750, 'boat_int_year' : 2019, 'boat_lnk_master' : 27707, 'boat_set_builder' : 'Azimut Yachts (Италия)', 'boat_val_cost3' : 'EUR', 'boat_txt_text5' : '', 'boat_smp_create' : '2017-01-18 00:17:57', 'boat_chk_attribute' : 0, 'boat_chr_title' : '', 'boat_img_image5' : '/office/975/i/boat/116med1500-780.jpg', 'boat_int_draft2' : '0.00', 'boat_max_draft' : '2.15', 'boat_int_breadth2' : '0.00', 'boat_int_speed' : '14.00', 'boat_chk_stock' : 0, 'boat_chr_article' : 'BM1162016', 'boat_int_lot' : 0, 'boat_set_wc' : '8 + 4', 'boat_cnt_account' : 975, 'boat_eur_cost5' : 0, 'boat_val_cost1' : 'EUR', 'boat_uid_id' : 4749, 'boat_eur_cost8' : 0, 'boat_hgt_image5' : 780, 'boat_chr_tonnage' : '', 'boat_txt_text' : '', 'boat_chr_name2' : 'Benetti Mediterraneo 116', 'boat_ind_index' : 3, 'boat_lnk_manager' : 29625, 'boat_set_gearbox' : '', 'boat_int_displacement' : 200, 'boat_int_waterline' : 0, 'boat_wth_image5' : 1500, 'boat_chk_build' : 0, 'boat_eur_cost1' : 0, 'boat_val_cost6' : 'RUR', 'boat_cur_cost8' : '0.00', 'boat_enm_flag' : 'NO', 'boat_int_maxspeed' : '15.00', 'boat_int_tank2' : 0, 'boat_set_country2' : '', 'boat_img_image4' : '/office/975/i/boat/116med750-356.jpg', 'boat_eur_cost4' : 0, 'boat_hld_holder' : 5507, 'boat_int_tank3' : '0.00', 'boat_img_image2' : '/office/975/i/boat/940-1-benetti-Mid-116.jpg', 'boat_chr_name' : 'MED 116', 'boat_chr_link' : 'mediterraneo-116', 'boat_int_length3' : '0.00', 'boat_set_exterior' : 'Giorgio Maria Cassetta', 'boat_enm_request' : 'NO', 'boat_img_icon' : '/office/975/i/boat/225-90-logo-Benetti.jpg', 'boat_wth_image6' : 300, 'boat_enm_exists' : 'YES', 'boat_chr_nick' : 116, 'boat_hgt_image' : 325, 'boat_val_cost8' : 'EUR', 'boat_int_tank' : 0, 'boat_int_fuel' : 33000, 'boat_img_image6' : '/office/975/i/boat/mediterraneo_116.png', 'boat_set_region2' : '', 'boat_cur_cost3' : '0.00', 'boat_max_breadth' : '7.70', 'boat_set_country' : 'Италия', 'boat_txt_keywords' : '', 'boat_set_clear1' : '', 'boat_txt_descr' : '', 'boat_wth_image2' : 940, 'boat_int_length2' : '35.30', 'boat_hgt_image4' : 356, 'boat_wth_image' : 685, 'boat_set_stabilisers' : 'Mediterraneo', 'boat_img_image' : '/office/975/i/boat/685-1-benetti-Mid-116.jpg', 'boat_int_range' : 3200, 'boat_set_clear2' : '', 'boat_max_length' : '35.30', 'boat_set_engine' : '2 x MAN V12-1400 л.с. 1029 кВт', 'boat_chk_enlarge' : 0, 'boat_lnk_shipyard' : 118576, 'boat_chr_name_alt' : 'MED 116', 'Boat_Href' : sub { "DUMMY" }, 'list_uid_ids' : sub { "DUMMY" }, 'list_hld_holders' : sub { "DUMMY" }, 'list_mbr_members' : sub { "DUMMY" }, 'list_chr_name' : 'CLASS', 'list_uid_id' : 192604, 'list_cnt_account' : 987, 'list_img_image' : '/i/list/1_class_slider_modificata.jpg', 'list_mbr_member' : 0, 'list_chr_link' : 'class', 'list_hld_holder' : 14565, 'list_ind_index' : 1, 'list_txt_text' : 'For pioneers. <br> For pleasure seekers and romantics. <br> For lovers of tradition which knows how to move with the times. <br> For those who desire the very best when it comes to cruising in comfort,<br> with a layout which optimises every inch of on-board space. <br>', 'list_chr_name_alt' : 'CLASS', 'List_Href' : sub { "DUMMY" }, 'Date' : '2020-09-24 11:17:57', 'mime' : 'html', 'boat' : 'mediterraneo-116', 'list' : 'class', 'p' : 'yachts', 'my_userholder' : 15110, 'my_cookies' : '<h1>Политика использования файлов cookies</h1> <p>При использовании услуг на <a href="//benettiyachts.ru" target="_blank">benettiyachts.ru</a> (далее - Сайт), наших мобильных сайтах или мобильных приложениях, мы можем собирать информацию с помощью файлов cookies, чтобы облегчить Вам использование наших сервисов и адаптировать их под Ваши потребности.</p> <p>Вся информация полностью конфиденциальна и никогда не продается третьим лицам.</p> <p><b>Что такое cookies?</b></p> <p>Cookies – это небольшие текстовые файлы, которые сохраняются в браузере пользователя при посещении веб-сайта. При последуещем использовании веб-сайта браузер идентифицирует Ваш компьютер и тем самым обеспечивает удобство использования сервиса во время текущей сессии.</p> <p><b>Как Сайт использует cookies?</b></p> <p>Мы используем сессионные (временные) cookies на период Вашего пребывания на сайте и постоянные cookies для повторяющихся визитов веб-сайта в двух целях:</p> <ul type="disc"> <li>Для адаптации веб-сайта под Ваши потребности</li> <li>Для анализа веб-сайта</li> </ul> <p><b>Адаптация веб-сайта под Ваши потребности</b></p> <p>Cookies уровня Essential позволяют идентифицировать Ваш компьютер во время текущей сессии и пользоваться веб-сайтом как можно быстрее и проще. Работа следующих функций, например, выполняется с помощью cookies:</p> <ul type="disc"> <li>Сохранение настроек страны и языка.</li> <li>Сохранение отелей в закладках.</li> <li>Возможность просматривать историю поиска.</li> <li>Сравнение отелей с помощью нашей функции сравнения отелей.</li> <li>Вход на панель сообщества trivago.</li> <li>Получение уведомлений о направлениях и отелях, которые могли бы быть Вам интересны. Это включает в себя появление рекламы trivago с предложениями об отелях на посторонних веб-сайтах.</li> </ul> <p>Без cookies эти и некоторые другие функции не могли бы работать.</p> <p><b>Аналитика веб-сайта с помощью cookies</b></p> <p>Аналитические cookies помогают нам в предоставлении Вам наилучших услуг. Этот тип cookies анонимно отслеживает, какие ссылки и функции на веб-сайте используются чаще остальных, что позволяет нам определить наиболее проблематичные и успешные стороны веб-сайта. Эти cookies адаптируют содержимое нашего сайта под Ваши предпочтения и тем самым облегчают пользование нашим ресурсом.</p> <p><b>Управление файлами cookies</b></p> <p>Пожалуйста, имейте в виду, что если Вы выберете не сохранять файлы cookies в браузере, Вы не сможете пользоваться многими важными функциями веб-сайта. Тем не менее, Вы все же сможете производить базовый поиск отелей.</p> <p>Если Вы хотите изменить или отменить сохранение файлов cookies, то зайдите в настройки Вашего браузера, где Вы сможете отключить сохранение cookies полностью или включить уведомление об использовании cookies. Также Вы можете удалить все cookies, которые были сохранены в браузере ранее. Если Вы не знаете, где находятся настройки cookies в Вашем браузере, то воспользуйтесь секцией «Помощь».</p> <p><b>Согласие на использование файлов cookies</b></p> <p>Если определенные файлы cookies необходимы для функиональности веб-страницы trivago, то Ваше предварительное согласие на использование данных файлов не нужно. Эти сессионные cookies будут удалены, как только Вы покините веб-сайт. Для использования постоянных cookies и cookies посторонних веб-сайтов необходимо Ваше предварительное согласие, так как они будут сохранять Ваши действия на странице и запоминать Ваши предпочтения. Ваше согласие обуславливается условием веб-сайта для получения информации, изначально предполагающее добровольное согласие лица на использование данной информации.</p> <p><b>Дополнительная информация о cookies</b></p> <p><b>Cookies первой стороны</b></p> <p>Этот вид cookies принадлежит веб-сайту и созданы тем веб-сайтом, который Вы просматриваете.</p> <p><b>Cookies третьей стороны</b></p> <p>Эти файлы не принадлежат веб-сайту, который Вы просматриваете, а созданы веб-сайтом независимой компании.</p> <p><b>Сессионные cookies</b></p> <p>Сессионные cookies являются временными файлами, которые сохраняются в браузере пользователя только до тех пор, пока он находится на веб-сайте. После этого эти cookies удаляются.</p> <p><b>Постоянные cookies</b></p> <p>Постоянные cookies используются для постоянных пользователей веб-сайта. Этот вид cookies сохраняется в браузере пользователя на определенное количество времени (чаще всего год или дольше). Эти cookies не удаляются при закрытии браузера. Они помогают облегчить использование веб-сайта при повторном посещении путем запоминания информации, которую пользователь использовал в предыдущих сессиях.</p>', 'my_policy' : '<h1>Политика конфиденциальности</h1> <p>1. Настоящая Политика конфиденциальности (далее – Политика) составлена в соответствии с действующим законодательством РФ, в том числе в соответствии с Федеральным законом от 27 июля 2006 года № 152- ФЗ «О персональных данных», и призвана надлежащим образом урегулировать отношения, возникающие между физическим или юридическим лицом-пользователем <a href="//benettiyachts.ru">benettiyachts.ru</a> (далее по тексту – Сайт) и администрацией сайта <a href="//benettiyachts.ru">benettiyachts.ru</a> (далее по тексту – Администрация).</p> <p>2. Принимая настоящую Политику, пользователь выражает свое безоговорочное согласие на предоставление Администрации:<br> 2.1. Персональной информации (включая ее обработку): <br> 2.1. Имя пользователя;<br> 2.2. Электронная почта (недоступна для всеобщего пользования); </p> <p>Пользователь по своему желанию заполняет форму подписки, внося в нее данные о своем имени и электронной почте.<br> Вся персональная информация, предоставленная пользователем, хранится в базе данных сайта и автоматически удаляется в случаях, указанных в настоящей Политике. </p> <p>2.3. предоставление автоматической информации, такой как: <br> 2.3.1. IP-адрес;<br> 2.3.2. Текстовые фрагменты данных о пользователе (cookie);<br> 2.3.3. Браузер или иной программы, с помощью которой пользователь получает доступ к Сайту;<br> 2.3.4. данные в URL;<br> 2.3.5. HTTP/HTTPS-аутентификация;<br></p> <p> Предоставление иной информации, которая необходима Администрации для организации доступа пользователя к Сайту. </p> <p>3. Любая информация, которая предоставляется пользователем для целей использования Сайта, должна быть актуальной и достоверной. Администрация исполняет свои обязательства в соответствии с той информацией, которая им известна, и не будет нести ответственность, если ненадлежащее исполнение было вызвано несвоевременным уведомлением пользователя об ее изменении.</p> <p>4. Администрация не распространяет информацию о пользователе третьим лицам, кроме случаев, когда от пользователя получено соответствующее согласие на такие действия, или предоставление информации разрешено действующим законодательством РФ, и при этом согласие пользователя на ее предоставление не требуется в соответствии с применимым законом.</p> <p>5. Администрация оставляет за собой право проверять данные, предоставленные пользователем, однако, в случае если персональная и иная информация, предоставленная пользователем, является недостоверной, пользователь самостоятельно несет все связанные с этим неблагоприятные последствия.</p> <p>6. Администрация не будет нести ответственность за информацию, которая предоставлена пользователем по его желанию.</p> <p>7. Администрация принимает все меры для защиты персональной информации пользователя от неправомерного или случайного доступа, уничтожения, копирования, распространения.</p> <p>8. Администрация вправе в одностороннем порядке в любой момент изменить текст настоящей Политики, предварительно уведомив об этом пользователя. Принимая текст настоящей Политики, пользователь дает свое согласие на все последующие к ней изменения.</p> <p>9. Настоящая Политика не распространяется на сервисы, сайты и так далее третьих лиц, не имеющих юридического и фактического отношения к Администрации. Пользователь самостоятельно урегулирует вопросы предоставления информации о себе с такими лицами.</p>', 'my_agreement' : '<h1>Пользовательское соглашение</h1> <p>Настоящее Соглашение определяет условия использования Пользователями материалов и сервисов сайта <a href="//benettiyachts.ru">benettiyachts.ru</a> (далее — «Сайт»).</p> <p><b>1.Общие условия</b></p> <p>1.1. Использование материалов и сервисов Сайта регулируется нормами действующего законодательства Российской Федерации.</p> <p>1.2. Настоящее Соглашение является публичной офертой. Получая доступ к материалам Сайта Пользователь считается присоединившимся к настоящему Соглашению. </p> <p>1.3. Администрация Сайта вправе в любое время в одностороннем порядке изменять условия настоящего Соглашения. Такие изменения вступают в силу по истечении 3 (Трех) дней с момента размещения новой версии Соглашения на сайте. При несогласии Пользователя с внесенными изменениями он обязан отказаться от доступа к Сайту, прекратить использование материалов и сервисов Сайта.</p> <p><b>2. Обязательства Пользователя</b></p> <p>2.1. Пользователь соглашается не предпринимать действий, которые могут рассматриваться как нарушающие российское законодательство или нормы международного права, в том числе в сфере интеллектуальной собственности, авторских и/или смежных правах, а также любых действий, которые приводят или могут привести к нарушению нормальной работы Сайта и сервисов Сайта.</p> <p>2.2. Использование материалов Сайта без согласия правообладателей не допускается (статья 1270 Г.К РФ). Для правомерного использования материалов Сайта необходимо заключение лицензионных договоров (получение лицензий) от Правообладателей. </p> <p>2.3. При цитировании материалов Сайта, включая охраняемые авторские произведения, ссылка на Сайт обязательна (подпункт 1 пункта 1 статьи 1274 Г.К РФ).</p> <p>2.4. Комментарии и иные записи Пользователя на Сайте не должны вступать в противоречие с требованиями законодательства Российской Федерации и общепринятых норм морали и нравственности.</p> <p>2.5. Пользователь предупрежден о том, что Администрация Сайта не несет ответственности за посещение и использование им внешних ресурсов, ссылки на которые могут содержаться на сайте. </p> <p>2.6. Пользователь согласен с тем, что Администрация Сайта не несет ответственности и не имеет прямых или косвенных обязательств перед Пользователем в связи с любыми возможными или возникшими потерями или убытками, связанными с любым содержанием Сайта, регистрацией авторских прав и сведениями о такой регистрации, товарами или услугами, доступными на или полученными через внешние сайты или ресурсы либо иные контакты Пользователя, в которые он вступил, используя размещенную на Сайте информацию или ссылки на внешние ресурсы.</p> <p>2.7. Пользователь принимает положение о том, что все материалы и сервисы Сайта или любая их часть могут сопровождаться рекламой. Пользователь согласен с тем, что Администрация Сайта не несет какой-либо ответственности и не имеет каких-либо обязательств в связи с такой рекламой.</p> <p><b>3. Прочие условия</b></p> <p>3.1. Все возможные споры, вытекающие из настоящего Соглашения или связанные с ним, подлежат разрешению в соответствии с действующим законодательством Российской Федерации. </p> <p>3.2. Ничто в Соглашении не может пониматься как установление между Пользователем и Администрации Сайта агентских отношений, отношений товарищества, отношений по совместной деятельности, отношений личного найма, либо каких-то иных отношений, прямо не предусмотренных Соглашением.</p> <p>3.3. Признание судом какого-либо положения Соглашения недействительным или не подлежащим принудительному исполнению не влечет недействительности иных положений Соглашения.</p> <p>3.4. Бездействие со стороны Администрации Сайта в случае нарушения кем-либо из Пользователей положений Соглашения не лишает Администрацию Сайта права предпринять позднее соответствующие действия в защиту своих интересов и защиту авторских прав на охраняемые в соответствии с законодательством материалы Сайта.</p> <p><b>Пользователь подтверждает, что ознакомлен со всеми пунктами настоящего Соглашения и безусловно принимает их.</b></p>' }
Все алиасы

Все алиасы (alias) и их выражения (select_expr) найденные в селекте

{ "boat_uid_id" : "COALESCE(a.boat_ref_link, a.boat_uid_id)", "boat_cnt_account" : "a.boat_cnt_account", "boat_hld_holder" : "a.boat_hld_holder", "boat_mbr_member" : "a.boat_mbr_member", "boat_lng_language" : "a.boat_lng_language", "boat_ref_link" : "a.boat_ref_link", "boat_chr_link" : "a.boat_chr_link", "boat_ind_index" : "boat_ind_index", "boat_chr_name" : "boat_chr_name", "boat_href" : "CONCAT('/yachts/', LOWER('class') , '/', boat_chr_link, '/')", "listing_image" : "COALESCE(boat_img_image5, boat_img_image4, boat_img_image)", "boat_max_length" : "GREATEST( COALESCE(boat_int_length, 0), COALESCE(boat_int_length2, 0), COALESCE(boat_int_length3, 0)\t)" }
Алгоритм вычислеия УРЛов

Документация

Модуль привязан к родительской подшивке (module_tie = 1), УРЛ наследуется, ничего вычислять не надо. Цепочку модулей (ф-ия SeekModule) не ищем.

Листинг (1) или конечная страница (2)?

Краткая справка

Модуль выполняет два варианта запросов к БД:

  • 1) ВАРИАНТ 1. выборка списка всех айтемов из таблицы account_boat, ограниченных пагинацией (здесь firstboat=0, quantboat=100).
  • 2) ВАРИАНТ 2. выборка одного айтема из таблицы account_boat, если задан его URN идентификатор (англ. Uniform Resource Name), здесь это значение параметра boat в QUERY_STRING.
    • Путь по сайту (breadcrumbs) вычисляем, если Page CONTAINER не является главным шаблоном модуля (это не модуль типа Menu) и шаблон не работает с корзиной (отсутствуют в HTML-коде шаблона плейсхолдеры ##BuyerBasketUpdate##, ##BuyerUpdate##).
    • Ошибка 404 возникает если айтем не найден по его $URN. Исключение: $URN=% — ошибки не будет.

Документация по работе модуля Proto

Айтем ищем по его URN (boat_chr_link=mediterraneo-116).

SQL ЗАПРОС ДЛЯ ВЫБОРКИ ОДНОГО АЙТЕМА SELECT COALESCE(a.boat_ref_link, a.boat_uid_id) AS boat_uid_id, a.boat_cnt_account, a.boat_hld_holder, a.boat_mbr_member, a.boat_lng_language, /* языковая поддержка */ a.boat_ref_link, /* языковая поддержка */ a.boat_chr_link, boat_ind_index, boat_chr_name, CONCAT('/yachts/', LOWER('class') , '/', boat_chr_link, '/') AS boat_href, COALESCE(boat_img_image5, boat_img_image4, boat_img_image) AS listing_image, GREATEST( COALESCE(boat_int_length, 0), COALESCE(boat_int_length2, 0), COALESCE(boat_int_length3, 0) ) AS boat_max_length FROM account_boat a # Выбираем связанные лодки INNER JOIN reestr_join ON join_account=987 AND join_holder=5507 AND join_this=192604 AND join_that=boat_uid_id WHERE a.boat_cnt_account = 975 AND a.boat_hld_holder IN(5507) AND boat_uid_id <> 4749 AND a.boat_lng_language IS NULL /* объединения нет, доп. язык тоже не выбран, берем основной (module:328140) */ AND a.boat_chr_link LIKE ? ORDER BY boat_uid_id LIMIT 1 (где знак '?' заменяется на значение 'mediterraneo-116')

Запрос вернул ноль строк. Не нашли айтем по его URN. Другими словами это ошибка 404.

Плейсхолдеры, которые можно использовать в шаблоне{ "Account" : "975", "Holder" : "5507", "Member" : "4749", "Function" : "boat", "UserID" : 65881879, "Users" : "Функция", "Letter" : "Функция", "Pages" : "Функция", "Backward" : "Функция", "Forward" : "Функция", "PagePos" : "Функция", "PageQuantity" : "Функция", "Pos" : "Функция", "Min" : "Функция", "Max" : "Функция", "Last" : "Функция", "First" : "Функция", "Prev" : "Функция", "Next" : "Функция", "Total" : "Функция", "Items" : "Функция", "Uniqs" : "Функция", "Hash" : "Функция", "Array" : "Функция", "JSON_Items" : "Функция", "Listing" : "Функция", "Union" : "/yachts/boat-mediterraneo-116/boat-union.html", "Data_uid_id" : "boat_uid_id", "Data_hld_holder" : "boat_hld_holder", "Data_mbr_member" : "boat_mbr_member", "Data_chr_link" : "boat_chr_link", "Data_ref_link" : "boat_ref_link", "Data_lng_language" : "boat_lng_language", "Data_chr_name" : "boat_chr_name", "Data_chr_title" : null, "Data_txt_descr" : null, "Data_txt_keywords" : null, "QA" : "boat", "QA_Page" : "p", "QA_ItemQuantity" : "quantboat", "QA_FirstItem" : "firstboat", "QA_Sort" : "sortboat", "QA_Desc" : "descboat", "Return" : null, "ItemQuantity" : "100", "FirstItem" : "0", "QSPage" : "yachts", "BaseHref" : null, "main-Module" : "328140", "page-Module" : "Функция", "parent-Module" : 327865, "SQL" : "SELECT\r\n\tCOALESCE(a.boat_ref_link, a.boat_uid_id) AS boat_uid_id,\r\n\ta.boat_cnt_account,\r\n\ta.boat_hld_holder,\r\n\ta.boat_mbr_member,\r\n\ta.boat_lng_language, /* языковая поддержка */\r\n\ta.boat_ref_link, /* языковая поддержка */\r\n\ta.boat_chr_link,\r\n\r\n\tboat_ind_index,\r\n\tboat_chr_name,\r\n\t\r\n\tCONCAT('/yachts/', LOWER('class') , '/', boat_chr_link, '/') AS boat_href,\r\n\t\r\n\tCOALESCE(boat_img_image5, boat_img_image4, boat_img_image) AS listing_image,\r\n\t\r\n\tGREATEST(\r\n\t COALESCE(boat_int_length, 0), COALESCE(boat_int_length2, 0), COALESCE(boat_int_length3, 0)\r\n\t) AS boat_max_length\nFROM account_boat a\r\n\r\n# Выбираем связанные лодки\r\nINNER JOIN reestr_join ON join_account=987 AND join_holder=5507 AND join_this=192604 AND join_that=boat_uid_id\n\tWHERE a.boat_cnt_account = 975\r\nAND a.boat_hld_holder IN(5507)\n\tAND boat_uid_id <> 4749\n\tAND a.boat_lng_language IS NULL /* объединения нет, доп. язык тоже не выбран, берем основной (module:328140) */\n\t AND a.boat_chr_link LIKE ? \n\t\n\t\n\tORDER BY boat_uid_id \n\tLIMIT 1 /*URN item*/", "Timing" : "Функция", "AuthLogin" : "Функция", "CONF_SqlGroupby" : "", "CONF_Boat_enm_urgent" : "", "CONF_FunctionTable" : "account_boat", "CONF_Boat_int_tank3" : "", "CONF_Boat_img_image4" : "", "CONF_Boat_set_country2" : "", "CONF_Boat_int_maxspeed" : "", "CONF_Boat_int_tank2" : "", "CONF_Boat_cur_cost8" : "", "CONF_Boat_enm_flag" : "", "CONF_Boat_val_cost6" : "", "CONF_Link1" : "", "CONF_Boat_chk_build" : "", "CONF_Boat_wth_image5" : "", "CONF_DefaultItem" : "", "CONF_Boat_int_displacement" : "", "CONF_Boat_int_waterline" : "", "CONF_Boat_lnk_manager" : "", "CONF_Boat_set_gearbox" : "", "CONF_QsSelect" : "1", "CONF_Boat_int_adplace" : "", "CONF_Boat_enm_clear" : "", "CONF_Boat_txt_text" : "", "CONF_Boat_ind_index" : "", "CONF_Boat_chr_name2" : "", "CONF_Boat_chr_tonnage" : "", "CONF_Boat_img_image7" : "", "CONF_Boat_hgt_image5" : "", "CONF_Boat_txt_text8" : "", "CONF_Boat_uid_id" : "", "CONF_Boat_val_cost1" : "", "CONF_SqlWhereQsMatch" : "", "CONF_ColumnCount" : 0, "CONF_Boat_set_wc" : "", "CONF_Boat_int_lot" : "", "CONF_Link2" : "", "CONF_Boat_lnk_shipyard" : "", "CONF_Boat_chk_enlarge" : "", "CONF_Boat_set_engine" : "", "CONF_Boat_set_clear2" : "", "CONF_Boat_int_range" : "", "CONF_Boat_img_image" : "", "CONF_ShortText" : 100, "CONF_Boat_set_stabilisers" : "", "CONF_Boat_hgt_image7" : "", "CONF_Boat_hgt_image4" : "", "CONF_Boat_wth_image" : "", "CONF_Boat_int_length2" : "", "CONF_QsId" : "boat", "CONF_Boat_set_clear1" : "", "CONF_Boat_txt_descr" : "", "CONF_Boat_wth_image2" : "", "CONF_Boat_set_country" : "", "CONF_Boat_txt_keywords" : "", "CONF_Boat_wth_image3" : "", "CONF_Boat_cur_cost3" : "", "CONF_Boat_wth_image7" : "", "CONF_Boat_img_image6" : "", "CONF_Boat_set_region2" : "", "CONF_Boat_int_fuel" : "", "CONF_Boat_val_cost8" : "", "CONF_Boat_int_tank" : "", "CONF_Boat_hgt_image" : "", "CONF_ItemQuantity" : "100", "CONF_Boat_chr_nick" : "", "CONF_Boat_dec_longitude" : "", "CONF_Boat_enm_exists" : "", "CONF_Boat_enm_redirect" : "", "CONF_Boat_img_icon" : "", "CONF_Boat_set_propeller" : "", "CONF_Boat_wth_image6" : "", "CONF_Boat_enm_daily" : "", "CONF_Boat_set_exterior" : "", "CONF_Boat_set_bowthruster" : "", "CONF_Boat_enm_request" : "", "CONF_ForeignAccount" : "975", "CONF_Boat_int_length3" : "", "CONF_Boat_chr_link" : "", "CONF_SqlUpdateWhere" : "", "CONF_Boat_chr_name" : "", "CONF_Boat_img_image2" : "", "CONF_PageQuantity" : "", "CONF_Boat_set_airconditioning" : "", "CONF_Boat_chk_main" : "", "CONF_Boat_val_cost9" : "", "CONF_Boat_enm_spec" : "", "CONF_DataMask" : "boat_uid_id <> 4749", "CONF_Boat_set_region1" : "", "CONF_Boat_set_material" : "", "CONF_SqlLimit" : "LIMIT 100 OFFSET 0", "CONF_Boat_set_region3" : "", "CONF_Boat_set_cabines" : "", "CONF_Boat_val_cost7" : "", "CONF_Boat_set_keel" : "", "CONF_Boat_hgt_image6" : "", "CONF_Boat_val_cost5" : "", "CONF_Boat_int_hours" : "", "CONF_Boat_lnk_user" : "", "CONF_Boat_int_displacement2" : "", "CONF_Boat_cur_cost6" : "", "CONF_Boat_rom_views" : "", "CONF_Boat_chk_used" : "", "CONF_Boat_set_propulsion" : "", "CONF_Boat_set_interior" : "", "CONF_Boat_int_depth" : "", "CONF_Boat_txt_text4" : "", "CONF_Link3" : "", "CONF_SqlUpdateLimit" : "", "CONF_Boat_set_clear3" : "", "CONF_SortBy3" : "", "CONF_Boat_txt_text2" : "", "CONF_Boat_img_image3" : "", "CONF_SortBy" : "", "CONF_Boat_enm_reseved" : "", "CONF_Boat_int_passenger" : "", "CONF_Boat_smp_update" : "", "CONF_Boat_set_berths" : "", "CONF_SortBy2" : "", "CONF_Boat_int_breadth" : "", "CONF_Boat_enm_hide" : "", "CONF_Boat_set_region4" : "", "CONF_SqlSelect" : "SELECT\r\n\tCOALESCE(a.boat_ref_link, a.boat_uid_id) AS boat_uid_id,\r\n\ta.boat_cnt_account,\r\n\ta.boat_hld_holder,\r\n\ta.boat_mbr_member,\r\n\ta.boat_lng_language, /* языковая поддержка */\r\n\ta.boat_ref_link, /* языковая поддержка */\r\n\ta.boat_chr_link,\r\n\r\n\tboat_ind_index,\r\n\tboat_chr_name,\r\n\t\r\n\tCONCAT('/yachts/', LOWER('class') , '/', boat_chr_link, '/') AS boat_href,\r\n\t\r\n\tCOALESCE(boat_img_image5, boat_img_image4, boat_img_image) AS listing_image,\r\n\t\r\n\tGREATEST(\r\n\t COALESCE(boat_int_length, 0), COALESCE(boat_int_length2, 0), COALESCE(boat_int_length3, 0)\r\n\t) AS boat_max_length", "CONF_Boat_enm_sale" : "", "CONF_CustomParent" : "", "CONF_Boat_dec_latitude" : "", "CONF_Boat_txt_text7" : "", "CONF_Boat_cur_cost1" : "", "CONF_SqlUpdateTable" : "", "CONF_Boat_val_cost2" : "", "CONF_Boat_enm_fix" : "", "CONF_SqlWhere" : "WHERE a.boat_cnt_account = 975\r\nAND a.boat_hld_holder IN(5507)", "CONF_Boat_cur_cost5" : "", "CONF_Boat_set_generator" : "", "CONF_Boat_chr_article" : "", "CONF_Boat_chk_stock" : "", "CONF_Boat_int_speed" : "", "CONF_Boat_int_breadth2" : "", "CONF_Boat_int_draft2" : "", "CONF_Boat_img_image5" : "", "CONF_Boat_chk_attribute" : "", "CONF_Boat_chr_title" : "", "CONF_SqlHaving" : "", "CONF_Boat_txt_text5" : "", "CONF_Boat_smp_create" : "", "CONF_Boat_cur_cost9" : "", "CONF_Boat_enm_new" : "", "CONF_Boat_val_cost3" : "", "CONF_Boat_set_builder" : "", "CONF_Boat_lnk_master" : "", "CONF_Boat_int_year" : "", "CONF_SqlUpdateSet" : "", "CONF_Qs_Page" : "", "CONF_SqlFrom" : "FROM account_boat a\r\n\r\n# Выбираем связанные лодки\r\nINNER JOIN reestr_join ON join_account=987 AND join_holder=5507 AND join_this=192604 AND join_that=boat_uid_id", "CONF_Boat_hgt_image3" : "", "CONF_Boat_set_clear4" : "", "CONF_Boat_wth_image4" : "", "CONF_Boat_int_length" : "", "CONF_Boat_set_classification" : "", "CONF_Boat_int_water" : "", "CONF_Boat_int_draft" : "", "CONF_Boat_cur_cost2" : "", "CONF_Boat_enm_old" : "", "CONF_Boat_val_cost4" : "", "CONF_Boat_cur_cost4" : "", "CONF_Boat_hgt_image2" : "", "CONF_Boat_txt_text3" : "", "CONF_Boat_txt_text6" : "", "CONF_Boat_chk_export" : "", "CONF_Boat_enm_type" : "", "CONF_Boat_cur_cost7" : "", "Boat_Href" : "Функция", "([A-Z][a-z]+)Update" : "Функция", "([a-z]+_[a-z]+)Update" : "Функция", "SendUserEmail-([a-zA-Z0-9]+)" : "Функция", "SendAdminEmail-([a-zA-Z0-9]+)" : "Функция", "SendEmail-([a-zA-Z0-9]+)" : "Функция", "SendUserSMS-([a-zA-Z0-9]+)" : "Функция", "SendAdminSMS-([a-zA-Z0-9]+)" : "Функция", "SendSMS-([a-zA-Z0-9]+)" : "Функция" }

ВАРИАНТ 1. Показываем страницу айтема. Параметр URN (имя boat в QUERY_STRING) определён (значение равно mediterraneo-116). Соотвтественно айтем выбран.

Выбираем шаблон модуля

Перебираем доступные шаблоны с ролью CONTAINER: ('Другие яхты серии')

Поскольку module_case не определён, выбираем первый шаблон в списке: «Другие яхты серии»

Нашли шаблон (Page CONTAINER) для страницы айтема — 328140 «Другие яхты серии».

Page CONTAINER является главным шаблоном модуля. Title, description, keywords не вычисляем.

SQL ЗАПРОС ДЛЯ ВЫБОРКИ СПИСКА АЙТЕМОВSELECT SQL_CALC_FOUND_ROWS COALESCE(a.boat_ref_link, a.boat_uid_id) AS boat_uid_id, a.boat_cnt_account, a.boat_hld_holder, a.boat_mbr_member, a.boat_lng_language, /* языковая поддержка */ a.boat_ref_link, /* языковая поддержка */ a.boat_chr_link, boat_ind_index, boat_chr_name, CONCAT('/yachts/', LOWER('class') , '/', boat_chr_link, '/') AS boat_href, COALESCE(boat_img_image5, boat_img_image4, boat_img_image) AS listing_image, GREATEST( COALESCE(boat_int_length, 0), COALESCE(boat_int_length2, 0), COALESCE(boat_int_length3, 0) ) AS boat_max_length FROM account_boat a # Выбираем связанные лодки INNER JOIN reestr_join ON join_account=987 AND join_holder=5507 AND join_this=192604 AND join_that=boat_uid_id WHERE a.boat_cnt_account = 975 AND a.boat_hld_holder IN(5507) AND boat_uid_id <> 4749 AND a.boat_lng_language IS NULL /* объединения нет, доп. язык тоже не выбран, берем основной (module:328140) */ ORDER BY boat_uid_id ASC LIMIT 100 OFFSET 0
date() 
      integer() 
      like()
      letter()
      total items: 3

$BaseHref = '/yachts/boat-mediterraneo-116.html' - базовый урл, испольуется для пагинации

Выбираем шаблон модуля

Перебираем доступные шаблоны с ролью ITEM: ('Proto.Item ')

Поскольку module_case не определён, выбираем первый шаблон в списке: «Proto.Item »

Выбираем шаблон модуля

Перебираем доступные шаблоны с ролью ITEM: ('Proto.Item ')

Поскольку module_case не определён, выбираем первый шаблон в списке: «Proto.Item »

Выбираем шаблон модуля

Перебираем доступные шаблоны с ролью ITEM: ('Proto.Item ')

Поскольку module_case не определён, выбираем первый шаблон в списке: «Proto.Item »

Выбираем шаблон модуля

Перебираем доступные шаблоны с ролью DELIMITER: ()