PDA

View Full Version : Album


Wind
02.04.2006, 02:43
Все, что косается этой галереи обсуждаем здесь.
И начать я хочу с некоторых добавлений и изменений, которые я сделал:
- Исправление ссылок (изначально по какой не тыркне попадаешь на гл. страницу).
- Отображение flash файлов.
- Добавление шаблона и изменение содержимого файлов для его правельного отображения.
- Добавление блока случайного фото.
Для того, чтобы все работало качаем архив и заливем все в папочку www, заменяем. А также выполняем в phpmyadmin sql запрос (sql.txt в архиве).
Наслождайтесь!

А теперь вопрос! Блок, что в архиве работате прекрасно, но он отображает лиш картинки и не хочет выводить flash файлы. Как сделать проверку следующего типа: если случайный файл имеет разрешение flash, тогда выводить всегда одну и ту же картинку и просто под ней писать имя файла????
Вот код:

if (eregi("block-Album.php",$PHP_SELF)) {
Header("Location: index.php");
die();
}

$blocks_modules[randompic] = array(
'title' => "randompic",
'func_display' => 'randompic',
'func_add' => '',
'func_update' => '',
'text_type' => 'randompic',
'text_type_long' => '',
'text_content' => "randompic",
'support_nukecode' => false,
'allow_create' => false,
'allow_delete' => false,
'form_url' => false,
'form_content' => false,
'form_refresh' => false
);

global $user, $prefix;

include 'modules/Album/admin/config.php';
mt_srand((double)microtime()*1000000);
if (is_user($user))
$total = mysql_fetch_array(mysql_query("SELECT COUNT(p.pid) AS total FROM $prefix"._Album_pictures." AS p LEFT JOIN $prefix"._Album_categories." AS c ON c.gallid=p.gid WHERE c.visible>=1"));
else
$total = mysql_fetch_array(mysql_query("SELECT COUNT(p.pid) AS total FROM $prefix"._Album_pictures." AS p LEFT JOIN $prefix"._Album_categories." AS c ON c.gallid=p.gid WHERE c.visible>=2"));

$p = mt_rand(0,($total[total] - 1));

$pic = mysql_fetch_array(mysql_query("SELECT p.pid, p.img, p.name, p.description, c.galloc FROM $prefix"._Album_pictures." AS p LEFT JOIN $prefix"._Album_categories." AS c ON c.gallid=p.gid LIMIT $p,1"));

$pic[description] = htmlentities($pic[description]);

if (file_exists("$gallerypath/$pic[galloc]/$pic[img]"))
$content = "<center><br><a href=\"modules.php?name=Album&file=index&do=showpic&amp;pid=$pic[pid]\"><img src=\"$gallerypath/$pic[galloc]/$pic[img]\" width=\"140\" border=\"0\" alt=\"$pic[description]\"><br><font size=\"1\">$pic[name]</font></a><br><br><a href=\"modules.php?name=Album\">Перейти в галерею</a></center>";
else
$content = "<center><br><a href=\"modules.php?name=Album&file=index&do=showpic&amp;pid=$pic[pid]\"><img src=\"$gallerypath/$pic[galloc]/$pic[img]\" width=\"140\" border=\"0\" alt=\"$pic[description]\"><br><font size=\"1\">$pic[name]</font></a><br><br><a href=\"modules.php?name=Album\">Перейти в галерею</a></center>";

то есть надо сделать еще одну проверку.
Что-то в таком духе:

if ( файл.swf)

$content = "<center><br><a href=\"modules.php?name=Album&file=index&do=showpic&amp;pid=$pic[pid]\"><img src=\"images/flash.jpg\" width=\"140\" border=\"0\" alt=\"$pic[description]\"><br><font size=\"1\">$pic[name]</font></a><br><br><a href=\"modules.php?name=Album\">Перейти в галерею</a></center>";

Soniks
02.04.2006, 04:19
Разумно изменить на:

$pic['description'] = htmlspecialchars($pic['description']);
if (file_exists($gallerypath."/".$pic['galloc']."/".$pic['img'])){
$exec = explode(".",strtolower($pic['img']));
$exec = end($exec);
if($exec == "swf"){
$content = "<center><br><a href=\"modules.php?name=Album&file=index&do=showpic&amp;pid=$pic[pid]\"><img src=\"images/swf.gif\" width=\"140\" border=\"0\" alt=\"$pic[description]\"><br><font size=\"1\">$pic[name]</font></a><br><br><a href=\"modules.php?name=Album\">Перейти в галерею</a></center>";
}else{
$content = "<center><br><a href=\"modules.php?name=Album&file=index&do=showpic&amp;pid=$pic[pid]\"><img src=\"$gallerypath/$pic[galloc]/$pic[img]\" width=\"140\" border=\"0\" alt=\"$pic[description]\"><br><font size=\"1\">$pic[name]</font></a><br><br><a href=\"modules.php?name=Album\">Перейти в галерею</a></center>";
}
}

здесь swf.gif являеться той само картинкой информирующая о том что это флешка

Episod
02.04.2006, 11:50
каким образом загружать ? нажимаю загружать ниже появляется - загрузка файлов имена файлов не должны содержать русские буквы ! а где файлы загружать так и не понял...

Wind
03.04.2006, 01:17
имена файлов не должны содержать русские буквы ! это я дописал, так как это галерея не понимает файлы с русским названием. А загружать размеется через админку. А то, что у тебя на скрине это для добавление файлов пользователоями, а не отображается ничего у тебя потому что в настройках надо разрешить.

Еще один прибомбасик. Открываем mainfile.php, находим :
themesidebox($title, $content);
}
}

function loginbox() {

и перед тим вставляем:

$result = $db->sql_query("SELECT COUNT(pid) AS total FROM $prefix"._album_pictures_newpicture."");
$wait = $db->sql_fetchrow($result);
$content .= "<strong><big>&middot;</big></strong>&nbsp;<a href=\"".$admin_file.".php?op=album&do=validnew&amp;type=checknew\">"._GALPOSTEDMEDIA.'</a> '.sprintf(_GALWAITING, $wait[total])."<br>";

В language\lang-russian.php добавляем:
define("_GALPOSTEDMEDIA","Галерея");
define("_GALWAITING","%d");

Теперь в админ блоке Ждут проверки: будут отображаться файлы галереи, которые ждут проверки, что очень удобно.

Так, у меня еще вопрос: Как сделать, чтобы пользователи могли добавлять файлы сразу без проверки админа?

Episod
03.04.2006, 01:32
Wind Смотря на функции блока,то видно что юзеры могут добавлять файлы... при нажатии кнопки добавить ничего не происходит.. что доказывает не дееспорсобность!
Ты под пользователем можеш добавить фаил не заходя в админ паель ?

Wind
03.04.2006, 01:36
А также еще вопрос по одному блоку.
Вот его содержимое:

$length=5; //number of thumbs

global $prefix, $dbi;
$content="";
function truncate_string5($str)
{
$maxlength = 20; // maximum lenght of name in block

if (strlen($str) > $maxlength)
return substr($str, 0, $maxlength)." ...";
else
return $str;
}

$result = sql_query("SELECT pid, img, name FROM nuke_Album_pictures ORDER BY pid DESC LIMIT $length", $dbi);

if (mysql_num_rows($result) <= 0) {
$content = "No pictures...";
return false;
}

$content .= "<br><center>";
while ($row = mysql_fetch_array($result)) {

$content .= "<a href=\"modules.php?name=Album&file=index&do=showpic&amp;pid={$row['pid']}\"><img src=\"modules/Album/album/$result[galloc]/thumb_{$row['img']}\" border=\"0\"><br>" . truncate_string5($row['name']) . "</a><br><br>\n";
}
?>

Блок выводит последние $length=5 файлов добавленных в галерею. Броблема вот в чем: нужно чтобы он понял, что $result[galloc] - это путь к файлу. Дело в том, что galloc находится в nuke_album_categories и нужно его как-то дописать в $result. Ссылка отображается правельно, имена файлов тоже да и места под картинки есть, нет только самих картинок =). Помоги пожалуйста.

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

Wind
04.04.2006, 01:00
нашел еще один косяк, которй срочно надо исправлять. когда добавляешь несколько фоток сразу методом поиска по папке, то он пишет , что всего скажем 40 файлов в галереи, а возле самих категорий в которые добавлял количество файлов не меняет. как исправить?

Wind
06.04.2006, 01:05
Как на главной странице этой галереи сделать внизу еще один отдельный блок как бы? то есть там блок с logo и блок с категориями, а мне нужен еще один ниже. Пытался сделать так: создавал файл last.php в папке с модулем album с таким вот содержанием:
<?php
require_once("mainfile.php");
$module_name = basename(dirname(__FILE__));
get_lang($module_name);
include("header.php");
OpenTable();
echo "тест";
CloseTable();
include("footer.php");
?>
а потом только куда не дописвал строчку
include("modules/Album/last.php"); то есть действовал по типу, как в модуле news работатю комментарии, но ничего не вышло.
Как и что надо сделать?

Wind
22.04.2006, 18:59
взываю о помощи!!! читаем выше.

Soniks
25.04.2006, 21:37
Wind если вы будите инклудить вайл в скрипт то, вызов стандарных функций нюки не нужно делать, достаточно просто
<?php
OpenTable();
echo "тест";
CloseTable();
?>
если не выводит данное слово, то значит, что в то место кода куда вы вставляете инклуд, там не проходит скрипт, смотрите синтаксис

Wind
28.04.2006, 15:43
Ничего не понимаю! Soniks , вот смотри: в конце в файле index.php такой код
break;
default:
galleryHeader();
include("modules/Album/public/mainGallery.php");
viewcats();
break;
}
Я добавляю include("modules/Album/public/last.php");

break;
default:
galleryHeader();
include("modules/Album/public/mainGallery.php");
include("modules/Album/public/last.php");
viewcats();
break;
}
В файле last.php
<?php
OpenTable();
echo "тест";
CloseTable();
?>
как ты и сказал без стандартных функции нюки.

После этого все работает, но блок с надписью тест появляется над блоком с категориями, а не под ним. Это почему так? я же написал
include("modules/Album/public/mainGallery.php");
include("modules/Album/public/last.php");
а не
include("modules/Album/public/last.php");
include("modules/Album/public/mainGallery.php");
и сторчка include("modules/Album/public/mainGallery.php"); отвечает как я понял как раз таки за блок с категориями, так как если его закомментировать он пропадает.

Wind
28.04.2006, 19:54
И еще вопрос: Вот сделал блок , который отображает 4 последние добавленные картинки в галерею, вернее который должен был отображать 4 картинки, а он почему-то только 1 показывает (последнию). Вот код:

<?php

if (eregi("block-Advertising.php",$_SERVER[PHP_SELF])) {
Header("Location: ../index.php");
exit;
}

global $prefix, $db;

$pic = mysql_fetch_array(mysql_query("SELECT p.pid, p.img, p.gid, c.galloc FROM

$prefix"._Album_pictures." AS p LEFT JOIN $prefix"._Album_categories." AS c ON

c.gallid=p.gid order by p.pid DESC limit 4 "));

{
$content .= "<center><img src=\"modules/Album/album/$pic[galloc]/$pic[img]\"

width=\"140\"><br><br></center>";
}

?>

Я же указал order by p.pid DESC limit 4. Где ошибка?

Soniks
01.05.2006, 13:29
Wind После этого все работает, но блок с надписью тест появляется над блоком с категориями, а не под ним. Это почему так? я же написал

скорее всего в файле mainGallery.php идет не вывод информации вна экран через функции echo или print, а передача в переменную или вообще там содержаться фунуциии, а весь текст выводиться в функции viewcats();, попробуйте под ней добавить инклуд
Я же указал order by p.pid DESC limit 4. Где ошибка?
ошибка в том, что функция mysql_fetch_array выводит массив только одной строки извлеченной с таблицы, поэтому нужен цикл:

$row = mysql_query("SELECT p.pid, p.img, p.gid, c.galloc FROM $prefix"._Album_pictures." AS p LEFT JOIN $prefix"._Album_categories." AS c ON c.gallid=p.gid order by p.pid DESC limit 4 ");
while($pic = mysql_fetch_array($row))
{
$content .= "<center><img src=\"modules/Album/album/$pic[galloc]/$pic[img]\" width=\"140\"><br><br></center>";
}

linky
08.05.2006, 11:54
Вот я настроил под себя это "Чудо", но мне нужна одна функция хорошая. У меня один раздел, а файлов очень много загружается туда, и мне нужно чтобы каждый файл загружался под своим порядковым номером. Это реально сделать? =\
Допустим, у меня есть файлы
1.jpg
347hisdbvbgds.gif
1.jpg

Вот, мне нужно чтобы файл загрузился под номером(ID). Или например, чтобы имя остовалось прежнее, а префикс добавлялся с номером файла... т.е. чтобы получилось:
1_1.jpg
2_347hisdbvbgds.gif
3_1.jpg
...итд...

Просто не хочу чтобы файлы заменялись =\
Мне всё что нужно, это чтобы у меня тама всегда порядок был... тоесть ничего не пропало ,и всё хорошо работало)
Помагите пожалуйста... лично сам всё перерыл, нигде не нашёл такую функцию =((((((

а! вот ещё можно чтобы каждый снимок был в отдельной папке... а папка допустим, с названием Id картинки... не подскажете как это сделать? =\

De_Adarius
13.06.2007, 12:34
На главной странице модуля Album выводятся последние добавленные картинки, но выводятся они там не в виде превьюшек, а в виде полноразмерных картинок, уменьшенных до определенного размера. Как сделать так, чтобы выводились превьюшки либо вообще отключить показ последних добавленных?