Новости Joomla

joomLab Gallery - плагин галереи изображений для Joomla

👩‍💻 joomLab Gallery - плагин галереи изображений для Joomla.Плагин joomLab Gallery позволит Вам добавлять в любой материал неограниченное количество галерей, а главное удобно управлять файлами и эффектами в каждой галерее.Плагин использует популярны скрипты Swiper.js и FancyBox. Первый для крутой организации и эффектов галерей, а второй для красивого и функционального показа оригинальных изображений на Вашем сайте.На данный момент плагин имеет 10 макетов вывода - это 10 различных эффектов галерей и Вы можете совмещать все 10 в 1 материале.Плагин позволяет гибко настраивать индивидуально каждую галерею в материале. Вы можете выбрать макет, эффекты и даже можете управлять функциями всплывающего окна изображения.Недостатки.Такой вид реализации не предусматривает выбор изображения на сервере. Т.е. Вы не можете выбрать уже добавленное фото, только загружать заново. Плагин не предоставляет возможности доступа к медиа-менеджеру.Плагин бесплатный. Разработчик - участник нашего сообщества Александр Новиков (@pro-portal).Страница расширения@joomlafeed#joomla #расширения

Готовлю большой выпуск, включающий интервью с участниками Joomla Ну что, интересная инициатива от...

Готовлю большой выпуск, включающий интервью с участниками Joomla Ну что, интересная инициатива от...

Готовлю большой выпуск, включающий интервью с участниками Joomla 🖨Ну что, интересная инициатива от @webtolkru в виде интервью с разными участниками весьма меня увлекла. Я, вооружившись данным примером, решил подготовить выпуск для NorrNext (@norrnext) и экстраполировал идею на международный масштаб. Теперь готовлю эксклюзивный выпуск с участниками Joomla сообщества со всего мира, которые, в той или иной мере, внесли свой вклад в развитие и популяризацию системы. Будут беседы с людьми из разных стран и фото с юбилейной символикой 📸Работа в процессе 👆 📝О результатах оповещу отдельно.

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

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
Просмотров: 5247
Последний ответ 12.04.2020, 07:25:59
от Pavel
Хочу уточнить, есть в AdsManager возможность загрузки объявлений с парсера?

Автор DomBeri

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

Автор trel

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

Автор Sabotage

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

Автор klekovkinandrey

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