0 Пользователей и 1 Гость просматривают эту тему.
  • 11 Ответов
  • 6805 Просмотров
*

den_caruk

  • Захожу иногда
  • 64
  • 2 / 0
Есть скрипт вывода изображений из папки, но когда путь к папке прописать статически  в переменную $dir, то картинки отображаются только на главной странице сайта. Как можно прописать универсальный путь templates/vistula/images/mini/  в переменную $dir?
Код
<?php
   $root =  JPATH_SITE;
    $dir = $root . '/templates/vistula/images/mini/';  // Папка с изображениями
  $cols = 14; // Количество столбцов в будущей таблице с картинками
  $files = scandir($dir); // Берём всё содержимое директории
  echo "<table>"; // Начинаем таблицу
  $k = 0; // Вспомогательный счётчик для перехода на новые строки
  for ($i = 0; $i < count($files); $i++) { // Перебираем все файлы
    if (($files[$i] != ".") && ($files[$i] != "..")) { // Текущий каталог и родительский пропускаем
      if ($k % $cols == 0) echo "<tr>"; // Добавляем новую строку
      echo "<td>"; // Начинаем столбец
      $path = $dir.$files[$i]; // Получаем путь к картинке
      echo "<a href='$path'>"; // Делаем ссылку на картинку
      echo "<img src='$path' alt='' width='100' />"; // Вывод превью картинки
      echo "</a>"; // Закрываем ссылку
      echo "</td>"; // Закрываем столбец
      /* Закрываем строку, если необходимое количество было выведено, либо данная итерация последняя */
      if ((($k + 1) % $cols == 0) || (($i + 1) == count($files))) echo "</tr>";
      $k++; // Увеличиваем вспомогательный счётчик
    }
  }
  echo "</table>"; // Закрываем таблицу
?>  
« Последнее редактирование: 18.05.2013, 22:49:53 от den_caruk »
*

den_caruk

  • Захожу иногда
  • 64
  • 2 / 0
Re: Вывести изображения из папки
« Ответ #1 : 18.05.2013, 22:48:54 »
Пробовал еще так выводить
Код
 $dir = $_SERVER['DOCUMENT_ROOT'] . '/templates/vistula/images/mini/' ; 
тоже не пашет
*

doctorgrif

  • Давно я тут
  • 745
  • 82 / 1
  • Нудный доктор
Re: Вывести изображения из папки
« Ответ #2 : 19.05.2013, 10:06:12 »
Пробовал еще так выводить
Код
 $dir = $_SERVER['DOCUMENT_ROOT'] . '/templates/vistula/images/mini/' ; 
тоже не пашет
вместо
Код
$_SERVER['DOCUMENT_ROOT'] 
используй
Код
$mosConfig_absolute_path
либо
Код
$mosConfig_live_site
Омск-Екатеринбург-Челябинск...Feldzug gen Westen | Кафедра | GrayBox | Joostina 1.2.1 | Joostina Extensions | In Vino Veritas [в работе]
*

den_caruk

  • Захожу иногда
  • 64
  • 2 / 0
Re: Вывести изображения из папки
« Ответ #3 : 19.05.2013, 12:15:27 »
Спасибо за ответ.
Используя
Код
$_SERVER['DOCUMENT_ROOT']
и
Код
$mosConfig_absolute_path
обработка идет, но картинки не выводятся

вот пример обработки
Код
<img src='Z:\home\site.com\www/templates/vistula/images/mini/Alior-Bank_partnermaly.jpg' alt='' width='100' />

слеши в разные стороны.....
*

den_caruk

  • Захожу иногда
  • 64
  • 2 / 0
