vihr

Cтраница с объектами агента /userХХ.html

Recommended Posts

Очень надо разместить в шапке(перед списком объектов) контент с инфой о агенте

Должность, текстовочка, его связи в социалках

Подскажите как сделать это без осинового кола в движок)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Базовое решение.

 

На примере шаблона agency

 

1. /template/frontend/agency/main/main.php

ищем строку

if(!$has_result && preg_match('/user(\d+).html/', $_SERVER['REQUEST_URI'], $matches)){

которая открывает блок, где у нас рисуется сетка объявлений пользователя.

После 

$this->setRequestValue('user_id', (int)$matches[1]);

делаем дополнение

$DBC=DBC::getInstance();$query='SELECT fio, phone FROM '.DB_PREFIX.'_user WHERE user_id=?';$stmt=$DBC->query($query, array((int)$matches[1]));if($stmt){$ar=$DBC->fetch($stmt);$this->template->assert('grid_user_info', $ar);}

Этот блок выбирает данные из таблицы юзеров. Список fio, phone можно расширить нужными вам именами из модели user. Не делаете 'SELECT * ', что бы не выхватывать пароли-явки. Только нужные поля.

 

Теперь в переменной {$grid_user_info} шаблона у нас есть данные.

 

2. /template/frontend/agency/realty_grid.tpl

В этом шаблоне, в месте где должен быть вывод данных юзера, делаем проверку

{if isset($grid_user_info)}...{/if}

так как этот файл выводит все сетки, поэтому удостоверяемся, что данные есть.

А внутри этогой проверки делаем нужный нам формат вывода.
Например
{if isset($grid_user_info)}<b>имя</b> {$grid_user_info.fio}{/if}

В итоге, и в систему не влезли, и данные получили.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Однако, если делаешь красивую ссылку с помощью линк менеджера, то информация не отображается. Почему?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Подскажите пожалуйста, как дополнить, чтобы выводились список определенных групп пользователей и при нажатии на имена которых выводился список их объектов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Однако, если делаешь красивую ссылку с помощью линк менеджера, то информация не отображается. Почему?

Какие параметры прописываете?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Однако, если делаешь красивую ссылку с помощью линк менеджера, то информация не отображается. Почему?

 

Линк-менеджер помогает работать только построителю сеток.

/userXXX.html - вызывает построитель сеток для параметра user_id=XXX + выхватывает дополнительную инфу о юзере

/красивая_ссылка_на_юзера - тоже вызывает построитель сеток по параметру переданному в настройках красивой ссылки, но делает это не в той же точке, что и /userXXX.html а там, где обычная сетка. Соотв. и допинфа о юзере там не вызывается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Линк-менеджер помогает работать только построителю сеток.

/userXXX.html - вызывает построитель сеток для параметра user_id=XXX + выхватывает дополнительную инфу о юзере

/красивая_ссылка_на_юзера - тоже вызывает построитель сеток по параметру переданному в настройках красивой ссылки, но делает это не в той же точке, что и /userXXX.html а там, где обычная сетка. Соотв. и допинфа о юзере там не вызывается.

Каким образом вызвать доп.информацию о  юзере в обычной сетке? Никак?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Каким образом вызвать доп.информацию о  юзере в обычной сетке? Никак?

 

Давайте попробуем зайти с другой стороны. Как выглядят ваши красивые урлы для юзеров?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Давайте попробуем зайти с другой стороны. Как выглядят ваши красивые урлы для юзеров?

Например, было /user8.html

Стало /an-byl

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Т.е. никакой общей части у этих урлов нет? Например

an-byl

an-kvartal

an-ivanov

 

или 

user/an-byl

user/gr_kvartal

user/ivanov

 

Если бы она была, то можно было бы сделать ранний перехват по этой общей части и на нее повесить выборку данных пользователя. А уже объявления вытягивались бы штатными средствами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Т.е. никакой общей части у этих урлов нет? Например

an-byl

an-kvartal

an-ivanov

 

или 

user/an-byl

user/gr_kvartal

user/ivanov

 

Если бы она была, то можно было бы сделать ранний перехват по этой общей части и на нее повесить выборку данных пользователя. А уже объявления вытягивались бы штатными средствами.

а если не user/... а, скажем, agentstvo/... ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

а если не user/... а, скажем, agentstvo/... ?

 

Не суть важно. Главное иметь какую-то часть адреса, что бы можно было однозначно определить - "Да, вот это реально урл от профиля пользователя, а не категория или еще что-то , например".

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не суть важно. Главное иметь какую-то часть адреса, что бы можно было однозначно определить - "Да, вот это реально урл от профиля пользователя, а не категория или еще что-то , например".

Хорошо. Как сделать такой перехват?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

/template/frontend/agency/main/main.php

 

Перед 

if(!$has_result && $this->isRealtyDetected($REQUESTURIPATH)){...}

Добавляем

if(preg_match('/^agentstvo\//', $REQUESTURIPATH)){ //проверяем нужный ли адрес$DBC=DBC::getInstance();$query='SELECT params FROM '.DB_PREFIX.'_predefinedlinks WHERE alias=? LIMIT 1'; //получаем параметры$stmt=$DBC->query($query, array($REQUESTURIPATH));if($stmt){$ar=$DBC->fetch($stmt);if($ar['params']!=''){$params=array();parse_str($ar['params'], $params);if(isset($params['user_id']) && 0<(int)$params['user_id']){$query='SELECT fio, phone FROM '.DB_PREFIX.'_user WHERE user_id=?'; //выбираем данные нужного юзера$stmt=$DBC->query($query, array((int)$params['user_id']));if($stmt){$ar=$DBC->fetch($stmt);$this->template->assert('grid_user_info', $ar); //отправляем данные в шаблон}}}}}

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

/template/frontend/agency/main/main.php

 

Перед 

if(!$has_result && $this->isRealtyDetected($REQUESTURIPATH)){...}

Добавляем

if(preg_match('/^agentstvo\//', $REQUESTURIPATH)){ //проверяем нужный ли адрес$DBC=DBC::getInstance();$query='SELECT params FROM '.DB_PREFIX.'_predefinedlinks WHERE alias=? LIMIT 1'; //получаем параметры$stmt=$DBC->query($query, array($REQUESTURIPATH));if($stmt){$ar=$DBC->fetch($stmt);if($ar['params']!=''){$params=array();parse_str($ar['params'], $params);if(isset($params['user_id']) && 0<(int)$params['user_id']){$query='SELECT fio, phone FROM '.DB_PREFIX.'_user WHERE user_id=?'; //выбираем данные нужного юзера$stmt=$DBC->query($query, array((int)$params['user_id']));if($stmt){$ar=$DBC->fetch($stmt);$this->template->assert('grid_user_info', $ar); //отправляем данные в шаблон}}}}}

 

o`k, все работает. Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

На этот урл не зарегистрировано ни одного частного обработчика и дефолтный тоже не может получить из него каких либо параметров для выполнения действия по умолчанию.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я делал так.

В main.php в main() ставил перехватчик

if ( !$has_result && preg_match('/^userlist[\/]?$/', $REQUESTURIPATH) ) {$this->userlist();$has_result=true;}

и в этом же классе frontend_main определял наипростейший обработчик

protected function userlist(){$users=array();$DBC=DBC::getInstance();$query='SELECT * FROM '.DB_PREFIX.'_user WHERE group_id<>4 AND user_id<>2 ORDER BY fio ASC';$stmt=$DBC->query($query);if($stmt){while($ar=$DBC->fetch($stmt)){$users[]=$ar;}}$this->template->assert('users', $users);$this->template->assert('main_file_tpl', 'userlist.tpl');}

Для вывода создавал шаблончик /template/frontend/agency/userlist.tpl

<div class="userlist">{foreach from=$users item=user}<div class="userlist-user"><div class="userlist-user-foto">{if $user.imgfile!=''}<img src="{$estate_folder}/img/data/user/{$user.imgfile}">{/if}</div><div class="userlist-user-info"><div class="userlist-user-info-fio">{$user.fio}</div><div class="userlist-user-info-phone">{$user.phone}</div><div class="userlist-user-info-email">{$user.email}</div><div class="userlist-user-info-link"><a href="{$estate_folder}/user{$user.user_id}.html">More info</a></div></div></div>{/foreach}</div>

Т.е. для конкретного случая нужно просто изменить метку в перехватчике с userlist на свою, в userlist() уточнить ограничения на выборку пользователей (что бы не выбирать технических пользователей или админов) и в шаблоне прописать свои красоты и способ формирования ссылки на куда-то с конкретного пользователя.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

а где же все же редактируется формируемый файл чтобы к примеру вставить данные пользователя телефоны банер ссылки и так далее?

так как сейчас пишется просто 
"все объявления от иван ивановича"
а хотелось бы к примеру кое что добавить и выводить типа
"все объявления от иван ивановича"  сайт такой то номер телефона такой то ссылка вконтак такая то
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 05.06.2016 в 15:38, doma сказал:

а где же все же редактируется формируемый файл чтобы к примеру вставить данные пользователя телефоны банер ссылки и так далее?

Он формируется в шаблоне userlist.tpl

В 02.03.2015 в 11:54, abushyk сказал:

/template/frontend/agency/userlist.tpl

Получится вроде этого - агентства недвижимости, застройщики. К каждому пользователю добавлена куча параметров, включая skype, viber и координаты для отображения на карте (застройщики все так оформлены).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас