Koobi 5.x Fixies

Кривое отображение кодировки русского языка Жанров и Названий Игр в разделе Игры
Открывай admin/cheats.php и ищи:
 
$CheatTitle = htmlentities($_REQUEST['CheatTitle']);

заменяй на:
$CheatTitle = $_REQUEST['CheatTitle'];  
 
опять ищи:

$CheatTitle = htmlentities($_REQUEST['CheatTitle']); 

заменяй на:
$CheatTitle = $_REQUEST['CheatTitle'];  
 
ищи:

CheatTitle = '".htmlentities($_POST['CheatTitle'][$CheatId])."'

заменяй на:
CheatTitle = '".$_POST['CheatTitle'][$CheatId]."'

Thanks Censsored
Наверх

Где отключить лимит разделов на странице галереи.
После создания 10 разделов появляется 2-я страница, а мне так не надо...

Будем работать с файлом inc\functions.php, так что иди в него
 
1) Есть такая функция limit называется, она возвращает значение в переменную $limit и вызывается везде, где нужно...вот она....в этом условии, если пользователь не указал количество элементов на странице, по умолчанию выводится 10 (последняя цифра) вот и измени ее на сколько тебе надо, например на 100
 
function limit()
{
    $limit = ($_REQUEST['pp'] != '') ? $_REQUEST['pp'] : 10 ;
    return $limit;
}
 
 
2) Второй вариант, в этом же файле можешь просто перейти вот к такой функции
 
function getGallery2($id, $area, $active, $orderby, $ascdesc, $sorting = "0")
 
чуть ниже нее (примерно строк 50) будет вот это
 
$limit = limit();   и это ты можеш заменить на это
 
$limit = 40;   ну или 100 поставить....т.е. ты не привязываешь возвращаемое значение функции limit, а указываеш конкретное значение...

Thanks Arcanum
Наверх

Прямой порядок сортировки галерей
Заходи в папку inc\functions.php
 
ищи там function getGallery2 , в ней
 
 switch ($_REQUEST['ascdesc']) {
        case "asc": $ascdesc = "ASC";
            break;
        case "desc": $ascdesc = "DESC";
            break;
        default : $ascdesc = "DESC";
            break;
    }
 
 
и вот это default : $ascdesc = "DESC";  меняй на это default : $ascdesc = "ASC";

Thanks Arcanum
Наверх

Корректное отображение новых тем форума на главной странице
Проблема легко решаема, странно, что сохранилась в последних версиях Koobi.

Смотрим на файлик, отвечающий за вывод половины главной страницы,  находящийся в templates/standart/start/startpage.tpl

Находим вывод форумов:

{lastthreads forums='1,2,3,4,5' limit='5'}

...которая говорит нам, что собирается показывать вместо себя новые темы из фидов № 1,2,3,4,5, количеством не более 5 штук.

Для коректного вывода всех последних тем из всех фидов, смотрим на собственно, последний номер фида, вот стандартная ссылка с указанием номера:

http://www.overdoze.ru/index.php?p=showforum&fid=10&area=1

...где мы видим фид №10.

Следовательно, правленная строка корректного вывода последниз тем форума выглядит так:

{lastthreads forums='1,2,3,4,5,6,7,8,9,10' limit='Х'}

...где Х - значения количества показываемых тем, принимает значения от 1 до разумного предела.

Помните, что темы 11-го фида эта строка показывать не будет, а конструкция вида
lastthreads forums='1-10' не работает.


Thanks Master Daemon
Наверх

Корректный перенос Кооби-сайта с Денвера в паблик.
Бесспорно, кроме тестирования, удобно было бы использовать Денвер в качестве подготовки сайта к выкладке в сеть - набил полезной инфой, статьями, файлами и новостями, заточил дезигн и слил в сетку.

Все было бы здорово, но сделать это корректно не у всех получается, а многие вообще не представляют себе такой возможности.

Однако, вопрос оказывается довольно простым и быстрым.

В дистрибутивах Koobi 5.x, любезно предоставленныx Censsored-ом на тестирование, в корне системы лежит чудесный инструмент - dumper.php, вот он-то и пригодится нам для переноса готовой  базы на веб. У кого его нет, возьмите дистрибутив из нашего каталога.

Порядок действия.

1. убеждаемся, что на Денвере все работает и нас устраивает.

2. сливаем весь проект в сеть, не забывая о том, что предельной вверх папкой для нас на веб сервере скорее всего будут www или htpd, следовательно, сливаем только те файлы и папки, что лежат на нашем Денвере под www.

3. запускаем на Денвере из папки проекта (www) dumper.php, логинимся (для Денвера обычно root без пароля) и просим сохранить архив с базой нашего проекта.
Не все хостинги понимают gz архивирование, определяется это опытным путем, и если вы не знаете ситуации с вашим, стоит сделать два варианта архива базы - с сжатием и без, это занимает не более пары минут.

4. копируем папочку backup, созданную dumper-ом  в корне нашего проекта  на веб.

5. создаем базу даных нашего вебсайта средствами PHP My Admin или показываем свою крутость через командную строку.

не забываем на вебе поправить в /inc/config.php значения следующих переменных:
$dbhost = "localhost";
$dbuser = "твое имя пользователя MySQL";
$dbpass = "твой пароль";
$dbname = "имя твоей базы";
$dbprefix = "kpro";  (или другой префикс, если менял)