Re: Вывести изображения из папки
« Ответ #4 : 19.05.2013, 17:22:04 »
По идее такой скрипт должен заменить все обратные слеши
Код
define('IRB_ROOT', str_replace('\\', '/', $_SERVER['DOCUMENT_ROOT']).'/');
Код
$mosConfig_absolute_path
делает тоже самое, что и
Код
$_SERVER['DOCUMENT_ROOT'])
слеши я исправил, но изображения все равно не выводятся, в путях проблема.
я дошел до такого
Код
<img src='Z:/home/site.com/www/templates/vistula/images/mini/Alior-Bank_partnermaly.jpg' alt='' width='100' />
а нужно, чтобы выводило
Код
<img src='http://site.com/templates/vistula/images/mini/Alior-Bank_partnermaly.jpg' alt='' width='100' />
Пробовал также через
Код
$mosConfig_live_site
выбивает такую ошибку
Код
<b>Warning</b>:  scandir(http://vistula.com/templates/vistula/images/mini/) [<a href='function.scandir'>function.scandir</a>]: failed to open dir: not implemented in <b>Z:\home\vistula.com\www\templates\vistula\index.php</b> on line <b>106</b><br />
<script language=JavaScript src='/denwer/errors/phperror_js.php'></script><!--error--><br />
<b>Warning</b>:  scandir() [<a href='function.scandir'>function.scandir</a>]: (errno 2): No such file or directory in <b>Z:\home\vistula.com\www\templates\vistula\index.php</b> on line <b>106</b><br />
<script language=JavaScript src='/denwer/errors/phperror_js.php'></script><table><tr><td><a href='http://vistula.com/templates/vistula/images/mini/'><img src='http://vistula.com/templates/vistula/images/mini/' alt='' width='100' /></a></td></tr></table>
« Последнее редактирование: 19.05.2013, 21:07:06 от den_caruk »
*

doctorgrif

  • Давно я тут
  • 745
  • 82 / 1
  • Нудный доктор
Re: Вывести изображения из папки
« Ответ #5 : 20.05.2013, 16:05:55 »
не могу понять, где затык
зачем отдельный скрипт для слешей, если это делается переменной из ядра?
универсальный вывод из папки с изображениями:
Код
$mosConfig_live_site.'/images/your_path
либо если картинки в папке шаблона
Код
$mosConfig_absolute_path.'/templates/'.$mainframe->getTemplate().'/images/your_img
mosConfig_absolute_path выдаст именно Z:/home/site.com/www/...
а mosConfig_live_site - http://site.com/
и зачем изобретать велосипед? есть mod_random_image посмотри как организован вывод там

ну и так, для себя, а разве JPATH_SITE есть в joostina? :) может именно в этом проблема?
Омск-Екатеринбург-Челябинск...Feldzug gen Westen | Кафедра | GrayBox | Joostina 1.2.1 | Joostina Extensions | In Vino Veritas [в работе]
*

den_caruk

  • Захожу иногда
  • 64
  • 2 / 0
Re: Вывести изображения из папки
« Ответ #6 : 20.05.2013, 18:22:39 »
В модуле random image
пути прописаны через
Код
// construct absolute path to directory
$abspath_folder = JPATH_BASE . $folder;
у меня joostina 1.3 на официальном сайте говорят что это последняя стабильная версия и тут есть JPATH_BASE
Эта функция делает тоже самое что и mosConfig_live_site
если их вывести echo "JPATH_BASE"; или echo"mosConfig_live_site"; то выводится правильный путь
обработчик пишет, что проблема с функцией scandir. Видно, что он доходит до конечной папки, и не может просканировать, может что то тут не так с настройками PHP
Но, если прописать путь
Код
templates/vistula/images/mini/
  то показывает, но только на главной странице
*

den_caruk

  • Захожу иногда
  • 64
  • 2 / 0
Re: Вывести изображения из папки
« Ответ #7 : 21.05.2013, 00:05:00 »
Еще более простой код вывода изображений
Код
<?php
$root =$mosConfig_live_site . '/mini/' ;
foreach (scandir($root) as $im)
{
if ($im == '.' || $im == '..') continue;
$rez= '<img src=  "'.$root.'' .$im.'"   /><br />';
echo $rez;
}
?>
что же тут может быть не так??
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 731 / 7
  • Все начинается с Value
Re: Вывести изображения из папки
« Ответ #8 : 21.05.2013, 01:11:56 »
FireBug должен показать путь к картинке. 99% что ошибка в пути. Можно и так: папка /mini/ в корне сайта
$rez= '<img src=  "/mini/'.$im.'"   /><br />';
и парочку примеров Ищу расширение изменяющее background сайта при обновлении странички
*

den_caruk

  • Захожу иногда
  • 64
  • 2 / 0
Re: Вывести изображения из папки
« Ответ #9 : 21.05.2013, 01:40:42 »
FireBug должен показать путь к картинке. 99% что ошибка в пути. Можно и так: папка /mini/ в корне сайта
$rez= '<img src=  "/mini/'.$im.'"   /><br />';
и парочку примеров Ищу расширение изменяющее background сайта при обновлении странички


так как вы указали, работает, но только для главной страницы. SEF компонент жустины генерирует так ссылки, что для внутренних страниц ссылки на картинку получаются типа
Код
http://site.com/content/view/29/45/templates/vistula/images/mini/demo.jpg
а изображения находятся по адресу
Код
http://site.com/templates/vistula/images/mini/demo.jpg
получается, что надо подвязать этот скрипт под жустину указав универсальный адрес, типа 
Код
$root =$mosConfig_live_site . '/templates/vistula/images/mini/' ;
но, если взять
Код
 echo $root;
то покажет
Код
http://site.com/content/view/29/45/templates/vistula/images/mini/
но, доходит до scandir и выдает ошибку....
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 731 / 7
  • Все начинается с Value
Re: Вывести изображения из папки
« Ответ #10 : 21.05.2013, 01:50:41 »
rez= '<img src=  "/templates/vistula/images/mini/'.$im.'"   /><br />';
Или править SEF компонент
*

den_caruk

  • Захожу иногда
  • 64
  • 2 / 0
Re: Вывести изображения из папки
« Ответ #11 : 21.05.2013, 14:48:01 »
Вот рабочий код mod random image
Код
// if folder includes livesite info, remove
if ( strpos($folder,JPATH_SITE) === 0 ) {
$folder = str_replace( JPATH_SITE, '', $folder );
}
// if folder includes absolute path, remove
if ( strpos($folder, JPATH_BASE) === 0 ) {
$folder= str_replace( JPATH_BASE, '', $folder );
}
// if folder doesnt contain slash to start, add
if ( strpos($folder, '/')!== 0 ) {
$folder = '/'. $folder;
}
// construct absolute path to directory
$abspath_folder = JPATH_BASE . $folder;
// check if directory exists
if (is_dir($abspath_folder)) {
if ($handle = opendir($abspath_folder)) {
while (false !== ($file = readdir($handle))) {
if ($file != '.' && $file != '..' && $file != 'CVS' && $file != 'index.html' ) {
$the_array[] = $file;
}
}
}
closedir($handle);

foreach ($the_array as $img) {
if (!is_dir($abspath_folder .'/'. $img)) {
if (preg_match("/".$type."/i", $img)) {
$the_image[] = $img;
}
}
}

if (!$the_image) {
echo _NO_IMAGES;
}else {

$count = count($the_image);
$i=0;
$k=1;

$pics = array();

foreach ($the_image as $v) {

if(!$rotate_type) {
$random = mt_rand(0, $count - 1);
$v = $the_image[$random];
$image_name = $v;
}

$abspath_image = $abspath_folder . '/'. $v;
$size = getimagesize ($abspath_image);

if ($width == '') {
($size[0] > 100 ? $width = 100 : $width = $size[0]);
}

if ($height == '') {
$coeff = $size[0]/$size[1];
$height = (int) ($width/$coeff);
}

$image = JPATH_SITE . $folder . '/' . $v;

if(!$rotate_type) {
break;
} else {
if($img_pref) {
if(strpos($v, $img_pref)!==false) {
$pics[$i]='["'.$image.'", "'.$link.'", "_self"]';
$i++;
}
}
else {
$pics[$i]='["'.$image.'", "'.$link.'", "_self"]';
$i++;
}
}
}
switch ($rotate_type) {
case '0':
default:
?><div class="random_image">
<?php if ($link) { ?>
<a href="<?php echo $link; ?>" target="_self">
<?php } ?>
<img src="<?php echo $image; ?>" border="0" width="<?php echo $width; ?>" height="<?php echo $height; ?>" alt="<?php echo $image_name; ?>" />
<?php if ($link) { ?>
</a>
<?php } ?>
</div>

тут все выводится через
Код
JPATH_SITE
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[решено] Как в шаблоне вывести разные элементы страницы?

Автор Ag1r

Ответов: 2
Просмотров: 1860
Последний ответ 03.04.2009, 12:10:11
от Ag1r