Je suis en train de configurer un site de défilement horizontal, avec Index Exhibit. Une section doit avoir une vidéo, que je ne peux pas mettre en place dans le backend de Indexhibit CMS (où elle l'ajouterait à la largeur de la div), donc j'ai besoin de l'ajouter au fichier de génération PHP. Fondamentalement, il doit vérifier si un élément avec l'ID vid
est présent. Si c'est le cas, il faut ajouter les vid_width
et vid_right_padding
à la largeur finale, final_img_container
. Sinon, il devrait être omis. Le site Web avec la vidéo peut être trouvé ici: http://www.allisonnavon.com/index.php?/projects/the-alka-seltzer-challenge/ Comme vous pouvez le voir ici, la largeur est parfaite, mais quand d'autres pages sont chargées, il y a un énorme 800 pixels supplémentaires à l'extrémité droite de chaque projet.PHP si l'élément existe, ajouter de la largeur; sinon, ne pas
Voici le code:
<?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'>«</a></span><span class='title'><a href='javascript:void(0);' class='origin'><%title%></a></span><span><a href='javascript:void(0);' class='next'>»</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;}";
}
}
Je ferais quelque chose comme ça, mais le problème principal réside dans le fait qu'il s'agit d'un site de défilement horizontal. La largeur de la div principale doit être définie dynamiquement en fonction de toutes les images de la base de données, ce qui est bien. Mais si j'ajoute une vidéo et que javascript lui applique une classe pour lui donner plus de remplissage, la largeur globale ne sera pas modifiée, donc les images à la fin seront poussées à la ligne suivante. – steve
Bien que, maintenant que j'y pense ... je pourrais avoir JS vérifier 'div # vid', et si elle existe, ajouter une largeur supplémentaire à la div globale. Vous pensez que cela fonctionnerait? – steve
Je pensais la même chose quand j'ai lu votre premier commentaire. Il n'y a qu'une seule façon de le savoir: Essayez :) –