2013-01-10 111 views
0

我在我的WordPress主题的home.php文件中创建了这个脚本,用于计算与数字(1.408)相关的div宽度的值。此操作为我提供了结果(在$chars变量内)以建立用于响应式设计摘录的字符数。如果div更大或更薄,我的WordPress摘录中会有不同数量的字符。WordPress摘录 - Javascript - PHP - Ajax?

这是我在HOME.PHP上发布的代码。 Javascript后面跟着PHP代码片段。 我知道PHP内部的JavaScript变量是不可能没有Ajax(在其他论坛上阅读),但我不明白究竟要做什么。我的代码不太好。请清楚,如果可能的话,一些例子!

<script type='text/javascript'> 
jQuery(document).ready(function() { 
var $myDiv = jQuery('#last_post_img_text'); 
var $results = jQuery('#results'); 
var $chars = jQuery($myDiv.outerWidth()/1.408); 
</script>  

<?php new_excerpt($chars); ?> 
+0

那你到底在问什么? –

+0

如何让这个变量$ chars在PHP代码中工作。我认为Ajax是必要的,但不知道如何。或者,如果可能知道如何使用PHP来获得DIV宽度(所以,没有Javascript,也许我可以跳过这个问题?) – user1966524

+0

您必须明白,JS在客户端工作,而php在服务器端。所以PHP文件呈现页面的源代码,然后在用户浏览器中呈现。然后你用JS访问已经呈现的元素。 如果你想要加载一个内容,请检查它的长度,然后将其剪下来,你需要.ajax加载一个php文件,其中包含一个可以让php文件返回更多或更少“字符”的变量。 –

回答

0

我会建议一种方法: 加载一个页面,检查判断元素的宽度和高度,然后使用$ .ajax加载元素内容,并发送某种变量来决定使用多少个字符。 如果你想做到这一点在WordPress的方式了解:

add_action('wp_ajax_$handlename', 'function_to_run'); 
add_action('wp_ajax_nopriv_$handlename', 'function_to_run'); 

将reposnd到你的Ajax请求。

wp_enqueue_script('theme_js', get_bloginfo('template_url') . '/js/jquery-theme.js', array('jquery'), THEME_VERSION, false); 
$protocol = isset($_SERVER["HTTPS"]) ? 'https://' : 'http://'; 
$params = array('ajaxurl' => admin_url('admin-ajax.php', $protocol) ); 
wp_localize_script('theme_js', 'theme_js', $params); 

这可能来方便,如果你不知道如何WP-ajax.php本地化发送到jQuery的$就要求。

+0

非常感谢Marcin! ;-) – user1966524

+0

如果您喜欢答案,请将其投票并标记为正确。它有助于社区成长:)。 –

0

用Ajax重新加载评论看起来是一个不好的决定。你为什么要继续重新加载没有真正改变的内容。我认为你最好的选择是使用jQuery插件。

一个似乎做你想要的是http://www.bramstein.com/projects/text-overflow/

或者,您可以查看CSS3属性的“文本溢出”(http://www.w3schools.com/cssref/css3_pr_text-overflow.asp)。

+0

有什么问题与评论有关? –

+0

糟糕,你说得对。当然我想说节选!要点是,如果你有一个响应式设计,页面的形状因子可能会多次改变。示例:如果我重新调整浏览器的大小,但不想重新加载内容,而是改为操作它。 –