Суть Разрешить просмотр контактных данных объявления для пользователей, которые подключили и оплатили некоторый список просмотра (СП). Список просмотра регламентирует количество дней на протяжении которых доступен просмотр контактов и стоимость данного периода. Подключение СП проходит через раздел Личного кабинета (ЛК), а оплата списка производится из ЛК посредством Робокассы. Намеренно исключаю возможность задания СП при регистрации, когда вместе с регистрационными данными пользователь должен выбрать конкретный вариант СП, что бы унифицировать процедуру пользования СП для обычных пользователей и пользователей регистрирующихся через соцсети. Пример будет приведен на базе шаблона realia, но для любого другого шаблона принцип будет аналогичен. Приницип работы При загрузке страницы происходит извлечение СП для текущего пользователя. Если есть в наличии хоть один активный для данного момента времени СП в переменную сессии сохраняется состояние "открыто". Этот параметр проверяется в местах, где необходим вывод контактны данных и средствами шаблона принимается решение - выводить или скрыть блок с контактными данными. Задействованные приложения registersms - приложение используется формально. Находится в выключенном состоянии и служит для хранения настроки соотношения периода СП и цены за этот период. В принципе не критично и может быть реализовано отдельной настройкой watchlistmanager - приложение-хранилище функционала для работы СП. Должно быть, быть включенным и установленным. настройки Робокассы - must have Необходимые файлы Набор вспомогательных файлов можно скачать тут Файлы в архиве расфасованы согласно структуре шаблона. Т.е. то, что находится в папке main должно лечь в папку main вашего шаблона etc. Изменения В файле main.php Внутри class frontend_main extends SiteBill_Krascap {...} добавляем функцию getViewOptions, которая загружает СП для пользователя. Код функции копируем из http://pastebin.com/8rMZNU4U В функции main() производим вызов вставленной выше функции и загрузку цен на СП из конфигурации. Общий код изменений тут Блок А вставляем после строк $work_subcontroller='';$has_result=false;$undetected_url=false;Блоком Б заменяем блок if ( !$has_result && preg_match('/\/robox/', $_SERVER['REQUEST_URI']) ) {...}Блоком В дополняем ветвистость if ( preg_match('/^account\/profile/', $REQUESTURIPATH) ) {перед последним }else{ В файле header.tpl Добавляем кусочек, заносящий цены в переменные скриптов {literal}<script type="text/javascript">var _costs={/literal}{if $_costs ne ''}{$_costs}{else}[]{/if}{literal};</script>{/literal}Блок ставится в любом месте между тегами <head> и </head> В файле realty_view.tpl Фактически основные функциональные изменения, которые скрывают контактные данные. Находим блок, отображающий контактные данные и обрамляем его конструкцией {if $smarty.session.viewOptions.mode=='opened'}<!--Тут собственно контактные данные-->{else}Оплатите доступ к данным или другая информация{/if}Настройка Руководящими настройками для работы СП являются настройка цен. Соответствие цен и длительности периодов указывается в переменной Настройки - Регистрация через SMS - Стоимость категорий (apps.registersms.costs_array). Значения задаются в виде строки {N1:P1}{N2:P2}{N3:P3}{N4:P4}{N5:P5} - где N- длительность периода. По-умолчанию в днях. Р- стоимость этого периода. Например: {1:70}{2:100}{3:150}мы предусматриваем открытие просмотров контактов в вариантах на 1, 2 или 3 дня с соответствующими стоимостями 70, 100 и 150 рублей. Кроме этого места необходимо еще указать допустимые периоды (продублировать) в обработчике СП - /template/frontend/шаблон/main/local_watchlistmanager.php. В этом файле необходимо найти функцию getWLModel() и в ней изменить строку $form_data['period']['grade_values'] = array('1', '2', '3', '7', '31');где указать наш перечень периодов $form_data['period']['grade_values'] = array('1', '2', '3');Замечание Шаблон realia оборудован плагином-украшателем ezMark, который, не смотря на свою красивость, доказал несостоятельность при работе с элементами типа radio - кружочки с точечками в форме. Поскольку форма добавления СП использует именно такие элементы, а в остальных формах мы практически не используем их, то рекомендую сузить область работы этого плагина только элементами типа checkbox. Для этого в файле /template/frontend/realia/js/realia.js в функции InitEzmark() следует закомментировать строку $('input[type="radio"]').ezMark();