6. запускаем http://mysite/dumper.php , вписываем соответствующие логин\пароль к базе, на следующей странице восстанавливаем нашу проектную базу из скопированного архива.

7. проверяем...

P.S. Если на вебе съехала и потерялась кодировка таблиц, сравниваем Денверовую и вебовую базы на предмет кодировочек, скорее всего проблема в них.
Если это не помогло и базы идентичны, смотрите этот ФАК, тут есть лекарство...



Thanks Master Daemon
Наверх

MOD REWRITE и слэши в Koobi
Для слэшей.
В index.php (для Downloads):

ищем:

$prepage = preg_replace("/index.php()p=downloads&categ=([0-9]*)&area=([0-9]*)/", "downloadrub,\\2,\\3.htm",$prepage);
$prepage = preg_replace("/index.php()categ=([0-9]*)&parent=([0-9]*)&p=downloads&area=([0-9]*)/", "downloads,\\2,\\3,\\4.htm",$prepage);
$prepage = preg_replace(array("/index.php()p=downloads&area=([0-9]*)/","/index.php()area=([0-9]*)&p=downloads/"), "downloads,\\2.htm", $prepage);

меняем на:

$prepage = preg_replace("/index.php()p=downloads&categ=([0-9]*)&area=([0-9]*)/", "downloadrub/\\2/\\3.htm",$prepage);
$prepage = preg_replace("/index.php()categ=([0-9]*)&parent=([0-9]*)&p=downloads&area=([0-9]*)/", "downloads/\\2/\\3/\\4.htm",$prepage);
$prepage = preg_replace(array("/index.php()p=downloads&area=([0-9]*)/","/index.php()area=([0-9]*)&p=downloads/"), "downloads/\\2.htm", $prepage);

Для этого же в .htaccess:

RewriteRule ^downloads,([0-9]+).htm$ index.php?p=downloads&area=$1
RewriteRule ^downloads,([0-9]+),print.htm$ index.php?p=downloads&area=$1&print=1
RewriteRule ^downloads,([0-9]+),([0-9]+),([0-9]+).htm$ index.php?categ=$1&parent=$2&p=downloads&area=$3
RewriteRule ^downloads,([0-9]+),([0-9]+),([0-9]+),print.htm$ index.php?categ=$1&parent=$2&p=downloads&area=$3&print=1
RewriteRule ^downloadrub,([0-9]+),([0-9]+).htm$ index.php?p=downloads&categ=$1&area=$2
RewriteRule ^downloadrub,([0-9]+),([0-9]+),print.htm$ index.php?p=downloads&categ=$1&area=$2&print=1
RewriteRule ^downloadfile,([0-9]+),([0-9]+),([0-9]+).htm$ index.php?showfile=1&fid=$1&p=downloads&area=$2&categ=$3
RewriteRule ^downloadfile,([0-9]+),([0-9]+),([0-9]+),print.htm$ index.php?showfile=1&fid=$1&p=downloads&area=$2&categ=$3&print=1
RewriteRule ^downloadsort,(.*),([0-9]+),([0-9]+),(.*),([0-9]+),([0-9]+).htm$ index.php?sort=$1&pp=$2&categ=$3&parent=$4&p=downloads&area=$5&page=$6
RewriteRule ^downloadsort,(.*),([0-9]+),([0-9]+),(.*),([0-9]+),([0-9]+),print.htm$ index.php?sort=$1&pp=$2&categ=$3&parent=$4&p=downloads&area=$5&page=$6&print=1
RewriteRule ^downloadsort,([0-9]+),(.*),([0-9]+),(.*),([0-9]+).htm$ index.php?pp=$1&sort=$2&categ=$3&parent=$4&p=downloads&area=$5
RewriteRule ^downloadsort,([0-9]+),(.*),([0-9]+),(.*),([0-9]+),print.htm$ index.php?pp=$1&sort=$2&categ=$3&parent=$4&p=downloads&area=$5&print=1
RewriteRule ^download_rub_([0-9]+)_([0-9]+)_([0-9]+).htm$   index.php?nav=sub&p=downloads&categ=$1&area=$2&parent=$3
RewriteRule ^download_rub_([0-9]+)_([0-9]+)_([0-9]+),print.htm$   index.php?nav=sub&p=downloads&categ=$1&area=$2&parent=$3&print=1

меняем на:

RewriteRule ^downloads/([0-9]+).htm$ index.php?p=downloads&area=$1
RewriteRule ^downloads/([0-9]+)/print.htm$ index.php?p=downloads&area=$1&print=1
RewriteRule ^downloads/([0-9]+)/([0-9]+)/([0-9]+).htm$ index.php?categ=$1&parent=$2&p=downloads&area=$3
RewriteRule ^downloads/([0-9]+)/([0-9]+)/([0-9]+)/print.htm$ index.php?categ=$1&parent=$2&p=downloads&area=$3&print=1
RewriteRule ^downloadrub/([0-9]+)/([0-9]+).htm$ index.php?p=downloads&categ=$1&area=$2
RewriteRule ^downloadrub/([0-9]+)/([0-9]+)/print.htm$ index.php?p=downloads&categ=$1&area=$2&print=1
RewriteRule ^downloadfile/([0-9]+)/([0-9]+)/([0-9]+).htm$ index.php?showfile=1&fid=$1&p=downloads&area=$2&categ=$3
RewriteRule ^downloadfile/([0-9]+)/([0-9]+)/([0-9]+)/print.htm$ index.php?showfile=1&fid=$1&p=downloads&area=$2&categ=$3&print=1
RewriteRule ^downloadsort/(.*)/([0-9]+)/([0-9]+)/(.*)/([0-9]+)/([0-9]+).htm$ index.php?sort=$1&pp=$2&categ=$3&parent=$4&p=downloads&area=$5&page=$6
RewriteRule ^downloadsort/(.*)/([0-9]+)/([0-9]+)/(.*)/([0-9]+)/([0-9]+)/print.htm$ index.php?sort=$1&pp=$2&categ=$3&parent=$4&p=downloads&area=$5&page=$6&print=1
RewriteRule ^downloadsort/([0-9]+)/(.*)/([0-9]+)/(.*)/([0-9]+).htm$ index.php?pp=$1&sort=$2&categ=$3&parent=$4&p=downloads&area=$5
RewriteRule ^downloadsort/([0-9]+)/(.*)/([0-9]+)/(.*)/([0-9]+)/print.htm$ index.php?pp=$1&sort=$2&categ=$3&parent=$4&p=downloads&area=$5&print=1
RewriteRule ^download_rub_([0-9]+)_([0-9]+)_([0-9]+).htm$   index.php?nav=sub&p=downloads&categ=$1&area=$2&parent=$3
RewriteRule ^download_rub_([0-9]+)_([0-9]+)_([0-9]+)/print.htm$   index.php?nav=sub&p=downloads&categ=$1&area=$2&parent=$3&print=1


После этого,
все работать будет, но изображения отображаться не будут и ссылки будут неправильные.

Тогда плюс к этому (только для слэшей) надо в шаблоне (если ничего не менял, то по-умолчанию для Downloads используется - templates/название/page/main_template.tpl) после <HEAD> поставить <BASE HREF="http://www.адрествоегосайта.ru">

По аналогии с этим, так же поступаем и с другими ссылками...


Thanks Censsored


Наверх

Проблемы с регистрацией админа и пользователей после установки движка
В случае слета крыши в базе данных, после первой установки с одним единственным пользователем\администратором, Кооби случется больше никого не пускает.
Более того, двиг бодро отправляет новый пароль на указанный почтовый ящик, но это не помогает - залогинится с новым паролем нельзя.

Замечено на 5.4 и 5.6 версиях.

Порядок превентивных действий:

После установки девственного скрипта, надо завести дополнительный админский аккаунт и настривать КООБИ из-под него.
После создания основных разделов и тп, дампим базу на всякий случай, затем логинимся 12345@12345.ru и переписываем сензореда на себя.
Сохраняемся, корректно выходим, сносим кукушки, ребутим апач или тачку, запускаемся - входим с новым Главным Админским Логином без проблем.

Желательно добавить еще пару админов со известными e-mail'ами и паролями, потому что, возможно база слетает по причине единственного пользовтеля.
На базах с количеством пользователей больше трех подобныхслетов не наблюдалось.


Также при установке Кооби внимательно отнеситесь к полю "Запрещенные e-mail" в настройках скрипта, вернее, пропустите этот пункт не трогая - пи отсутствии конкретного почтового домена, пользователи не смогут зарегистрироваться на вашем сайте. И после выхода и сброса кукушек, Кооби вас обратно не путстит совсем.


Thanks Master Daemon & Censsored
Наверх

Пропадающие картинки товаров и галерей
Заходим в Админку.

Смотрим раздел Главная.

Если внизу стоит: "SAFE_MODE : Включено" - то все вопросы к Хостеру (есть ли возможность включить для твоего сайта).

Если хостер не включает - вырезать кэширование графики.
 
Если там "SAFE_MODE : Отключено" - то проверять права на папку /cache/  (должны быть 777)


Thanks Censsored
Наверх

Как избавиться от всплывающих окон при добавлении товара в корзину - нужно чтобы товар просто добавлялся в корзину, без всяких вопросов и предложений.
Попробуй в /class/ShopBasket.Class.php

$t = $this->_lang['shop_tobasket_ok'];
$t_r = str_replace("__URLBASKET__", "index.php?p=shop&amp;action=showbasket&amp;area=$area", $t);
$t_r = str_replace("__URLSHOP__", "index.php?p=shop&amp;area=$area", $t_r);
$t_r = str_replace("__URLBACK__", $_REQUEST['redir'], $t_r);
$x = msg("shop", $this->_lang['shop_tobasket_ok_short'], $t_r, "index.php?p=shop&amp;action=showbasket&amp;area=$area" ,1,15);
define("EOUT", $x);
define("NOOUT", 1);

поменять на этот:

$t_rrrrr = $_REQUEST['redir'];
header("Location:$t_rrrrr");




Thanks Censsored
Наверх

При оформлении заказа на шаге №3 появляется Соглашение с условиями магазина - которые подтвердили еще при регистрации. как-то нужно убрать.
Открываем: templates/шаблон/shop/paycheck.tpl
 
Надо вырезать это:

<script language="JavaScript" type="text/javascript">
function checkf(){ldelim}
if(document.f.abg_accept.checked!='1'){ldelim}alert("{$lang.shop_noagb}");return false;{rdelim}
{rdelim}
</script>

и это:

<table width="100%" border="0" cellpadding="3" cellspacing="1" class="box_inner">
<tr>
<td class="box_innerhead">{$lang.shop_agbtitle}</td>
</tr>
<tr>
<td valign="top" class="row_second">
<div id="sagb" class="agb_container_payment" style="padding:5px;line-height:1.4em">{$agb_shop}</div>
 </td>
</tr>
</table>



А это:

<input name="abg_accept" type="checkbox"  value="1" {if $smarty.request.accept_agb==1}checked="checked"{/if} />
{$lang.shop_accept_agb} <a href="javascript:drucke('sagb','{$theme}');">{$lang.shop_agbprint}</a>

поменять на это:

<input name="abg_accept" type="hidden" value="1">

И вместо этого:

<form action="index.php" method="post" name="f" id="f" onSubmit="return checkf();">

Это:

<form action="index.php" method="post" name="f" id="f">


Thanks Censsored
Наверх

Корректный вывод RSS
B 5.6 PRO вот список изменений в rss/index.php

Меняем:

$rss = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>\n";

на:

$rss = "<?xml version=\"1.0\" encoding=\"windows-1251\" ?>\n";

и убираем дополнительное палево:

$rss .= "  <title>Powered by Koobi</title>\n";

меняем на:

$rss .= "  <title>Powered by MySite Name</title>\n";


Thanks MegaLitr
Наверх

Kак сделать так, чтоб при нажатии на тумб, открывалась только картинка, а не страничка, а в ней увеличенная картинка.
Открывай templates/шаблон/shop/results.tpl

и это:

<a href="javascript:popex('index.php?p=shopimage&amp;do=shopimage&amp;image={$file->icon}&amp;w={$file->width}&amp;h={$file->height}','','{$file->height}','{$file->width}','0','1','1','0');">

меняем на это:

<a href="index.php?p=shopimage&do=shopimage&image={$file->icon|urlencode}" target="_blank">

или лучше на это:

<a href="/uploads/shop/icons/{$file->icon|urlencode}" target="_blank">


Thanks Censsored
Наверх

Некорректное отображение даты в новостях на русском языке
После русификации, может неправильно отображаться дата в новостях, на главной странице (не на русском)
Вот Fix на этот баг.

Добавляем русскую локаль в .../root/inc/init.php:
после

@setlocale(LC_TIME, "$lct");

строку

if(LANG=="ru") @setlocale (LC_ALL, 'ru_RU.CP1251', 'ru');
P.S. Koobi 5.4 Standart 190 строка, Koobi 5.4 Pro 184 строка



Чтобы дни недли на главной странице в мини календаре были не "По, Вт, Ср, Че, Пя, Су, Во" а "Пн, Вт, Ср, Чт, Пт, Сб, Вс" то надо:

1) Правите файл Calendar.Class.php в папке class. Правите массив переменных на русский язык.

Добавляете еще переменную (я обозвал $dayNamesTrunc)
var $dayNamesTrunc = array("Вс.","Пн.","Вт.","Ср.","Чт.","Пт.","Сб.");
 
2) Далее нужно продублировать функцию отвечающую за сортировку дней недели для конкретного месяца.
// TAGE ARRAY
$tmpl->assign('DayNamesTruncArray',
array($this->dayNamesTrunc[($this->startDay)%7],
$this->dayNamesTrunc[($this->startDay+1)%7],
$this->dayNamesTrunc[($this->startDay+2)%7],
$this->dayNamesTrunc[($this->startDay+3)%7],
$this->dayNamesTrunc[($this->startDay+4)%7],
$this->dayNamesTrunc[($this->startDay+5)%7],
$this->dayNamesTrunc[($this->startDay+6)%7])
);
 
3)Правим в темлейтах в папке календарь файлы: calendar_small.tpl, calendar_small_prev_next.tpl, calendar_small_years.tpl.
 
{foreach from=$DayNamesTruncArray item=day}
<td title="{$day}" class="calendarHeader">
{$day}



В startpage.tpl:
{showcheats show='top' show='5'}
<br />
{showcheats show='new' show='5'}
<br />
 
Меняем на:
{showcheats show1='top' show='5'}
<br />
{showcheats show1='new' show='5'}
<br />
 
в Func.Cheats.php:
if($param['show1'] == 'top')
{
$tmpl->assign('top_cheats', $the_cheats);
$cheats = $tmpl->fetch('topcheats.tpl');




Thanks Koobshik
Наверх

Решение некоторых проблем с форумом
Открываем system/userlist.php и после строки:

if(!checkactive('user')) include(dirname(__FILE__)."/lib/notactive.php" );

вставляем строку:

include_once(BASEDIR . "/functions/Func.Forums.php" );

кроме того,
открываем admin/init.php и после строки:

require_once(BASEDIR."/inc/init.php");

вставляем:

require_once(BASEDIR."/functions/Func.Forums.php");


Thanks Censsored
Наверх

Вывод новостей на главной по категориям
ля добавления в куби функции вывода новостей и статей по категориям добавляем:
в /class/tpl/koobi.class.php после строки $this->register_function('lastthreads', 'getLastForumPosts');

вот это:

$this->register_function('newspokat', 'getNewsPoKat');
$this->register_function('articliespokat', 'getStatiiPoKat');

и в functions.php перед function krand($min, $max)

// ========================================================
// <<-- Novosti blokami po kategoriam -->>
// naprimer: {lastthreads KatId='1,2,3,4,5' limit='5' zag='Kakoeto nazvanie'}
// ========================================================
function getNewsPoKat($param)
{
    global $db,$THEME,$area;
    $last_threads = array();
    $tmpl = new Koobi("templates/");
    $fids = str_replace(",", ' OR newscat = ', $param['KatId']);
        $sql = $db->Query("
        SELECT
                newsid,
                title,
                text
        FROM " . PREFIX . "_news WHERE newscat =".$fids." AND area_id = ".$area." AND ispublic = 1 order by newsid desc LIMIT " . $param['limit']);//catname = `".$fids."`
 
    $i = 0;
 
    while ($row = $sql->fetchrow()) {
        $last_threads[$i]['text'] = $row->text;
        $last_threads[$i]['title'] = $row->title;
        $last_threads[$i]['links'] = "index.php?area=".$area."&p=news&newsid=".$row->newsid."";
        $i++;
    }
        $tmpl->assign('zagolovok', $param['zag']);
        $tmpl->assign('theme', $THEME);
    $tmpl->assign('last_news_array', $last_threads);
    $newspokat = $tmpl->fetch("$THEME/news/newspokat.tpl");
 
    return $newspokat;
}
 
// ========================================================
// <<-- Cmambu blokami po kategoriam -->>
// naprimer: {lastthreads KatId='1,2,3,4,5' limit='5' zag='Kakoeto nazvanie'}
// ========================================================
function getStatiiPoKat($param)
{
    global $db,$THEME,$area;
    $last_threads = array();
    $tmpl = new Koobi("templates/");
    $fids = str_replace(",", ' OR articlecat = ', $param['KatId']);
        $sql = $db->Query("
        SELECT
                id,
                title,
                content,
                inline_screens,
                type
        FROM " . PREFIX . "_articles WHERE articlecat =".$fids." AND area = ".$area." AND active = 1 order by id desc LIMIT " . $param['limit']);//catname = `".$fids."`
 
    $i = 0;
 
    while ($row = $sql->fetchrow()) {
                $ishot = '0';
                if(($row->inline_screens)!=("a:0:{}"))
                {
                        $ishot = '1';
                }else{
                        $ishot = '0';
                }
                $text = $row->content;
                $text = inlinescreens($row->inline_screens,$text);
                $last_threads[$i]['ishot'] = $ishot;
        $last_threads[$i]['text'] = $text;
        $last_threads[$i]['title'] = $row->title;
        $last_threads[$i]['links'] = "index.php?type=".$row->type."&area=".$area."&p=articles&id=".$row->id."";
        $i++;
    }
        $tmpl->assign('zagolovok', $param['zag']);
        $tmpl->assign('theme', $THEME);
    $tmpl->assign('last_statii_array', $last_threads);
    $articliespokat = $tmpl->fetch("$THEME/articles/articlspokat.tpl");
 
    return $articliespokat;
}

после этого в startpage.tpl достаточно добавить в нужном месте

{ articliespokat KatId='5,6' limit='3' zag='заголовок' }

еще понадобится файл templatename/articles/articlspokat.tpl от 5+ вот такого содержания

{if $last_statii_array}
<table width="100%" border="0" cellpadding="3" cellspacing="1" class="box_inner">
{foreach from=$last_statii_array item=laststatii}
<tr>
<td>
<div class="inforel"><strong>{$laststatii.title}</strong></div>
{if $laststatii.ishot != '0'}
<div class="intro" align="justify">{$laststatii.text|truncate:600}</div>
{else}
<div class="intro" align="justify">{$laststatii.text|truncate:200}</div>
<div align="right"><a href="{$laststatii.links}">Подробнее</a></div>
</div>
<div class="news_spacer"></div>
{/if}
</td>
</tr>
{/foreach}
</table>
<br />
{/if}


Thanks MegaLitr
Наверх

Вывод новостей по категориям часть 2
Код рабочий - 100%  
 
Смотри все внимательно, не торопи события проделай еще раз:
 
1) В папке articles, создай файл articlspokat.tpl и в него вставь указанный код
 
{if $last_statii_array}  
<table width="100%" border="0" cellpadding="3" cellspacing="1" class="box_inner">  
{foreach from=$last_statii_array item=laststatii}  
<tr>  
<td>  
<div class="inforel"><strong>{$laststatii.title}</strong></div>  
{if $laststatii.ishot != '0'}  
<div class="intro" align="justify">{$laststatii.text|truncate:600}</div>  
{else}  
<div class="intro" align="justify">{$laststatii.text|truncate:200}</div>  
<div align="right"><a href="{$laststatii.links}">Подробнее</a></div>  
</div>  
<div class="news_spacer"></div>  
{/if}  
</td>  
</tr>  
{/foreach}  
</table>  
<br />  
{/if}  
 
2) В файле inc\functions.php после <?php  
!!! обрати внимание, что я изменил название функции!!!
 
вставляй вот это  
 
function artpokat($param)  
 {
    global $db,$THEME,$area;  
    $last_threads = array();  
    $tmpl = new Koobi("templates/");  
    $fids = str_replace(",", ' OR articlecat = ', $param['KatId']);  
        $sql = $db->Query("  
        SELECT  
                id,  
                title,  
                content,  
                inline_screens,  
                type  
        FROM " . PREFIX . "_articles WHERE articlecat =".$fids." AND area = ".$area." AND active = 1 order by id desc LIMIT " . $param['limit']);//catname = `".$fids."`  
 
    $i = 0;  
 
    while ($row = $sql->fetchrow()) {  
                $ishot = '0';  
                if(($row->inline_screens)!=("a:0:{}"))  
                {  
                        $ishot = '1';  
                }else{  
                        $ishot = '0';  
                }  
                $text = $row->content;  
                $text = inlinescreens($row->inline_screens,$text);  
                $last_threads[$i]['ishot'] = $ishot;  
        $last_threads[$i]['text'] = $text;  
        $last_threads[$i]['title'] = $row->title;  
        $last_threads[$i]['links'] = "index.php?type=".$row->type."&area=".$area."&p=articles&id=".$row->id."";  
        $i++;  
    }  
        $tmpl->assign('zagolovok', $param['zag']);  
        $tmpl->assign('theme', $THEME);  
    $tmpl->assign('last_statii_array', $last_threads);  
    $articliespokat = $tmpl->fetch("$THEME/articles/articlspokat.tpl");  
 
    return $articliespokat;  
}  
 
 
3) в обоих файлах  class\Koobi.Class и class\tpl\Koobi.Class в любом месте среди строчек где перечисляется регистрация функций пропиши
 
$this->register_function('artpokat', 'artpokat');  
 
4) Все, теперь в файле startpage.tpl  впиши вот это
 
{ artpokat KatId='3,4' limit='2' zag='заголовок' }
 
Обрати внимание, какой категории статей соотвотствует значение поля articlecat в базе в таблице articles. У меня лично есть 3 категории "Категория1" "Категория2" "Категория3" и по данному запросу функция выводит статьи из категорий 2 и 3......Видишь в чем разница.....Категория создана третьей по счету, а значение у нее 4!!!!!

Thanks Arcanum
Наверх

Вывод новостей по категориям часть 3
Цитата:
1) В папке articles, создай файл articlspokat.tpl и в него вставь указанный код
 
{if $last_statii_array}  
<table width="100%" border="0" cellpadding="3" cellspacing="1" class="box_inner">  
{foreach from=$last_statii_array item=laststatii}  
<tr>  
<td>  
<div class="inforel"><strong>{$laststatii.title}</strong></div>  
{if $laststatii.ishot != '0'}  
<div class="intro" align="justify">{$laststatii.text|truncate:600}</div>  
{else}  
<div class="intro" align="justify">{$laststatii.text|truncate:200}</div>  
<div align="right"><a href="{$laststatii.links}">Подробнее</a></div>  
</div>  
<div class="news_spacer"></div>  
{/if}  
</td>  
</tr>  
{/foreach}  
</table>  
<br />  
{/if}

 
Давай... Вот мой шаблон, переделанный уже под мои нужды:
 
{if $last_statii_array}
   {foreach from=$last_statii_array item=laststatii}
        <br>
        <span class="red">{$laststatii.time_start|date_format:"%d.%m.%Y"}</span>
        <br>
        {$laststatii.title}
        <br><br>
    {/foreach}
{/if}
 

Цитата:
2) В файле inc\functions.php после <?php  
!!! обрати внимание, что я изменил название функции!!!
 
вставляй вот это  
 
function artpokat($param)  
 {
    global $db,$THEME,$area;  
    $last_threads = array();  
    $tmpl = new Koobi("templates/");  
    $fids = str_replace(",", ' OR articlecat = ', $param['KatId']);  
        $sql = $db->Query("  
        SELECT  
                id,  
                title,  
                content,  
                inline_screens,  
                type  
        FROM " . PREFIX . "_articles WHERE articlecat =".$fids." AND area = ".$area." AND active = 1 order by id desc LIMIT " . $param['limit']);//catname = `".$fids."`  
 
    $i = 0;  
 
    while ($row = $sql->fetchrow()) {  
                $ishot = '0';  
                if(($row->inline_screens)!=("a:0:{}"))  
                {  
                        $ishot = '1';  
                }else{  
                        $ishot = '0';  
                }  
                $text = $row->content;  
                $text = inlinescreens($row->inline_screens,$text);  
                $last_threads[$i]['ishot'] = $ishot;  
        $last_threads[$i]['text'] = $text;  
        $last_threads[$i]['title'] = $row->title;  
        $last_threads[$i]['links'] = "index.php?type=".$row->type."&area=".$area."&p=articles&id=".$row->id."";  
        $i++;  
    }  
        $tmpl->assign('zagolovok', $param['zag']);  
        $tmpl->assign('theme', $THEME);  
    $tmpl->assign('last_statii_array', $last_threads);  
    $articliespokat = $tmpl->fetch("$THEME/articles/articlspokat.tpl");  
 
    return $articliespokat;  
}

 
Да без разницы, как ты функцию назовёшь. Вставил. Предыдущие функции, что ты давал, удалил.
 

Цитата:
3) в обоих файлах  class\Koobi.Class и class\tpl\Koobi.Class в любом месте среди строчек где перечисляется регистрация функций пропиши
 
$this->register_function('artpokat', 'artpokat');

 
Поменял старые две на эту одну.
 

Цитата:
4) Все, теперь в файле startpage.tpl  впиши вот это
 
{ artpokat KatId='3,4' limit='2' zag='заголовок' }
 
Обрати внимание, какой категории статей соотвотствует значение поля articlecat в базе в таблице articles. У меня лично есть 3 категории "Категория1" "Категория2" "Категория3" и по данному запросу функция выводит статьи из категорий 2 и 3......Видишь в чем разница.....Категория создана третьей по счету, а значение у нее 4!!!!!
 

 
Зачем так сложно, ID категории сразу видно, если в админке зайдёшь в категории статей и посмотришь ссылку на категорию. В моём случае - это index.php?p=articles&categ=2
Категория 2.
 
Значится так. Мне в startpage.tpl это совсем не нужно, там у меня выводятся, как и положено последние 10 новостей сайта. А названия статей этой категории мне нужно выводить на всех страницах сайта, включая и главную, в небольшом блоке в левой части сайта. Для этого блока у меня создан специальный темплейт other/reviews.tpl. Этот темплейт подгружается в main_template инклюдом. Вот в этот темплейт и я вставил {artpokat KatId='2' limit='5'}.
 
Тмплейт приобрёл такой вид:
 
<table width="279" border="0" cellspacing="0" cellpadding="0">
            <tr>
              <td width="32" class="box_left3">
        <img src="{$img_folder}/bg3.gif" alt="" width="32" height="4"></td>
              <td class="boxText3"><br>
                <span class="boxTitle1">{$lang.reviews}</span>
        <br>
                <br>
{artpokat KatId='2' limit='5'}
             <div align="right"><img src="{$img_folder}/punkt1.gif" alt="" width="10" height="6"><span class="more"><a href="index.php?area=2&amp;p=articles&amp;categ=2" class="A1">{$lang.reviews_all}</a> </span></div></td>
              <td width="28" class="box_right4"><img src="{$img_folder}/bg5.gif" alt="" width="42" height="9"></td>
            </tr>
          </table>
 
Проверил, в этом варианте вроде заработало, спасибо. Тока пришлось несколько изменить функцию, чтобы дата публикации выводилась тоже. По дефолту там не было вывода даты.
 
Переделанная функция будет выглядеть так:
 
function artpokat($param)  
 {
    global $db,$THEME,$area;  
    $last_threads = array();  
    $tmpl = new Koobi("templates/");  
    $fids = str_replace(",", ' OR articlecat = ', $param['KatId']);  
        $sql = $db->Query("  
        SELECT  
                id,  
                title,
                content,  
                inline_screens,  
                type,
                time_start  
        FROM " . PREFIX . "_articles WHERE articlecat =".$fids." AND area = ".$area." AND active = 1 order by id desc LIMIT " . $param['limit']);//catname = `".$fids."`  
 
    $i = 0;  
 
    while ($row = $sql->fetchrow()) {  
                $ishot = '0';  
                if(($row->inline_screens)!=("a:0:{}"))  
                {  
                        $ishot = '1';  
                }else{  
                        $ishot = '0';  
                }  
                $text = $row->content;  
                $text = inlinescreens($row->inline_screens,$text);  
                $last_threads[$i]['ishot'] = $ishot;  
        $last_threads[$i]['text'] = $text;  
        $last_threads[$i]['title'] = $row->title;  
        $last_threads[$i]['links'] = "index.php?type=".$row->type."&area=".$area."&p=articles&id=".$row->id."";
        $last_threads[$i]['time_start'] = $row->time_start;    
        $i++;  
    }  
        $tmpl->assign('zagolovok', $param['zag']);  
        $tmpl->assign('theme', $THEME);  
    $tmpl->assign('last_statii_array', $last_threads);  
    $articliespokat = $tmpl->fetch("$THEME/articles/articlspokat.tpl");  
 
    return $articliespokat;  
}
 
 
А выводить дату будем так:
 
{$laststatii.time_start|date_format:"%d.%m.%Y"}



Thanks Leroest
Наверх

Ошибка при удалении форумов
При удалении какого-либо форума

Fatal error: Call to undefined function deleteForum() in /home/kalinaf/public_html/admin/forum.php on line 778
 
 и не удаляет...  Пытаюсь этот форум дезактивировать... пишет:
 
Fatal error: Call to undefined function switchForumStatus() in /home/kalinaf/public_html/admin/forum.php on line 857
 
Чего оно хочет?  Что за беда с этой функцией?

Вот что:

пропиши в admin/forum.php 

//============================================
require_once("init.php");
require_once("../inc/filetypes.php");
 
сразуже после этих строк , следующее  
 
require_once("../functions/Func.Forums.php");


Добавлено

в файле forum.php после строк  
require_once("init.php");  
require_once("../inc/filetypes.php");  
 
впиши вот это  
 
require_once("../functions/Func.Forums.php"); и будет тебе счастье  
===========
 
Добавлено:  
    require_once ("../class/tpl/kpro.class.php");  
    require_once ("../class/db.php");  
    require_once ("../inc/functions.php");  
 
После этих строчек добавил, не помогло!  
 
в начале файла есть  
 
Код:  
<?php  
//============================================  
// censored! [www.antichat.ru]  
//============================================  
if(!defined("BASEDIR")) exit;  
include_once(BASEDIR . "/functions/Func.Forums.php");  
ob_start();  
if (!is_object($tmpl))  
{  
    require_once ("../class/tpl/kpro.class.php");  
    require_once ("../class/db.php");  
    require_once ("../inc/functions.php");  
     
    $tmpl = new Koobi("templates/" . $_GET['theme']);  
}  
   
 
 
Добавлено:  
Добавил в начало файла functions.php  
 
 
Код:include_once(BASEDIR . "/functions/Func.Forums.php");  
 


Thanks Modja
Наверх

Всем, у кого есть проблемы с русским языком в Koobi 5.6
...а именно тестировался релиз от censored! и от ScriptMafia делаем следующее:
 
Проблема появляется у тех, у кого mysql версии 4.1
 
1. убеждаемся что ваша DB имеет сопоставление cp1251_general_ci

2. находим файлы /admin/languages.php & admin/languages_admin.php

в обоих случаях после строк:

Код:
 
mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db($dbname);

 

 
ставим свои строки:

Код:
 
@mysql_query ('SET NAMES CP1251');
@mysql_query ('SET COLLATION_CONNECTION=CP1251_GENERAL_CI');

 

 
3. находим файл classes/Database.Class.php и в нем заменяем:

Код:
 
function DB($host, $user, $pass, $db)
{
$this->_handle = @mysql_connect($host, $user, $pass);
if(!$this->_handle)
{
$this->Error('connect');
return false;
}
 
if(!@mysql_select_db($db, $this->_handle))
{
$this->Error('selectdb');
return false;
}
//MySql 4.1 patch
@mysql_query ('SET NAMES CP1251');
@mysql_query ('SET COLLATION_CONNECTION=CP1251_GENERAL_CI');
 
return true;
 
}
 

 
в этом файле мы добавили три строки:

Код:
 
//MySql 4.1 patch
@mysql_query ('SET NAMES CP1251');
@mysql_query ('SET COLLATION_CONNECTION=CP1251_GENERAL_CI');
 

 

зы: у кого версия ниже 5.6 еще можно подправить файлик function.php добавив три строчки:
 

Код:
 
function sess_open($save_path, $session_name)
{
global $db, $dbhost, $dbname, $dbuser, $dbpass, $SESS_DBCONN;
if (!$SESS_DBCONN = @mysql_connect($dbhost, $dbuser, $dbpass)) {
echo "<pre>Problems while connecting to the Database. Please try again later.</pre>";
exit;
}  
//MySql 4.1 patch
@mysql_query ('SET NAMES CP1251');
@mysql_query ('SET COLLATION_CONNECTION=CP1251_GENERAL_CI');
return true;
 
}

 

 
зы: еще в inc/init.php находим строчку:

Код:
@setlocale(LC_TIME, "$lct");
и после нее добовляем:
Код:
if(LANG=="ru") @setlocale (LC_ALL, 'ru_RU.CP1251', 'ru');





Thanks Nulled & Gelfandbein
Наверх

Важно! Уязвимость форума всех Куби начиная с 5.4
Уязвимости точно подвержены ВСЕ версии koobi  начиная с 5.4
 
Недостаточная обработка переменных:
$_POST["topic"]
$_POST["subject"]
 
Решение:
 
addpost.php
$title = ( $_POST["subject"] == "" ) ? '' : addslashes($_POST["subject"]);
Заменить на:
$title = ( $_POST["subject"] == "" ) ? '' : htmlspecialchars($_POST["subject"], ENT_QUOTES);
 
 
addtopic.php
$title = ( $_POST["subject"] == "" ) ? "" : $_POST["subject"];
Заменить на:
$title = ( $_POST["subject"] == "" ) ? "" : htmlspecialchars($_POST["subject"], ENT_QUOTES);
 
$topic = addslashes($_POST["topic"]);
Заменить на:
$topic = htmlspecialchars($_POST["topic"], ENT_QUOTES);
 
showtopic.tpl
<strong>{$topic->title|escape:'html'|sslash}</strong></td>
Заменить на:
<strong>{$topic->title}|sslash}</strong></td>


Thanks Nulled
Наверх

Не работает поиск по-русски
Попробуй:
в inc/functions.php это:

function strictify ($string)  
{  
    $fixed = htmlentities($string, ENT_QUOTES);  
    $trans_array = array();  
    for ($i = 127; $i < 255; $i++) {  
        $trans_array[chr($i)] = "&#" . $i . ";";  
    }  
    $really_fixed = strtr($fixed, $trans_array);  
    return $really_fixed;  
}

заменить на это:

function strictify ($string)  
{  
return strtr($string, array('<'=>'&lt;','>'=>'&gt;','"'=>'&quot;',"'"=>'&#039;','|'=>'&#124;','+'=>'&#043;','%'=>'&#037;'));  
}
Наверх

Где взять бесплатные шаблоны?
Начните отсюда:

Koobi Teplates Pack