2010-10-14 4 views
0

Я настраиваю горизонтально прокручивающийся сайт, с Index Exhibit. В одном разделе должно быть видео, которое я не могу настроить в бэкэнде Indexhibit CMS (где он будет добавлять его к ширине большого div), поэтому мне нужно добавить его в файл генерации PHP. В принципе, он должен проверить, присутствует ли элемент с идентификатором vid. Если это так, он должен добавить vid_width и vid_right_padding к окончательной ширине, final_img_container. Если нет, его следует оставить без внимания. Веб-сайт с видео можно найти здесь: http://www.allisonnavon.com/index.php?/projects/the-alka-seltzer-challenge/ Как вы можете видеть здесь, ширина идеальна, но когда загружаются другие страницы, в правом конце каждого проекта есть 800 дополнительных пикселей.PHP, если элемент существует, добавьте ширину; if not, do not

Вот код:

<?php if (!defined('SITE')) exit('No direct script access allowed'); 

/** 
* Horizontal Format 
* 
* Exhbition format 
* Originally created for SharoneLifschitz.com 
* 
* @version 1.1 
* @author Vaska 
*/ 

$DO = new Horizontally; 

$exhibit['exhibit'] = $DO->createExhibit(); 
$exhibit['dyn_css'] = $DO->dynamicCSS(); 

class Horizontally 
{ 
    // PADDING AND TEXT WIDTH ADJUSTMENTS UP HERE!!! 
    var $picture_block_padding_right = 25; 
    var $text_width = 250; 
    var $text_padding_right = 75; 
    var $vid_width = 800; 
    var $vid_padding_right = 25; 
    var $final_img_container = 0; // do not adjust this one 

    function createExhibit() 
    { 
     $OBJ =& get_instance(); 
     global $rs; 

     $pages = $OBJ->db->fetchArray("SELECT * 
      FROM ".PX."media, ".PX."objects_prefs 
      WHERE media_ref_id = '$rs[id]' 
      AND obj_ref_type = 'exhibit' 
      AND obj_ref_type = media_obj_type 
      ORDER BY media_order ASC, media_id ASC"); 

     if (!$pages) return $rs['content']; 

     $s = ''; $a = ''; $w = 0; 
     $this->final_img_container = ($rs['content'] != '') ? ($this->text_padding_right + $this->text_width + $this->vid_padding_right + $this->vid_width) : 0; 

     foreach ($pages as $go) 
     { 
      $title = ($go['media_title'] == '') ? '' : "<div class='title'>" . $go['media_title'] . "</div>"; 
      $title .= ($go['media_caption'] == '') ? '' : "<div class='caption'>" . $go['media_caption'] . "</div>"; 

      $temp_x = $go['media_x'] + $this->picture_block_padding_right; 
      $this->final_img_container += ($go['media_x'] + $this->picture_block_padding_right); 

      $a .= "<div class='picture_holder' style='width: {$temp_x}px;'>\n"; 
      $a .= "<div class='picture' style='width: {$go[media_x]}px;'>\n"; 
      $a .= "<img src='" . BASEURL . GIMGS . "/$go[media_file]' width='$go[media_x]' height='$go[media_y]' alt='" . BASEURL . GIMGS . "/$go[media_file]' />\n"; 
      $a .= "<div class='captioning'>$title</div>\n"; 
      $a .= "</div>\n"; 
      $a .= "</div>\n\n"; 
     } 

     $s .= "<div class='text'><div class='scroller'><span><a href='javascript:void(0);' class='prev'>&laquo;</a></span><span class='title'><a href='javascript:void(0);' class='origin'><%title%></a></span><span><a href='javascript:void(0);' class='next'>&raquo;</a></span></div><div id='img-container'>\n"; 
     if ($rs['content'] != '') $s .= "<div id='text'>" . $rs['content'] . "</div>\n"; 
     $s .= $a; 
     $s .= "<div style='clear: left;'><!-- --></div>"; 
     $s .= "</div></div>\n"; 

     return $s; 
    } 


    function dynamicCSS() 
    { 
     return "#img-container { width: " . ($this->final_img_container + 1) . "px; } 
#img-container #text { float: left; width: " . ($this->text_width + $this->text_padding_right) . "px; } 
#img-container #text p { width: " . $this->text_width . "px; } 
#img-container #vid { float: left; width: " . ($this->vid_width + $this->vid_padding_right) . "px; } 
#img-container #vid p { width: " . $this->vid_width . "px; } 
#img-container .picture_holder { float: left; } 
#img-container .picture { /* padding-top: 10px; */ } 
#img-container .captioning .title { margin-top: 12px; font-weight: bold; } 
#img-container .captioning .caption { font-family:PerspectiveSansItalic; 
    font-size:11px; color: #444; padding-top: 10px;}"; 
    } 
} 

ответ

1

Не лучше ли, чтобы исправить это с помощью JavaScript, когда страница загружается?

Просто найдите div с id "vid" и добавьте в него правый css. Что-то вроде:

$(function() { 
    $("div#vid").load(function() { 
     $(this).addClass("whateverclassyouwanttoadd"); 
    }) 
} 

Я не гуру jquery, но я думаю, что это решит вашу проблему.

Только некоторые сиденоды: я считаю, что лучше держать свою презентацию от вашей бизнес-логики. Поэтому работайте со стилями, чтобы разметка HTML и добавление классов в ваш HTML в ваших представлениях/бизнес-логике.

Только мои 2 цента

Удачи вам!

+0

Я бы сделал что-то подобное, но главная проблема заключается в том, что это горизонтально прокручиваемый сайт. Ширина главного div должна быть установлена ​​динамически в соответствии со всеми изображениями в базе данных, что отлично. Но если я добавлю видео и добавлю javascript к нему класс, чтобы дать ему больше дополнений/нет, общая ширина не будет изменена, поэтому изображения на конце будут перенесены на следующую строку. – steve

+0

Хотя, теперь, когда я об этом думаю ... Я мог бы проверить JS на 'div # vid', и если он существует, добавьте дополнительную ширину в общий div. Вы думаете, что это сработает? – steve

+0

Я думал то же самое, когда читал ваш первый комментарий. Есть только один способ узнать: Попробуйте :) –