我预计20分钟后大约4个小时, 我将决定用一些新的wordpress主题设置砖石结构, 我决定最好寻求帮助。
我的Masonry可以很好地处理在我的html模型站点中加载的图像, 这是精简的html代码。
<
!doctype html>
<
html>
<
head>
<
meta charset="utf-8">
<
script src="http://www.srcmini.com/imagesloaded.pkgd.min.js">
<
/script>
<
script src="http://www.srcmini.com/masonry.pkgd.min.js">
<
/script>
<
/head>
<
body>
<
div class="masonry-container js-masonry"data-masonry-options='{ "isFitWidth": true }'>
<
div class="block-wrapper">
content<
/div>
<
div class="block-wrapper">
content<
/div>
<
div class="block-wrapper">
content<
/div>
<
/div>
<
!-- end masonry-container js-masonry -->
<
script>
var container = document.querySelector('.masonry-container');
var msnry;
// initialize Masonry after all images have loaded
imagesLoaded( container, function() {
msnry = new Masonry( container );
});
<
/script>
<
/body>
<
/html>
问题:
如何与Wordpress配合使用?到目前为止我尝试过的
我在googs上可以想到的一切。 (我数了40个以上的标签页试图找到答案)这是我开始时的简单变化。
在functions.php中(函数中绝对没有其他内容)
function enqueue_masonry() {
wp_enqueue_script('masonry');
}
add_action('wp_enqueue_scripts', 'enqueue_masonry');
在footer.php中(已加载图片)
<
script>
var container = document.querySelector('.masonry-container');
var msnry;
// initialize Masonry after all images have loaded
imagesLoaded( container, function() {
msnry = new Masonry( container );
});
<
/script>
<
/body>
在index.php中(也尝试从functions.php而不是html中初始化)
<
div class="masonry-container js-masonry"data-masonry-options='{ "isFitWidth": true }'>
在header.php中
<
?php wp_head();
?>
<
/head>
笔记
- 所有插件已禁用
- 它是一个自定义的父主题
- 函数目前为空, 但上面没有写
- wordpress版本4.2.2, 在js文件夹中确认砌筑
- 我读过ImagesLoaded内置在wordpress的Masonry中
这很明显
#1答案我自己的问题最尴尬的简单答案是我忘了包含< ?php wp_footer(); 。 ?> 在footer.php文件中。
但是第二天, 我发现没有像人们期望的那样从页脚启动ImagesLoaded, 因此此答案已经过重新编辑以显示如何使ImagesLoaded正常工作。
我应该注意, Masonry是从html页内选项方法正确启动的, 但是帮助文件没有显示使用相同的页内方法启动ImagesLoaded的方法。
背景故事(一些可能会被他人使用的信息)
第二天, 在将一些带有缩略图的测试帖子添加到测试博客后, 我发现ImagesLoaded尚未初始化, 并且所有块彼此重叠。
然后, 我发现尝试使用footer.php中的Javascript甚至初始化Masonry也不起作用。
又过了一两个小时, 试图弄清楚为什么两个脚本都无法从footer.php或header.php初始化, 我放弃了, 回到了这个建议。
【如何获取Masonry和图像以与WordPress一起使用】..为什么不只是将其添加到.js文件中, 并使其与砌筑脚本具有加载依赖关系而入队?然后, 你不必通过挂钩将jQuery代码手动添加到页眉/页脚。然后, 我又找到了这个问题和答案, 如何使砖石和Imageloaded工作正确。 (wordpress), 并附有如何执行此操作的说明。
因此, 多亏了这两个人, 我将再次对其进行编辑, 并向你展示如何使Wordpress与Masonry一起正常工作, 并且它是内置的ImagesLoaded。
如何在你的Wordpress主题中添加Masonry的一种方法目标
- 在你的wordpress主题上安装Masonry使其行为类似于Pinterest。
- 使页面居中。
- 为了防止在每个块元素的顶部重叠/重叠。
- 当前的Wordpress版本(3.9?至4.2.2+)与Masonry打包在一起。
- 位置-wp-includes / js / masonry.min.js
- 此Wordpress版本的Masonry包含内置的ImagesLoaded。
- Masonry不再需要Jquery, 尽管我可以找到的唯一方法来在Wordpress中初始化它需要一点。
// to use scripts with wordpress they must first be enqueued
function enqueue_scripts() {
wp_enqueue_script('masonry');
wp_enqueue_script('masonryloader', get_stylesheet_directory_uri() . '/js/TaS-masonryInitializer.js', array( 'masonry', 'jquery' ) );
}
add_action('wp_enqueue_scripts', 'enqueue_scripts');
笔记
- 因为Wordpress可能会使用其他脚本, 而你安装的插件可能依赖于其他某些脚本, 因此” 排队脚本” 是Wordpress管理所有脚本的方式, 以免彼此冲突。我会详细介绍, 但我没有资格这样做。
- 你可能会在其他一些网站上看到一些示例, 这些示例表明你必须先注册Masonry。事实并非如此, 因为它已包含在Wordpress中, 因此已经注册。
- 我们要在此处查找的两个脚本是Masonry, 其次是用于初始化Masonry的小脚本。
- jQuery也被作为一个小初始化程序脚本的依赖项而入队。
创建一个名为” js” 的文件夹
在该文件夹中, 创建一个名为TaS-masonryInitializer.js的文件
- 它应该看起来像这样/wp-content/themes/yourThemeName/js/TaS-masonryInitializer.js
(function( $ ) {
"use strict";
$(function() {
// set the container that Masonry will be inside of in a var
// adjust to match your own wrapper/container class/id name
var container = document.querySelector('.masonry-container');
//create empty var msnry
var msnry;
// initialize Masonry after all images have loaded
imagesLoaded( container, function() {
msnry = new Masonry( container, {
// adjust to match your own block wrapper/container class/id name
itemSelector: '.block-wrapper', // option that allows for your website to center in the page
isFitWidth: true
});
});
});
}(jQuery));
笔记
- 这一步是初始化Masonry和ImagesLoaded并调整Masonry的选项
- 如前所述, ImagesLoaded内置在Wordpress版本的Masonry中, 因此无需像直接在html站点上那样将其分别放入functions.php中。
- 用来测量每个图像的高度, 并且包含在其中的图像加载块可以防止在确定这些高度之前加载Masonry。此暂停/顺序允许砌筑正确地计算每个块的高度。如果你使用height, 这一点很重要。像许多自适应设计一样在你的图像上显示。
- 假设你的页面宽度是自适应的并且设置为100%/不固定, Masonry需要确定100%实际能够将你的网站居中在页面上的宽度。选项” isFitWidth” :true是完成此操作的方法。在这里阅读更多关于它的信息
- 你可以通过让Masonry选择第一个图块的宽度并将其应用为列宽来分配列宽, 也可以按照此页面在选项中明确说明列宽。
- .masonry-container是容器的类, 该容器将你要按照Masonry行为表现的所有块包裹起来
- 如果你更喜欢#masonry-container, 它也可以是ID
- 它可以是任何名称, 只需确保在上述功能中对其进行了调整
- 上面的代码取自” 我如何使Masonry和Imagesloaded工作正确” 。 (wordpress)以及Masonry自身的说明
<
div class="masonry-container js-masonry">
<
div class="block-wrapper">
content<
/div>
<
div class="block-wrapper">
content<
/div>
<
div class="block-wrapper">
content<
/div>
<
/div>
<
!-- end masonry-container js-masonry -->
笔记
- 类” masonry-container” 可以是类或id, 并且可以是你选择的任何名称, 只需确保在TaS-masonryInitializer.js文件中对其进行调整
- 据我回忆, Masonry必须找到” js-masonry” 类才能找到开头的div, 并且如果不干预脚本本身就无法重命名。
- 每个分类为” block-wrapper” 的div都是要应用Masonry对齐效果的不同块元素。
- ” block-wrapper” (例如” Masonry容器” )可以是你选择的任何名称, 并且可以是id或class。
确保在结束标记之前包含wp_footer()。
<
?php wp_footer();
?>
<
/body>
<
/html>
笔记
- wp_footer由wordpress使用, 只需一次操作即可在页面上启用脚本。你在functions.php中排队的脚本已挂接到wp_footer中。 (不好意思, 我敢肯定我在那儿误用了两个词)
确保你有..
<
?php wp_head();
?>
< / head> 之前
并且由于当今大多数人可能正在将Masonry用作移动友好的网站, 因此请确保包含以下代码(同样, 在head和/ head之间)以使内容在移动浏览器上正常工作。
<
meta name="viewport" content="width=device-width, initial-scale=1">
如果我有任何误解和错误, 请让我知道, 我将尝试纠正它们。
大卫·德桑德罗(David DeSandro)的疯狂道具, 他写了一个很好的剧本。查看他的网站, 他还创建了其他一些邪恶的东西。
推荐阅读
- 如何在一行中显示logo和标题()
- 如何从WordPress中的URL获取ID [关闭]
- 无关紧要的。我喜欢简洁的文档,就像那
- 统的重要组成部分。设计一个你自己
- zabbix-redis/memcache监控/邮件分级报警及nginx自治愈
- 增强你的个人能力, 也能帮助构建和开发
- Linux防火墙之firewalld
- Linux 用户文件属性等相关练习
- g4j2 接连报了几个重大,好在我们的系