我正在尝试将 PHP 脚本与 Joomla 2.5 中的 Flexslider 结合使用,以便能够从文件夹中自动加载幻灯片和缩略图滑块导航,而无需为每个幻灯片编写代码,如此处部分所述。
我尝试实现几种不同的方法,既针对 Joomla,也针对 PHP,但我觉得我没有正确地合并它们。
1)
$path = JPATH_COMPONENT;
2)
$path = JURI::root();
3)
$path = $_SERVER['DOCUMENT_ROOT'];
4)
<?php
define('ROOT_DIR', dirname(__FILE__));
define('ROOT_URL', substr($_SERVER['PHP_SELF'], 0, - (strlen($_SERVER['SCRIPT_FILENAME']) - strlen(ROOT_DIR))));
?>
如果有人可以向我展示如何使这些或其他方法中的任何一个很好用:
$imgdir = 'flex/demo/images/'; //Pick your folder
因此,Joomla 的子菜单项的一个假装 url 不会在不存在的目录中查找它,这太棒了。
如链接文章所示,我正在使用的整个脚本是通过 Jumi 卡住的,如下所示:
<link rel="stylesheet" href="flex/flexslider.css" type="text/css" media="screen" />
<!-- jQuery -->
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/libs/jquery-1.7.min.js">\x3C/script>')</script>
<!-- FlexSlider -->
<script defer src="flex/jquery.flexslider.js"></script>
<div id="slider" class="flexslider">
<?php
$imgdir = 'flex/demo/images/'; //Pick your folder
$allowed_types = array('jpg','jpeg','gif'); //Allowed types of files
$dimg = opendir($imgdir);//Open directory
while($imgfile = readdir($dimg))
{
if( in_array(strtolower(substr($imgfile,-3)),$allowed_types) OR
in_array(strtolower(substr($imgfile,-4)),$allowed_types) )
/*If the file is an image add it to the array*/
{$a_img[] = $imgfile;}
}
echo "<ul class=\"slides\" >";
$totimg = count($a_img); //The total count of all the images
//Echo out the images and their paths incased in an li.
for($x=0; $x < $totimg; $x++){echo "<li><img src='" . $imgdir . $a_img[$x] . "' /></li>";}
echo "</ul>";
echo "</div>";
echo "<div id=\"carousel\" class=\"flexslider\">";
echo "<ul class=\"slides\" >";
$totimg = count($a_img); //The total count of all the images
//Echo out the images and their paths incased in an li.
for($x=0; $x < $totimg; $x++){echo "<li><img src='" . $imgdir . $a_img[$x] . "' /></li>";}
echo "</ul>";
?>
</div>
<script>
$(window).load(function(){
$('#carousel').flexslider({
animation: "slide",
controlNav: false,
animationLoop: true,
slideshow: false,
itemWidth: 210,
itemMargin: 5,
asNavFor: '#slider'
});
$('#slider').flexslider({
animation: "slide",
controlNav: false,
animationLoop: true,
slideshow: true,
sync: "#carousel",
start: function(slider){
$('body').removeClass('loading');
}
});
});
</script>
更新-已解决
我最初的问题措辞有误,我无法获取正确的 URL,而不是图像的路径。在某些时候,它在我想要的图像目录和图像路径之间添加了一个 Joomla 生成的目录。出于某种原因,要么我没有正确解释,要么它似乎已经自行消失了。
我需要添加一个前导“/”,但它不允许我将它添加到该行中:
$imgdir = 'flex/demo/images/'; //Pick your folder
所以我通过改变这个来解决我的问题:
//Echo out the images and their paths incased in an li.
for($x=0; $x < $totimg; $x++){echo "<li><img src='" . $imgdir . $a_img[$x] . "' /></li>";}
echo "</ul>";
至:
//Echo out the images and their paths incased in an li.
for($x=0; $x < $totimg; $x++){echo "<li><img src='/" . $imgdir . $a_img[$x] . "' /></li>";}
echo "</ul>";
在这两种情况下,它出现在用于将 url 输出到 img src 的代码中。
希望这对其他人有帮助!