Новости Joomla

Quantum Manager нужен сообществу, а автору нужна ваша поддержка!

Quantum Manager нужен сообществу, а автору нужна ваша поддержка!Файловый менеджер Quantum — одно...

Файловый менеджер Quantum — одно из самых популярных решений для Joomla, созданное разработчиком из сообщества Joomla, Дмитрием Цымбалом (@tsymbalmitia). Он делает Quantum удобным, безопасным и современным, обновляет его, исправляет уязвимости и отвечает пользователям — всё это в свободное от основной работы время.

Теперь настал момент для следующего шага: развитие проекта требует больше времени и ресурсов.

0 Пользователей и 1 Гость просматривают эту тему.
  • 8 Ответов
  • 3412 Просмотров
*

bvp77

  • Новичок
  • 4
  • 0 / 0
Подскажите, пожалуйста, как реализовать "добавление в блокнот" объявлений? К примеру, как на этом сайте http://topmarket.biz/index.php?option=com_adsmanager&page=show_category&catid=277&text_search=&order=0&expand=0&Itemid=46.
Т.е. посетитель (как зарегистрированный, так и гость) мог добавить в свой блокнот некое количество объявлений и потом просмотреть их.
Заранее благодарен.
*

bvp77

  • Новичок
  • 4
  • 0 / 0
Неужели никто не может подсказать, в какую сторону хоть смотреть? Нужен хоть какой то блокнот. ХЕЛП ПЛИЗЗЗ!
*

grinat

  • Захожу иногда
  • 356
  • 34 / 2
Сделать кнопку, которая посредством js в будет в json или в любом другом формате, сохранять в куки id объявлений. Затем сделать страницу, которая будет забирать куки и получать из них id объявлений, которые нужно отобразить. В общем все довольно просто, но мне кажется лучше оставить эту функцию только для зарегистрированных, ведь тогда id можно хранить в базе, таким образом я с могу компьютера найти нужны мне объявления и пометить их, а затем с кпк обратиться к ним, дабы узнать какие-то подробности, более точный адрес и проч.
*

GlooM

  • Давно я тут
  • 558
  • 91 / 0
  • AdsManager
Сделать кнопку, которая посредством js в будет в json или в любом другом формате, сохранять в куки id объявлений. Затем сделать страницу, которая будет забирать куки и получать из них id объявлений, которые нужно отобразить. В общем все довольно просто, но мне кажется лучше оставить эту функцию только для зарегистрированных, ведь тогда id можно хранить в базе, таким образом я с могу компьютера найти нужны мне объявления и пометить их, а затем с кпк обратиться к ним, дабы узнать какие-то подробности, более точный адрес и проч.
Grinat, реализуй на public и выложи решение :)

// кстати, тоже сейчас интересуюсь этой проблемой. Реализую на досуге.
« Последнее редактирование: 17.08.2010, 13:13:44 от GlooM »
*

grinat

  • Захожу иногда
  • 356
  • 34 / 2
Цитировать
Grinat, реализуй на public и выложи решение
Много кода, боюсь пользователи могут испугаться), но попробую

Добавление объявлений в блокнот
Все ниженаписанное тестировалось под AdsManager 2.5 RC2 joostina 1.2, но скорее всего подходит для любого adsmanager и точно подходит для любой версии Joomla. Поддерживаться должны все браузеры, но тестировалось и точно работает в chrome5, где-то еще проверять было лень, в общем just for lulz Код дан с комментариями, потому делайте с ним что хотите и как хотите, главное мне никаких вопросов не задавайте.

Также во вложение даны рабочие модифицированные файлы и инструкция что ниже.

Инструкция:
0.   Открываем adsmanager.html.php функция(show_html_ad) и находим:
Код: html4strict
						adsmanager_html::showFieldValue($row,$field,$field_values,$conf->email_display,$option,$itemid,1,$plugins); /* 1 = Ad Mode */
}
} ?>
</h2>
после этого вставляем:
Код
						<?php
global $script_yzhe_ispolsuetsya;
if($script_yzhe_ispolsuetsya==0){  // Если скрипт не используется
    $script_yzhe_ispolsuetsya = 1; // Сообщаем что скрипт уже используется
?>
    <script type="text/javascript">
window.onload = reload_link; // После загрузки страницы будет вызвана функция
function reload_link(){ // рисуем ссылки на основе данных из куков
    var dc   = document.cookie; // получаем куки
var adid = 0;
var ids_ = '';
var ids  = new Array();
    if(dc.indexOf('notepad_ids')>0){ // если есть нужная нам кука
                                ids_ = getCookie('notepad_ids'); // получаем значения
if(ids_!=null){
    ids = ids_.split(','); // формируем массив из значений
}else{
    ids = new Array();
}
}
var divs = document.getElementsByTagName('div'); // получаем все дивы
for(var i=0;i<divs.length;i++){ // перебираем
    if(divs[i].getAttribute('class')=='notepadid_'){ // если это нужный нам div
    adid = divs[i].getAttribute('id').split('_')[1];// узнаем id объявления, к которому он относится
ids_ = ',' + ids_ + ','; // преобразуем дабы избежать ошибок
if(ids_.indexOf(','+adid+',')>0){ // если этот id уже есть в блокноте
    divs[i].innerHTML = '<a href="javascript:upd_notepad('+adid+',1);">Delete from notepad</a>'; // рисуем код для удаления
}else{
    divs[i].innerHTML = '<a href="javascript:upd_notepad('+adid+',0);">Add to notepad</a>'; // рисуем код для добавления
}
}
}
}
</script>
<script type="text/javascript">
function upd_notepad(adid,parametr){ // Добавляем/удаляем id из кук
    var dc   = document.cookie; // получаем куки
var ids_ = '';
var ids  = new Array();
var f    = 0;
    if(dc.indexOf('notepad_ids')>0){ // если есть нужная нам кука
                                ids_ = getCookie('notepad_ids'); // получаем значения
if(ids_!=null){
    ids = ids_.split(','); // формируем массив из значений
}else{
    ids = new Array();
}
}
for(var i=0;i<ids.length;i++){
    if(ids[i]==adid){
    if(parametr==1){ //Удалить
        ids.splice(i,1);
}
f = 1;
}
}
ids_ = ids.join(',');
if(f==0 && parametr==0){ // Добавить
    ids_ = ids_ + ',' + adid;
}
var days = 365; // сколько дней хранить куку
var expires = new Date(); // получаем текущую дату
                            expires.setTime(expires.getTime() + (1000 * 86400 * days)); // вычисляем срок хранения cookie
document.cookie = 'notepad_ids=' + escape(ids_) + '; expires=' + expires + '; path=/';
reload_link(); // Обновим данные
}
</script>
<script type="text/javascript">
// стандартные функции для работы с куками
function getCookie(name) { // Получение значения
var cookie = " " + document.cookie;
var search = " " + javascript:void(0);name + "=";
var setStr = null;
var offset = 0;
var end = 0;
if (cookie.length > 0) {
offset = cookie.indexOf(search);
if (offset != -1) {
offset += search.length;
end = cookie.indexOf(";", offset)
if (end == -1) {
end = cookie.length;
}
setStr = unescape(cookie.substring(offset, end));
}
}
return(setStr);
}
</script>
<?php } ?>
<div style="float:right;" id="notepadid_<?php echo $row->id; ?>" class="notepadid_">Loading...</div><br />

1. Открываем adsmanager.html.php функция(show_list) и находим:
            
Код
<tr class="<?php echo $classad;?>"> 
<td>
после этого вставляем:
                
Код
  <?php
global $script_yzhe_ispolsuetsya;
if($script_yzhe_ispolsuetsya==0){  // Если скрипт не используется
    $script_yzhe_ispolsuetsya = 1; // Сообщаем что скрипт уже используется
?>
    <script type="text/javascript">
window.onload = reload_link; // После загрузки страницы будет вызвана функция
function reload_link(){ // рисуем ссылки на основе данных из куков
    var dc   = document.cookie; // получаем куки
var adid = 0;
var ids_ = '';
var ids  = new Array();
    if(dc.indexOf('notepad_ids')>0){ // если есть нужная нам кука
                                ids_ = getCookie('notepad_ids'); // получаем значения
if(ids_!=null){
    ids = ids_.split(','); // формируем массив из значений
}else{
    ids = new Array();
}
}
var divs = document.getElementsByTagName('div'); // получаем все дивы
for(var i=0;i<divs.length;i++){ // перебираем
    if(divs[i].getAttribute('class')=='notepadid_'){ // если это нужный нам div
    adid = divs[i].getAttribute('id').split('_')[1];// узнаем id объявления, к которому он относится
ids_ = ',' + ids_ + ','; // преобразуем дабы избежать ошибок
if(ids_.indexOf(','+adid+',')>0){ // если этот id уже есть в блокноте
    divs[i].innerHTML = '<a href="javascript:upd_notepad('+adid+',1);">Delete from notepad</a>'; // рисуем код для удаления
}else{
    divs[i].innerHTML = '<a href="javascript:upd_notepad('+adid+',0);">Add to notepad</a>'; // рисуем код для добавления
}
}
}
}
</script>
<script type="text/javascript">
function upd_notepad(adid,parametr){ // Добавляем/удаляем id из кук
    var dc   = document.cookie; // получаем куки
var ids_ = '';
var ids  = new Array();
var f    = 0;
    if(dc.indexOf('notepad_ids')>0){ // если есть нужная нам кука
                                ids_ = getCookie('notepad_ids'); // получаем значения
if(ids_!=null){
    ids = ids_.split(','); // формируем массив из значений
}else{
    ids = new Array();
}
}
for(var i=0;i<ids.length;i++){
    if(ids[i]==adid){
    if(parametr==1){ //Удалить
        ids.splice(i,1);
}
f = 1;
}
}
ids_ = ids.join(',');
if(f==0 && parametr==0){ // Добавить
    ids_ = ids_ + ',' + adid;
}
var days = 365; // сколько дней хранить куку
var expires = new Date(); // получаем текущую дату
                            expires.setTime(expires.getTime() + (1000 * 86400 * days)); // вычисляем срок хранения cookie
document.cookie = 'notepad_ids=' + escape(ids_) + '; expires=' + expires + '; path=/';
reload_link(); // Обновим данные
}
</script>
<script type="text/javascript">
// стандартные функции для работы с куками
function getCookie(name) { // Получение значения
var cookie = " " + document.cookie;
var search = " " + name + "=";
var setStr = null;
var offset = 0;
var end = 0;
if (cookie.length > 0) {
offset = cookie.indexOf(search);
if (offset != -1) {
offset += search.length;
end = cookie.indexOf(";", offset)
if (end == -1) {
end = cookie.length;
}
setStr = unescape(cookie.substring(offset, end));
}
}
return(setStr);
}
</script>
<?php } ?>
<div style="float:right;" id="notepadid_<?php echo $row->id; ?>" class="notepadid_">Loading...</div>
2. Открываем adsmanager.html.php функция(showGeneralLink) и находим:
Код
echo '<a href="'.$link_show_rules.'">'.ADSMANAGER_MENU_RULES.'</a>';
и добавляем после:
Код
echo ' | <a href="'.sefRelToAbs("index.php?option=$option&amp;page=notepad&amp;Itemid=$itemid").'">Notepad</a>';
3. Открываем adsmanager.php и находим:
Код
  case 'show_profile': {
и перед этим вставляем:
Код
  case 'notepad': {
    notepad('notepad',0,$option,$expand,$text_search,$order,$limitstart,$plugins);
    break;
  }
4. Открываем adsmanager.php и вставляем в конец:
Код
function notepad($page,$catid,$option,$expand,$text_search,$order,$limitstart,$plugins){

    $text = 'Notepad'; // Название
$description = ''; // описание
$url = "index.php?option=$option&page=$page&text_search=$text_search";
$ids_ = mosGetParam( $_COOKIE, 'notepad_ids');
$search = " a.id IN (0 $ids_)";
$update_possible =0;

global $my,$database,$mosConfig_absolute_path;

if ($text_search <> "") {
$search .= " AND (a.ad_headline LIKE '%$text_search%' OR a.ad_text LIKE '%$text_search%') AND a.published = 1";
}
else
$search .= " AND a.published = 1";

$url .= $url_param;

$query = "SELECT DISTINCT a.id FROM #__adsmanager_ads as a ".
"LEFT JOIN #__adsmanager_adcat as adcat ON a.id = adcat.adid WHERE $search";
$database->setQuery($query);
$total = count($database->loadObjectList());

// get configuration
$database->setQuery( "SELECT * FROM #__adsmanager_config");
$database->loadObject($conf);
if ($database -> getErrorNum()) {
echo $database -> stderr();
return false;
}
$limit = $conf->ads_per_page;

if ($conf->display_expand == 0)
$expand = 0;
else if ($conf->display_expand == 2)
$expand = 1;
else if ($expand == -1)
$expand = 0;

$database->setQuery( "SELECT f.* FROM #__adsmanager_fields AS f WHERE f.published = 1" );

$fields = $database->loadObjectList();

if ($order == -1)
{
$order_text = "a.views DESC, a.date_created DESC ,a.id DESC";
}
else if ($order != 0)
{
$database->setQuery( "SELECT f.name,f.sort_direction,f.type FROM #__adsmanager_fields AS f WHERE f.fieldid=$order AND f.published = 1" );
$database->loadObject($sort);
if (($sort->type == "number")||($sort->type == "price"))
$order_text = "a.".$sort->name." * 1 ".$sort->sort_direction;
else
$order_text = "a.".$sort->name." ".$sort->sort_direction;
}
else
{
$order_text = "a.date_created DESC ,a.id DESC";
}

$database->setQuery( "SELECT f.title,f.fieldid,f.catsid FROM #__adsmanager_fields AS f WHERE f.sort = 1 AND f.published = 1" );

$searchs = $database->loadObjectList();

require_once( $mosConfig_absolute_path . '/includes/pageNavigation.php' );
$pageNav = new mosPageNav( $total, $limitstart,$limit );

if($conf->display_fullname == 1)
{
$name = "u.name";
}
else
{
$name = "u.username";
}

$query = "SELECT a.*, p.name as parent, p.id as parentid, c.name as cat, c.id as catid, $name as user ".
"FROM #__adsmanager_ads as a ".
"LEFT JOIN #__adsmanager_adcat as adcat ON adcat.adid = a.id ".
"LEFT JOIN #__users as u ON a.userid = u.id ".
"LEFT JOIN #__adsmanager_categories as c ON adcat.catid = c.id ".
"LEFT JOIN #__adsmanager_categories as p ON c.parent = p.id ".
"WHERE $search and c.published = 1 ".
"GROUP BY a.id ORDER BY $order_text";

if (function_exists("updateQuery")) {
updateQuery($query);
}

$database->setQuery($query,$limitstart,$limit);

$ads = $database->loadObjectList();

//*****************Mod by TomekOmel *******************

$database->setQuery("SELECT c.* ".
"FROM #__adsmanager_columns as c ".
"ORDER BY c.ordering ");


$columns = $database->loadObjectList();

if (isset($columns))
{
$licz=0;
$col = array();

foreach ($columns as $c ) {

if ($c->catsid == ",-1,") //// TUTAJ POPRAWIC
array_push( $col, $c );
else
{
$find = ",".$catid.",";
if (strstr($c->catsid, $find))
array_push( $col, $c );
}
}
}

unset($columns);
$columns = $col;

//***************** END of TomekOmel **********************/

$database->setQuery( "SELECT c.* FROM #__adsmanager_fields AS c ".
"WHERE c.columnid != -1 AND c.published = 1 ORDER by c.columnorder,c.fieldid" );

$fields = $database->loadObjectList();

// establish the hierarchy of the menu
$fColumn = array();
// first pass - collect children
if (isset($fields))
{
foreach ($fields as $f ) {
$pt = $f->columnid;
$list = @$fColumn[$pt] ? $fColumn[$pt] : array();
array_push( $list, $f );
$fColumn[$pt] = $list;
}
}

$database->setQuery( "SELECT * FROM #__adsmanager_positions WHERE 1 " );

$positions = $database->loadObjectList();
if ($database->getErrorNum()) {
echo $database->stderr();
return;
}

$database->setQuery( "SELECT f.* FROM #__adsmanager_fields AS f ".
"WHERE f.pos != -1 AND f.published = 1 ORDER by f.posorder" );

$fields = $database->loadObjectList();
if ($database->getErrorNum()) {
echo $database->stderr();
return;
}

// establish the hierarchy of the menu
$fDisplay = array();
// first pass - collect children
if (isset($fields))
{
foreach ($fields as $f ) {
$pt = $f->pos;
$list = @$fDisplay[$pt] ? $fDisplay[$pt] : array();
array_push( $list, $f );
$fDisplay[$pt] = $list;
}
}

//get value fields
$database->setQuery( "SELECT * FROM #__adsmanager_field_values ORDER by ordering ");
$fieldvalues = $database->loadObjectList();
if ($database -> getErrorNum()) {
echo $database -> stderr();
return false;
}

$field_values = array();
// first pass - collect children
if (isset($fieldvalues))
{
foreach ($fieldvalues as $v ) {
$pt = $v->fieldid;
$list = @$field_values[$pt] ? $field_values[$pt] : array();
array_push( $list, $v );
$field_values[$pt] = $list;
}
}

foreach($fields as $field)
{
if ($field->cbfieldvalues != "-1")
{
/*get CB value fields */
$database->setQuery( "SELECT *, fieldtitle as fieldvalue FROM #__comprofiler_field_values WHERE fieldid = $field->cbfieldvalues ORDER by ordering ");
$cbfieldvalues = $database->loadObjectList();
if ($database -> getErrorNum()) {
echo $database -> stderr();
return false;
}
$field_values[$field->fieldid] = $cbfieldvalues;
}
}

if (($conf->show_contact == 1)&&($my->id == "0"))
$show_contact = 0;
else
$show_contact = 1;

$itemid = intval( mosGetParam( $_GET, 'Itemid', 0 ));

$nav_link = $url."&expand=".$expand."&amp;Itemid=".$itemid;

adsmanager_html::show_list($catid,$description,$text,$url,$page,$ads,$pageNav,$nav_link,
   $show_contact,$expand,$order,$text_search,
   $itemid,$option,$my->id,$update_possible,
   $searchs,
   $columns,$fColumn,$positions,$fDisplay,$field_values,
   $conf,
   $fields_searchable,$plugins);
}

[вложение удалено Администратором]
*

GlooM

  • Давно я тут
  • 558
  • 91 / 0
  • AdsManager
Отличное и изящное решение.
Сам начал уже делать, но времени на это пока что нет, занимаюсь сейчас созданием модуля заказа из каталога (типа корзины)
*

bvp77

  • Новичок
  • 4
  • 0 / 0
Огромное СПАСИБО за проделанную работу!

Правда у меня не выводятся в блокноте сообщения (т.е. если в блокнот ничего не добавлено - то пишет "Нет объявлений", а вот если добавлять - то есть только шапка, а объявлений нет). но уже есть где пробовать разбираться ). В написании совсем нуб новичок, а на написанном коде надеюсь разберусь ).
Да, так на заметку, на IE7 скрипт не отрабатывается, т.е. остается Loading... , а скрипт не подгружается (но для меня это пока второстепенно).

В любом случае, еще раз ОГРОМНОЕ СПАСИБО! )   
*

bvp77

  • Новичок
  • 4
  • 0 / 0
Ну и как только смогу с меня +   ^-^
*

KDES

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
как АМ2.6 применить?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Заглушки с http://placehold.it вместо картинок в списке объявлений

Автор efimov777

Ответов: 6
Просмотров: 5428
Последний ответ 12.04.2020, 07:25:59
от Pavel
Хочу уточнить, есть в AdsManager возможность загрузки объявлений с парсера?

Автор DomBeri

Ответов: 3
Просмотров: 9423
Последний ответ 28.03.2019, 17:20:10
от DomBeri
Удалить карту объявлений Google

Автор trel

Ответов: 7
Просмотров: 3730
Последний ответ 25.03.2019, 09:02:25
от Technic
Вывод объявлений в случайном порядке

Автор Sabotage

Ответов: 3
Просмотров: 1634
Последний ответ 28.09.2018, 14:21:05
от Sabotage
Поля в списке объявлений

Автор klekovkinandrey

Ответов: 0
Просмотров: 1370
Последний ответ 17.01.2018, 10:18:34
от klekovkinandrey