Полезное

Доработка для доски joker board 3

Как я уже ранее обещал, пишу о том как доработать доску объявлений на CMS jbc 3.0 Будем: добавляем фото в листинг (список объявлений), делать вывод цены, вывод короткого описания, добавим список последних объявлений на главную.

Фото в листинг

Начнем со страницы свежих объявлений, и для этого открываем файл inc/last_add.inc.php

На 20 строчке, где <div class=”o3 alcenter”> удаляем все содержимое этого контейнера, и вставляем

<? echo($last[‘photo_name’])?” <a href=\”c”.$last[‘id_category’].”-“.””.$last[‘board_id’].”.html\”> <img src=\””.$u.”small/”.$last[‘photo_name’].”\” width=\”80\” height=\”80\” alt=\”photo\” /></a>”:” <a href=\”c”.$last[‘id_category’].”-“.””.$last[‘board_id’].”.html\”> <img src=\””.$im.”nofoto.gif\” width=\”80\” height=\”80\” alt=\”nophoto\” /></a>”;?>
Вставляем фото в листинг на страницах категорий, для этого открываем файл inc/last_ads.inc.php

На 21 строчке, контейнер <div class=”o4 alcenter”> в нем все удаляем, и вставляем тот же самый код

<? echo($last[‘photo_name’])?” <a href=\”c”.$last[‘id_category’].”-“.””.$last[‘board_id’].”.html\”> <img src=\””.$u.”small/”.$last[‘photo_name’].”\” width=\”80\” height=\”80\” alt=\”photo\” /></a>”:” <a href=\”c”.$last[‘id_category’].”-“.””.$last[‘board_id’].”.html\”> <img src=\””.$im.”nofoto.gif\” width=\”80\” height=\”80\” alt=\”nophoto\” /></a>”;?>

Все, с фотками разобрались, давайте сделаем вывод короткого описания в списке объявлений. Для этого открываем файл conf.php который лежит в папке admin, и в самом конце, перед закрытием php (?>) вставляем

Function cutstring( $stranb, $lengthanb, $theend=”…” ) { if (strlen($stranb)>30) {$text2=substr($stranb, 0, $lengthanb); $words=explode(” “, $text2); $words=array_reverse($words); array_splice($words,0,1); $alexxnb=0; for ($i=0; $i<count($words); $i++) { $i=$i$alexxnb; if (substr($words[$i], -1)==”,” OR substr($words[$i], -1)==”.” OR substr($words[$i], -1)==”:” OR substr($words[$i], -1)==”;”) {$words[$i]=substr($words[$i],0, strlen($words[$i])-1);}; $wrd=$words[$i]; if (strlen($wrd)<4){ array_splice($words,$i,1);$alexxnb=1; } else { $i=1985;}; }; $mwords=””; $words=array_reverse($words); for ($i=0; $i<count($words); $i++) {  $mwords=$mwords.$words[$i];  if ($i!=count($words)-1) {$mwords=$mwords.” “;} else {$mwords=$mwords.$theend;}; }; } else {$mwords=$stranb;}; return $mwords; }

Для начала давайте сделаем вывод на странице свежие объявления, и открываем файлinc/last_add.inc.php

На 16 строчке подключаем таблицу jb_board.text и теперь у вас эта строчка должна выглядеть так

$last_add=mysql_query(“SELECT jb_board.id AS board_id, jb_board.id_category, jb_board.title, jb_board.text, jb_board.city, DATE_FORMAT(jb_board.date_add,’%d.%m.%Y’) AS dateAdd, jb_board.checkbox_top, jb_board.checkbox_select, jb_board_cat.id, jb_board_cat.”.$name_cat.”, jb_photo.photo_name, jb_city.city_name, jb_city.en_city_name FROM jb_board RIGHT JOIN jb_board_cat ON jb_board.id_category = jb_board_cat.id LEFT JOIN jb_city ON jb_board.city_id = jb_city.id LEFT JOIN jb_photo ON jb_board.id = jb_photo.id_message WHERE old_mess = ‘old’ “.$subQuery.” GROUP by board_id ORDER BY board_id DESC LIMIT “.$start.”, “.$c[‘count_adv_on_index’]); cq();

