Новости

07.04.2011

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

подробнее...

04.03.2011

Глобальное исправление косяков, перекачайте скрипты.
Положил предварительную версию Quick.Cart

подробнее...

В этом боксе №1 можно что-то написать
A A A

Добавьте меня в сервисы закладок

Надеюсь вы прочли статью Вставка №1 А теперь, как говорится повторение пройденного. Будем делать вывод кнопочек для добавления в сервисы закладок.

 В полной версии Quick.Cms есть такая  функция, но как там это реализовано мне не понравилось.

Мне хотелось, чтоб данные кнопки выводились, где мне надо, а не везде подряд, да и реализация кода мне не понравилась, слишком тяжеловесна.

 

И так приступим.

Выводить на этот раз мы будем следующий код:

 

<div id="bookmarks">$lang[Add_link_to]:<br><br>

<script src=" core /bookmarks.js" type="text/javascript"></script></div>

 

В административной части выглядеть это будет так:

 

 Чекбокс для ввода закладок - внешний вид

Велосипед придумывать мы не будем и назовем нашу переменную  $lang[Linkto_page] и поместим её в языковом файле lang/ru.php после надписи // plugins

 

$lang[Linkto_page] = " Закладки ";

$lang[Add_link_to]  = " Добавить в закладки ";

 

 

 

В папку templates/img/ поместим картинки кнопок отображающих сервисы закладок.

 

В папке core создадим файл bookmarks.js

 

 

core /bookmarks.js

 

function bm() {

var title=encodeURIComponent(document.title);var url=encodeURIComponent(location.href);

// dir image

var dir='templates/img/';

var services=[

['bobrdobr.ru/addext.html?url='+url+'&title='+title,'bobr.gif','BobrDobr'],

['memori.ru/link/?sm=1&u_data[url]='+url+'&u_data[name]='+title,'memori.gif','Memori'],

['www.mister-wong.ru/index.php?action=addurl&bm_url='+url+'&bm_description='+title,'wong.gif','Mister Wong'],

['moemesto.ru/post.php?url='+url+'&title='+title,'mm.gif','MoeMesto'],

['100zakladok.ru/save/?bmurl='+url+'&amp;bmtitle='+title,'100z.gif','100'],

['ruspace.ru/index.php?link=bookmark&action=bookmarkNew&bm=1&url='+url+'&title='+title,'ruspace.gif','RuSpace'],

['webmarks.ru/mark/?p=1&url='+url+'&ename='+title,'wm.gif','WebMarks'],

['myscoop.ru/add/?title='+title+'&URL='+url,'myscoop.gif','myscoop'],

['zakladok.net/link/?u='+url+'&t='+title,'sm_button.gif','zakladok.net'],

['links.i.ua/mark/?p=1&url='+url+'&ename='+title,'iua.gif','Закладки I.UA'],

['zakladki.yandex.ru/userarea/links/addfromfav.asp?bAddLink_x=1&lurl='+url+'&lname='+title,'yandex.gif','Yandex'],

['www.google.com/bookmarks/mark?op=add&bkmk='+url+'&title='+title,'google.gif','Google'],

['digg.com/submit?phase=2&url='+url+'&title='+title,'digg.gif','digg.com' ],

['del.icio.us/post?v=4&noui&jump=close&url='+url+'&title='+title,'del.gif','del.icio.us']];

var btn='<div>';

for (i=0;i<services.length;i++) {

btn+='<a href="http://'+services[i][0]+'" target=_blank><img src="'+dir+services[i][1]+'" alt="'+services[i][2]+'" style="border:0;padding:0;margin:0 4px 0 0;"></a>';}

btn+='</div>';

document.write(btn);}

bm();


В файл templates/ admin/ pages.tpl (таблица <table class="tab" id="tabOptions"> ), вставим функцию $sLinkToPage с названием   $lang[Linkto_page] перед <!-- tab options --> 

 

<tr>
<td>$lang[Linkto_page]</td>
<td>$sLinkToPage</td>
</tr>

 

Соответственно в файле actions_admin/p.php создадим переменную $sLinkToPage                  которая используя функцию throwYesNoBox будет выводить наш чекбокс, отображать и передавать его состояние (0 если не активен или 1) в другую переменную iLinktoPage  для сохранения.

 

actions_adminp.php

 

после

 

$aData['iPosition'] = 0;

 

Разместим

 

$aData['iLinktoPage'] = 0;

 

 

$sLinkToPage         = throwYesNoBox( 'iLinktoPage', $aData['iLinktoPage'] );

 

И поместим как всегда перед строкой

 

$sPhotoTypesSelect    = throwSelectFromArray( $aPhotoTypes, 1 );

 

 

 

Чекбокс наш уже отображается но данные из него никуда не передаются, что делать?

В файле db/ru_pages_ext.def.php  описан массив переменных которые будут хранится в файле  db/ru_pages_ext.php , вот туда мы и добавим наши данные о состоянии чекбокса – переменную iLinktoPage

 

dbru_pages_ext.def.php

 

$aFieldsNames   = Array( 'iPage' => 0, 'sDescriptionFull' => 1, 'sMetaDescription' => 2, 'sMetaKeywords' => 3, 'sTemplate' => 4, 'sTheme' => 5, 'sUrl' => 6, 'sBanner' => 7, 'iLinktoPage' => 8, );

 

function ru_pages_ext( $aExp ){

  return Array( 'iPage' => $aExp[0], 'sDescriptionFull' => $aExp[1], 'sMetaDescription' => $aExp[2], 'sMetaKeywords' => $aExp[3], 'sTemplate' => $aExp[4], 'sTheme' => $aExp[5], 'sUrl' => $aExp[6], 'sBanner' => $aExp[7], 'iLinktoPage' => $aExp[8] );

}

 

 

 

Теперь делаем вывод нашего кода в зависимости от записанного состояния  чекбокса.

Для этого в файле actions_client/p.php сделаем проверку данных записанных в переменную iLinktoPage   и если оно равно 1 то выводим переменную $sLinktoPage которая будет отображать наш код из файла темплейта templates/pages_default.tpl

 

actions_clientp.php

 

 

if( !empty( $aData['iLinktoPage'] ) && $aData['iLinktoPage'] == 1 ){
    $sLinktoPage = $oTpl->tbHtml( $aData['sTemplate'], 'LINKTO_PAGE' );
  }


И наконец в  файл templates/pages_default.tpl После <!-- END BANNER -->

 

Поместим наш код

 

<!-- BEGIN LINKTO_PAGE -->
<div id="bookmarks">$lang[Add_link_to]:<br><br>
<script src="core/bookmarks.js" type="text/javascript"></script></div>
<!-- END LINKTO_PAGE -->

 

Остаётся только проверить работоспособность.

 

Должен вас предупредить, если вы всё проделываете с чистой системой в которой нет данных, то проблем не возникнет, а иначе в файл db/ru_pages_ext.php будет записываться мусор.

Так что делать если данные уже занесены?

На самом деле всё просто, надо будет добавить в файл db/ru_pages_ext.php в конце каждой строки знак $ и всё заработает нормально.


Фаил и картинки кнопок качать здесь.