Хак. Поднятие анкеты в поиске за рейтинг. версия 1.9
Если у вас дефолтный шаблон то скачиваем с заменой эти файлы instantcms.ru/users/files/download2348.html инструкция в установке.
описывать не буду.прочитать можно тут поднятие анкет версия 1.7
1.Делим пользователей при регистрации на мужчин и женщин (добовляем вкладку выбор города)
открываем \templates\ваш шаблон\components\com_registration.tpl
после строк
вставляем
2. открываем открываем components\registration\frontend.php находим в тексте код
после него вставляем
далее ищем запрос $sql = "INSERT INTO cms_user_profiles
заменяем на
Ищем строчку
//create advanced user profile
if ($new_user_id){
…
}
ПОСЛЕ СТРОК:
$inDB->query($sql);
ВСТВАЛЯЕМ:
3. Добавляем в базу данных поле position:
Для этого делаем следующий SQL-запрос:
4. Прописываем всем оставшимся юзерам поле position
Для этого делаем следующий SQL-запрос:
5. Скачиваем этот архив.Распаковываем архив (папка conponents).
6. Дописываем в файл components/users/model.php
ниже в запросе
$sql = "SELECT
u.id as id,
u.login,
u.nickname,
u.email,
u.icq,
находим такую строчку
p.city, p.description, p.showmail, p.showbirth, p.showicq,
заменяем на эту
p.city, p.position, p.description, p.showmail, p.showbirth, p.showicq,
7.открываем components/users/frontend.php
в if ($do=='profile'){
выше строки $usr['banned'] вставляем
ищем строчки и закрываем //
//if($orderby != 'karma' && $orderby != 'rating') { $orderby = 'regdate'; }
//if ($orderto != 'asc' && $orderto != 'desc' ){ $orderto = 'desc'; }
ниже за ними прописываем
То, что внутри
if (!isset($querysql)){
if (!@$_SESSION['usr_online']){.....
...
}
меняем на
после строк
$link['latest'] = '/users/';
$link['positive'] = '/users/positive.html';
$link['rating'] = '/users/rating.html';
дописываем
ВСЁ НЕ ВЛЕЗЛО В БЛОГ Вторая часть тут
PS. Тестил на локалке… у меня всё работает… желаю и вам )))
кому помог принемаю блогадарности на
Z205596765246
R229037465412
Коплю на Биллинг пользователей
Если у вас дефолтный шаблон то скачиваем с заменой эти файлы instantcms.ru/users/files/download2348.html инструкция в установке.
описывать не буду.прочитать можно тут поднятие анкет версия 1.7
1.Делим пользователей при регистрации на мужчин и женщин (добовляем вкладку выбор города)
открываем \templates\ваш шаблон\components\com_registration.tpl
после строк
<tr> <td valign="top" class=""> <div><strong>{$LANG.BIRTH}:</strong></div> <div><small>{$LANG.NOPUBLISH_TEXT}</small></div> </td> <td valign="top" class="">{php}$inCore=cmsCore::getInstance(); echo $inCore->getDateForm('birthdate'){/php}</td> </tr>
<tr> <td valign="top"><strong>Пол:</strong></td> <td valign="top"> <select name="gender" id="gender" style="width:200px"> <option value="m" {if $gender=='m'} selected {/if}>Мужской</option> <option value="f" {if $gender=='f'} selected {/if}>Женский</option> </select> <span class="regstar">*</span> </td> </tr> <tr> <td valign="top" class="" width="269"> <div><strong>Ваш город:</strong></div> <small>Указав город вы сможете искать своих земляков</small> </td> <td valign="top" class=""> <input name="city" id="city" class="text-input" type="text" size="30" value="{$city}" /> <span class="regstar">*</span> </td> </tr>
if ($cfg['ask_icq']){ $icq = $inCore->request('icq', 'str', ''); } else { $icq = ''; }
$gender = $inCore->request('gender', 'str', ''); $city = $inCore->request('city', 'str', ''); if(!$city) {$msg .= 'Необходимо указать город ';}
заменяем на
$sql = "INSERT INTO cms_user_profiles (user_id, city, description, showmail, showbirth, showicq, karma, imageurl, allow_who, gender) VALUES (".$new_user_id.", '$city', '', '0', '0', '1', '0', '', 'all', '$gender')";
//create advanced user profile
if ($new_user_id){
…
}
ПОСЛЕ СТРОК:
$inDB->query($sql);
ВСТВАЛЯЕМ:
$sql1 = "SELECT MAX(position) as c FROM cms_user_profiles"; $result1111 = $inDB->query($sql1); $result1111 = $inDB->fetch_assoc($result1111); $pos23 = 1 + $result1111['c']; $sql1 = "UPDATE cms_user_profiles SET position = '$pos23' WHERE id = '$new_user_id'"; $inDB->query($sql1);
Для этого делаем следующий SQL-запрос:
ALTER TABLE `cms_user_profiles` ADD `position` INT( 11 ) UNSIGNED NOT NULL DEFAULT '0' AFTER `city`
Для этого делаем следующий SQL-запрос:
UPDATE `cms_user_profiles` SET POSITION = id
6. Дописываем в файл components/users/model.php
public function getPostion($pos, $gen){ $sql = "SELECT COUNT(p.id) as c FROM cms_user_profiles p WHERE position >= ".$pos." AND gender = '".$gen."'"; $result = $this->inDB->query($sql); $result = $this->inDB->fetch_assoc($result); return $result['c']; }
$sql = "SELECT
u.id as id,
u.login,
u.nickname,
u.email,
u.icq,
находим такую строчку
p.city, p.description, p.showmail, p.showbirth, p.showicq,
заменяем на эту
p.city, p.position, p.description, p.showmail, p.showbirth, p.showicq,
7.открываем components/users/frontend.php
в if ($do=='profile'){
выше строки $usr['banned'] вставляем
///////////////////////////////////////////// для анкет if ($usr['gender'] == 'm' || $usr['gender'] == 'f' ) { $usr['position'] = $model->getPostion($usr['position'], $usr['gender']); } else {$usr['position'] =0;} ///////////////////////// для анкет(конец);
//if($orderby != 'karma' && $orderby != 'rating') { $orderby = 'regdate'; }
//if ($orderto != 'asc' && $orderto != 'desc' ){ $orderto = 'desc'; }
ниже за ними прописываем
if($orderby == 'karma') { $orderby = 'karma'; $link['selected'] = 'positive'; } if($orderby == 'rating') { $orderby = 'rating'; $link['selected'] = 'rating';} if($orderby == 'regdate') { $orderby = 'regdate'; $link['selected'] = 'latest'; } if($orderby == 'man') { $orderby = 'position'; $order= 'AND p.gender = \'m\''; $link['selected'] = 'man';} if($orderby == 'woman') { $orderby = 'position';$order= 'AND p.gender = \'f\''; $link['selected'] = 'woman';}
if (!isset($querysql)){
if (!@$_SESSION['usr_online']){.....
...
}
меняем на
if (!@$_SESSION['usr_online']){ $sql = "SELECT u.id as id, u.login, u.nickname, u.logdate as flogdate, u.is_deleted as is_deleted, u.birthdate, u.rating, u.status as microstatus, p.city, p.karma as karma, p.imageurl, p.gender as gender FROM cms_users u LEFT JOIN cms_user_profiles p ON p.user_id = u.id WHERE u.is_locked = 0 AND u.is_deleted = 0 ".$order." ORDER BY ".$orderby." ".$orderto." LIMIT ".(($page-1)*$perpage).", $perpage"; } else { $sql = "SELECT o.user_id as id, u.login, u.nickname, u.logdate as flogdate, u.is_deleted as is_deleted, u.birthdate, u.rating, u.status as microstatus, p.city, p.karma as karma, p.imageurl, p.gender as gender FROM cms_online o LEFT JOIN cms_users u ON u.id = o.user_id LEFT JOIN cms_user_profiles p ON p.user_id = u.id WHERE ".$orderby." u.is_locked = 0 AND u.is_deleted = 0 ".$order." GROUP BY o.user_id ORDER BY ".$orderby." ".$orderto." LIMIT ".(($page-1)*$perpage).", $perpage"; } } else { $sql = $querysql; }
$link['latest'] = '/users/';
$link['positive'] = '/users/positive.html';
$link['rating'] = '/users/rating.html';
дописываем
$link['man'] = '/users/man.html'; $link['woman'] = '/users/woman.html';
PS. Тестил на локалке… у меня всё работает… желаю и вам )))
кому помог принемаю блогадарности на
Z205596765246
R229037465412
Коплю на Биллинг пользователей
Реклама #
WALTERZ 12 лет назад #
Однако, по-моему есть некоторые изменения лишние. Например, выбор пола и города при регистрации.
nikolas 12 лет назад #
WALTERZ 12 лет назад #
Я имею ввиду другое. То есть зачем регистрацию в это втягивать?
Пользователь во всяком случае в поиске поднимется, вне зависимости от пола. Так что даже не указав свой пол, можно "подняться".
nikolas 12 лет назад #
WALTERZ 12 лет назад #
В таблице имеется новая колонка position, вне зависимости от пола.
Запрос организовывается с условием выбранного пола и очередностью позиции.
То есть пол и позиция друг друга не касаются вовсе.
My-InstantCMS.Ru 12 лет назад #
nikolas 12 лет назад #
Агроном 12 лет назад #
WALTERZ 12 лет назад #
В запросе лишь убрать пол.
Агроном 12 лет назад #
WALTERZ 12 лет назад #
Буду направлять и разъяснять. Программист без стремления развития никому не нужен. Хотя это матчасть даже...тут основных знаний достаточно.
И так разберём запрос который предоставлен:
FROM - указывается таблица, из которой эти данные берутся (то есть cms_users).
LEFT JOIN - соединяет записи из 2ух таблиц.
WHERE - условие. Тут идёт условие на то, чтобы пользователь не был забанен или удалён + переменная $order то есть именно тут идёт условие на пол пользователя.
В нашем случае при переходе на список пользователей мужчин, переменная $order применяет вид AND p.gender = 'm' (И ещё момент упустил - AND - это "и" в условии...то есть пользователь не должен быть забанен и не заблокирован и наше условие).
То есть, WHERE у нас получает вид
Сортировка имеет структуру следующую:
ORDER BY поле убывание\возрастание(DESC\ASC).
В нашем случае, мы получаем следующий вид:
WALTERZ 12 лет назад #
Этот оператор отвечает за количество выводимых записей.
В нашем случае переменной задается количество на страницу.
Алхимик 12 лет назад #
AlexMonstra 11 лет назад #