Достаем краткое описание, строчка 20 где <div class=”o1″> перед закрытием контейнера, ничего не удаляя, вставляем

<? # Следующая строка выводит обрезанное содержание # ?>  </br><?=cutstring($last[‘text’],150)?>

Все точно так же делаем с файлом inc/last_ads.inc.php для вывода описания в категориях.

Давайте теперь сделаем вывод цены под населенным пунктом, начнем с страницы свежих объявленийinc/last_add.inc.php для начала нужно подключить таблицу jb_board.price и делаем это по принципу как и с коротким описанием. Затем делаем вывод цены в контейнере <div class=”o5″> сразу перед закрытием (</div>) вставляем

<? if($last[‘price’]!=0) echo “<div class=\”b orange\”>”.$last[‘price’].”$</div>”; ?>

Точно также делаем в категориях, в файле inc/last_ads.inc.php

Все, с внешним видом списка объявлений мы закончили, и теперь доска выглядит не хуже авито и олх=)

Давайте теперь добавим вывод последних объявлений на главную страницу доски.

Для начала создайте файл в папке inc с именем last_add_in_main.inc.php и вставьте в него этот код

<? if (defined(‘JBCITY’)) $subQuery=’ AND jb_board.city_id = ‘.JBCITY; else $subQuery=”; $name_cat=(defined(‘JBLANG’)&& constant(‘JBLANG’)==’en’)?’en_name_cat’:’name_cat’; $last_add=mysql_query(“SELECT jb_board.id AS board_id, jb_board.id_category, jb_board.title, jb_board.text, jb_board.city, DATE_FORMAT(jb_board.date_add,’%d.%m.%Y’) AS dateAdd, jb_board.checkbox_top, jb_board.checkbox_select, jb_board_cat.id, jb_board_cat.”.$name_cat.”, jb_photo.photo_name, jb_city.city_name, jb_city.en_city_name FROM jb_board RIGHT JOIN jb_board_cat ON jb_board.id_category = jb_board_cat.id LEFT JOIN jb_city ON jb_board.city_id = jb_city.id LEFT JOIN jb_photo ON jb_board.id = jb_photo.id_message WHERE old_mess = ‘old’ “.$subQuery.” GROUP by board_id ORDER BY board_id DESC LIMIT 5″); cq(); if(mysql_num_rows($last_add)){  while ($last=mysql_fetch_assoc($last_add)){ ?><div class=”<?=smsclass($last[‘checkbox_top’],$last[‘checkbox_select’])?>”>  <div class=”o1″><a class=”b” title=”<?=$last[‘title’]?>” href=”<?=”c”.$last[‘id_category’].”-“.$last[‘board_id’]?>.html”><?=$last[‘title’]?></a><br /> <? # Следующая строка выводит обрезанное содержание # ?> <?=cutstring($last[‘text’],150)?>  </div> <div class=”o2 alcenter”>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div> <div class=”o3 alcenter”><? echo($last[‘photo_name’])?” <a href=\”c”.$last[‘id_category’].”-“.””.$last[‘board_id’].”.html\”> <img src=\””.$u.”small/”.$last[‘photo_name’].”\” width=\”80\” height=\”80\” alt=\”\” /></a>”:”  <a href=\”c”.$last[‘id_category’].”-“.””.$last[‘board_id’].”.html\”>  <img src=\””.$im.”nofoto.gif\” width=\”80\” height=\”80\” alt=\”\” /></a>”;?></div>  <div class=”o4″><a class=”dgray” title=”<?=$last[$name_cat]?>” href=”<?=”c”.$last[‘id_category’]?>.html”><?=$last[$name_cat]?></a></div> <div class=”clear”></div></div><?     } } ?>

Теперь давайте его подключим. Открываем index.php в корне вашего сайта и приблизительно 105 строка, где

elseif(!@$_GET[‘id_cat’] && !@$_GET[‘id_mess’] && !@$_GET[‘op’]){                 require_once(“inc/head.inc.php”);                 require_once(“inc/top.inc.php”);                 echo $design_div; // вывели открывающие блоки дизайна                 if(defined(‘JBCITY’))$page_uri=”index_”.JBLANG.JBCITY;                 else $page_uri=”index_”.JBLANG;                 if($JBSCACHE==”1″){                                $flnm=$cdir.$page_uri;                                ob_start();                                if(!$cat_index=readData($flnm,$JBSCACHE_expire)){                                                require_once(“inc/cat_index.inc.php”);                                                $cat_index=ob_get_contents(); ob_clean();                                                writeData($flnm,$cat_index);                                }echo $cat_index;                 } else require_once(“inc/cat_index.inc.php”); }
Заменяем наelseif(!@$_GET[‘id_cat’] && !@$_GET[‘id_mess’] && !@$_GET[‘op’]){                 require_once(“inc/head.inc.php”);                 require_once(“inc/top.inc.php”);                 echo $design_div; // вывели открывающие блоки дизайна                 if(defined(‘JBCITY’))$page_uri=”index_”.JBLANG.JBCITY;                 else $page_uri=”index_”.JBLANG;                 if($JBSCACHE==”1″){                                $flnm=$cdir.$page_uri;                                ob_start();                                if(!$cat_index=readData($flnm,$JBSCACHE_expire)){                                                require_once(“inc/cat_index.inc.php”);                                                $cat_index=ob_get_contents(); ob_clean();                                                writeData($flnm,$cat_index);                                }echo $cat_index;                 } else require_once(“inc/cat_index.inc.php”);   if(defined(‘JBCITY’))$page_uri=”last_add_in_main_”.JBLANG.JBCITY;else $page_uri=”last_add_in_main_”.JBLANG;         if($JBSCACHE==”1″){                 $flnm=$cdir.$page_uri;                 ob_start();                 if(!$adv_index=readData($flnm,$JBSCACHE_expire)){                         require_once(“inc/last_add_in_main.inc.php”);                         $adv_index=ob_get_contents(); ob_clean();                         writeData($flnm,$adv_index);                 }echo $adv_index;         } else require_once(“inc/last_add_in_main.inc.php”); }

Добавляем ЧПУ

в корневом .htaccess находим: 
RewriteRule ^c([0-9]+)-([0-9]+).html$ index.php?id_cat=$1&id_mess=$2
Это стандартный вывод url для объявлений. Эту строку не трогаем! Так как править все ссылки просто )( , и где то какая то все равно будет нуждаться в ней.
Вставляем после неё:
RewriteRule ^c([0-9]+)-([0-9]+)-([-a-zA-Z0-9_]+).html$ index.php?id_cat=$1&id_mess=$2&tile=$3

Файлы которые я правил:
list_ads.inc.php search.inc.php vip.inc.php user.inc.php note.inc.php

Для примера возьму блокнот note.inc.php примерно 33 строка.. ссылка:
<a class=”b” title=”<?=$last[‘title’]?>” href=”<?=”c”.$last[‘id_category’].”-“.$last[‘board_id’]?>.html”><?=$last[‘title’]?></a>

Вставляем в нее тайтл конечно же транслированный и получаем:
<a class=”b” title=”<?=$last[‘title’]?>” href=”<?=”c”.$last[‘id_category’].”-“.$last[‘board_id’].”-“.$t=translit($last[‘title’])?>.html”><?=$last[‘title’]?></a>

Будьте внимательны с переменной, в этом примере это $last и она отличается от переменной в vip.inc.php

 

Все, радуемся, сайт имеет хороший вид и функционал, вообще хотел больше написать, но уже всего что можно сделать и не помню. Если я что то упустил, или Вы хотите еще как то переделать joker board 3 пишите в комментариях, постараюсь помочь.

Пост из курса “Как создать доску объявлений

2 Comments

  1. Так может у вас сохраненный бэкап где нибудь завалялся исправленный уже? Я бы не отказался взглянуть на него!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *