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

joker board

Как я уже ранее обещал, пишу о том как доработать доску объявлений на 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 пишите в комментариях, постараюсь помочь.

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

Понравилась статья? Поделиться с друзьями:

Похожие записи:

Комментариев: 3
  1. портал

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

    1. werstey (автор)

      есть бэкап от kharkovboard.pp.ua продаеться за 10 долларов

  2. Роман

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

    Напутали немного.: удалять не нужно, а из приведённого вами кода взять только часть, т.к. весь код даёт некорректное отображение на небольших, по крайней мере экранах. Таким образом у меня получилось так:
    <? echo($last[‘photo_name’])?””:””;?>
    Да, width и height ставил 25., а то фото перекрывает дату

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

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: