Ранжирование организаций (на instantmaps) в списке

#1 3 мая 2012 в 11:05
Создавая свой горпортал, планировалось изначально зарабатывать на медийке, но вовремя наткнулся оч хороший портал marimedia.ru. В его каталоге организации размещаются по разным тарифам и соответственно в списке в определенной категории организации ранжируются и отображаются в зависимости от тарифа. Дороже тариф больше плюшечек😊При содействии R2 получилось примерно так волжск-онлайн.рф/maps/stroitelstvo-i-remont/dveri-okna
Ранжирование регулируется прикрученной характеристикой. Конечно сделано топорно, но без этой фишки на платную основу организации не поставиш в каталог.

собственно сам код шаблона com_inmaps_items.tpl
для того чтоб заработало создаем характеристику с тремя значениями vip standart base и в коде меняем char_id на id вашей новой хар-ки.

Надеюсь кому то будет полезно😊
{if $items}


{if $cfg.ratings}
{add_js file='components/maps/js/rating/jquery.MetaData.js'}
{add_js file='components/maps/js/rating/jquery.rating.js'}
{add_css file='components/maps/js/rating/jquery.rating.css'}
{/if}

<div class="maps_items_list" style="clear:both">


{foreach key=num item=item from=$items}

{assign var="item_id" value=$item.id}
{php}
$this->_tpl_vars['value'] = dbGetField("cms_map_chars_val",
"char_id=39 AND item_id={$this->_tpl_vars['item_id']}", 'val');
{/php}


{if $value == "|vip|"}
<table cellpadding="0" cellspacing="0" border="0" class="maps_item">
<tr>
{if $cfg.show_thumb}
<td valign="top" class="img_td">

<a href="/maps/{$item.seolink}.html">
<img src="/images/photos/small/{$item.filename}" border="0" class="img_list" />
</a>
{if $cfg.ratings}
<div class="rating" style="margin-top:10px">
<form action="/maps/rate" method="POST">
<input type="hidden" name="item_id" value="{$item.id}" />
{section name=rate start=1 loop=6 step=1}
<input name="rate" type="radio" class="star" value="{$smarty.section.rate.index}" {if $item.rating>=$smarty.section.rate.index}checked="checked"{/if} {if !$is_user || $item.user_voted}disabled="disabled"{/if} />
{/section}
</form>
{if $item.rating}
<small>{$item.rating}</small>
{/if}
</div>
{/if}
</td>
{/if}
<td valign="top" class="details_td">
<div class="details">
<div class="titlev">
<a href="/maps/{$item.seolink}.html">{$item.title}</a>

{if $cfg.show_vendors && $item.vendor}/ <a href="/maps/vendors/{$item.vendor_id}" class="vendor">{$item.vendor}</a>{/if}
{if $cfg.show_compare}
<span class="compare">
{if !$item.is_in_compare}
<a class="add" href="/maps/compare/{$item.id}">{$LANG.MAPS_COMPARE_ADD}</a>
{else}
{$LANG.MAPS_COMPARE_ITEM_IN} <a href="/maps/compare.html">{$LANG.MAPS_COMPARE_IN}</a>
{/if}
</span>
{/if}
{if $item.can_edit}
<span class="edit">
<a href="/maps/edit{$item.category_id}-{$item.id}.html">{$LANG.MAPS_EDIT_OBJECT}</a>
</span>
{/if}
</div>

<div class="address" id="addr_main{$item.id}">
<span><b>Адрес:</b>
{if $cfg.mode=='world'}
{$item.address}
{else}
{$item.map_address}
{/if}
</span>
{if sizeof($item.addresses) > 1}
<a href="javascript:" class="ajaxlink" onclick="{literal}${/literal}('#addr_main{$item.id}').hide();{literal}${/literal}('#addr_all{$item.id}').show();">все адреса</a>
{/if}
</div>

<div class="addresses" style="display:none" id="addr_all{$item.id}">
{foreach key=m item=address from=$item.addresses}
<div class="address">
<span>
{if $cfg.mode=='world'}
{$address.full}
{else}
{$address.short}
{/if}
</span>

</div>
{/foreach}

</div>

{if $item.contacts.phone || $item.contacts.url || $item.contacts.email }
<ul class="list_cont">
{if $item.contacts.phone}<li><strong>{$LANG.MAPS_CONTACTS_PHONE}:</strong> {$item.contacts.phone}</span></li>{/if}
{if $item.contacts.url}<li><strong>{$LANG.MAPS_CONTACTS_URL}:</strong> <a href="{$item.contacts.url}" target="_blank">{$item.contacts.url_short}</a></li>{/if}
{if $item.contacts.email}<li><strong>{$LANG.MAPS_CONTACTS_EMAIL}:</strong> <a href="mailto:{$item.contacts.email}">{$item.contacts.email}</a></li>{/if}
</ul>

{/if}

{if $cfg.show_desc}
<p>{$item.shortdesc|truncate:300|strip_tags:false}</p>
{/if}



</td>

</tr>
</table>
{/if}

{/foreach}


{foreach key=num item=item from=$items}

{assign var="item_id" value=$item.id}
{php}
$this->_tpl_vars['value'] = dbGetField("cms_map_chars_val",
"char_id=39 AND item_id={$this->_tpl_vars['item_id']}", 'val');
{/php}

{if $value == "|standart|"}
<table cellpadding="0" cellspacing="0" border="0" class="maps_item" >


<th valign="top" colspan="2" align="left">

<div class="titles"><img width="24" height="24" src="/images/favorites.png" alt="" style="float:left;" />
<a href="/maps/{$item.seolink}.html">{$item.title}</a>
{if $cfg.show_vendors && $item.vendor}/ <a href="/maps/vendors/{$item.vendor_id}" class="vendor">{$item.vendor}</a>{/if}
{if $cfg.show_compare}
<span class="compare">
{if !$item.is_in_compare}
<a class="add" href="/maps/compare/{$item.id}">{$LANG.MAPS_COMPARE_ADD}</a>
{else}
{$LANG.MAPS_COMPARE_ITEM_IN} <a href="/maps/compare.html">{$LANG.MAPS_COMPARE_IN}</a>
{/if}
</span>
{/if}
{if $item.can_edit}
<span class="edit">
<a href="/maps/edit{$item.category_id}-{$item.id}.html">{$LANG.MAPS_EDIT_OBJECT}</a>
</span>
{/if}
</div>
</th>


<tr>
<td width="300px">
<div class="details">
<div class="address" id="addr_main{$item.id}">
<span><b>адрес:</b>
{if $cfg.mode=='world'}
{$item.address}
{else}
{$item.map_address}
{/if}
</span>
{if sizeof($item.addresses) > 1}
<a href="javascript:" class="ajaxlink" onclick="{literal}${/literal}('#addr_main{$item.id}').hide();{literal}${/literal}('#addr_all{$item.id}').show();">все адреса</a>
{/if}
</div>

<div class="addresses" style="display:none" id="addr_all{$item.id}">
{foreach key=m item=address from=$item.addresses}
<div class="address">
<span>
{if $cfg.mode=='world'}
{$address.full}
{else}
{$address.short}
{/if}
</span>

</div>
{/foreach}
</div>
{if $item.contacts.phone || $item.contacts.url || $item.contacts.email }
<ul class="list_cont">
{if $item.contacts.phone}<li><strong>{$LANG.MAPS_CONTACTS_PHONE}:</strong> {$item.contacts.phone}</span></li>{/if}

</ul>

{/if}</div></td>
<td>{if $cfg.show_desc}
<div class="desc">{$item.shortdesc|truncate:200|strip_tags:false}</div>
{/if}</td>


</tr>
</table>
{/if}

{/foreach}

{foreach key=num item=item from=$items}
{assign var="item_id" value=$item.id}
{php}
$this->_tpl_vars['value'] = dbGetField("cms_map_chars_val",
"char_id=39 AND item_id={$this->_tpl_vars['item_id']}", 'val');
{/php}

{if $value == "|base|" || !$value}
<table cellpadding="0" cellspacing="0" border="0" class="maps_item">
<tr>


<td valign="top" class="details_td">
<div class="details">
<div class="title">
<a href="/maps/{$item.seolink}.html">{$item.title}</a>


{if $cfg.show_vendors && $item.vendor}/ <a href="/maps/vendors/{$item.vendor_id}" class="vendor">{$item.vendor}</a>{/if}
{if $cfg.show_compare}
<span class="compare">
{if !$item.is_in_compare}
<a class="add" href="/maps/compare/{$item.id}">{$LANG.MAPS_COMPARE_ADD}</a>
{else}
{$LANG.MAPS_COMPARE_ITEM_IN} <a href="/maps/compare.html">{$LANG.MAPS_COMPARE_IN}</a>
{/if}
</span>
{/if}

</div>

<div class="address" id="addr_main{$item.id}">
<span><b>адрес:</b>
{if $cfg.mode=='world'}
{$item.address}
{else}
{$item.map_address}
{/if}
</span>
{if sizeof($item.addresses) > 1}
<a href="javascript:" class="ajaxlink" onclick="{literal}${/literal}('#addr_main{$item.id}').hide();{literal}${/literal}('#addr_all{$item.id}').show();">все адреса</a>
{/if}
</div>

<div class="addresses" style="display:none" id="addr_all{$item.id}">
{foreach key=m item=address from=$item.addresses}
<div class="address">
<span>
{if $cfg.mode=='world'}
{$address.full}
{else}
{$address.short}
{/if}
</span>

</div>
{/foreach}
</div>




</div>
</td>
</tr>
</table>
{/if}

{/foreach}

</div>
{if $pages>1}
<div class="maps_pages">
{$pagebar}
</div>
{/if}

{if $cfg.ratings}
<script type="text/javascript">
{literal}
$('.star').rating({
callback: function(value, link){
this.form.submit();
}
});
{/literal}
</script>
{/if}

{/if}
#2 3 мая 2012 в 11:18
нужная вещь!
+
#3 3 мая 2012 в 11:54
а вип и стандарт закрепляться сверху??
Сегодня в 00:54
#4 3 мая 2012 в 11:56
Да
#5 3 мая 2012 в 13:43
полезный хак, но не пойму где идет сортировка. Например чтоб новые вип и стандарт объекты добавлялись сверху??
Сейчас в категории вип — добавляется как хочет, а в стандарт — новые идут снизу, для меня логично — последние (новые) чтоб были в начале списка, а за ним уже старые записи. Как поправить не знаете??

И еще вопрос — кт отвечает за закрепление поста и поднятия вверх? Не вижу в коде различие между стандартом (который поднимает и закрепляет) и базовый (который по умолчанию, и ничего не делает), просто можно добавить и третий вариант, например базовый про — не перемещает, не закрепляет, а просто в каталоге делает выделении, например с другим фоном предприятие. И вот где в коде этот код что отвечает за это??
#6 3 мая 2012 в 13:53
Полезная штука! Спасибо!!!
#7 3 мая 2012 в 19:16
Вот у Вас есть две фишки:

1. Поиск на карте
2. При наведении на категорию каталога всплывают подкатегории

Это Вы сами реализовывали или я опять обновление проспал?
#8 3 мая 2012 в 21:24

2. При наведении на категорию каталога всплывают подкатегории

Alexneva
легко можно сделать своими очумелыми ручками — привязать чтото типа
  1. <script type="text/javascript">
  2. function toggleDiv(divid){
  3. var div = document.getElementById(divid);
  4. div.style.display = div.style.display == 'block' ? 'none' : 'block';
  5. }
  6. </script>
  7.  
к ссылкам категорий на onmouseover...
туплю:) реально даже проще в css сделать на hover dysplay:block
#9 3 мая 2012 в 23:14

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

googlebot

Это то да, я просто думал что обновление очередное мимо меня пролетело ))) Спасибо за совет, кстати )))
#10 4 мая 2012 в 10:34
а поиск как прикручен?) и да, в хаке было бы полезно сделать, чтобы в админке можно было выставлять какой по счету показывать организацию в вип списке
#11 4 мая 2012 в 11:20
поиск не прикручивал он в народной карте яндекса поумолчанию стоит. А вот выставление организаций на определенное место эт мне уже не посилам реализовать потому что я далек от прогаммирования. Если эта фишка будет реализованна в следующем обновлении буду тока рад.
#12 10 мая 2012 в 04:30
Кроме волжск-онлайн.рф кто в каком виде ещё реализовал?
#13 10 мая 2012 в 17:54
Интересный хак.
Его бы расширить до "ТОП-3", чтобы можно было 3 верхних места выделять и в них еще и ранжировать )
Т.е. у нас 3 верхих позиции с оплатой, каждая со своей стоимостью и возможностью двигать оплативших.
#14 16 мая 2012 в 22:34
Уважаемый ТС, не могли бы полностью описать механизм установки хака? Все действия, которые Вы совершили? А то у меня ничего не получилось, а очень хочется, чтоб получилось! Заранее спасибо.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.