Search Results for 'code'
-
Search Results
-
OK, here’s the functions.php file that I created in my theme to reproduce the drop down menu I had on my WordPress side.
Please note that this code does not attempt to reproduce all of the functionality of the WordPress wp_list_pages() function. Rather, it just tries to create the HTML needed for the drop down menu code that came with my WordPress theme to work. If you need anything more than that, feel free to modify this or strike out on your own.
Overview
Before the code, just a quick overview of how it works.
The function bb_list_pages() is a recursive function that returns a string containing the HTML for all of the pages that descend from a particular ancestor. The process is started by calling it with a parent ID of 0. The way the wp_posts table in WP is designed, this returns the highest level.
The function calls a helper function called get_pages() to retrieve the list of child pages from the database. It then loops through all of the pages returned by get_pages() & constructs the list item & anchor tags. It then calls itself to build the HTML for any descendants of the current page.
Here’s the code:
<?php
/**
* This file contains useful functions that can be called in any of the template's files.
*
* Version 1.0
* Date: 23-July-2009
* Author: Tony Vitabile
*/
function curPageURL() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "/".$_SERVER["SERVER_NAME"];
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= ":".$_SERVER["SERVER_PORT"];
}
$pageURL .= $_SERVER["REQUEST_URI"];
return $pageURL;
}
/**
* Compute the name of the WordPress pages table & return it
*/
function pages_table() {
global $bb;
// Compute the name of the table we need to query
$table = $bb->wp_table_prefix;
if ($bb->wordpress_mu_primary_blog_id != "")
$table .= $bb->wordpress_mu_primary_blog_id."_";
$table .= "posts";
return $table;
}
/**
* Retrieve a list of pages from the WordPress posts table whose parent has the ID
* passed to this function.
*
* @param int $parent ID of the page that is the parent of the ones we're searching for
* @return array List of pages matching defaults or $args
*/
function get_pages($parent = 0) {
global $bbdb;
// Compute the name of the table we need to query
$table = pages_table();
// Build our query string
$parent = (int) $parent;
$query = "SELECT * FROM {$table} WHERE post_type = 'page' AND post_status = 'publish' AND post_parent = {$parent} ORDER BY menu_order";
// Get an array of rows back from the database
$pages = $bbdb->get_results($query);
// Return whatever we got back to the caller
return $pages;
}
/**
* Simple function to recursively scan the WordPress posts table looking for pages.
* It builds a string consisting of <ul><li></li>...</ul> items.
*
* @param int $parent ID of the parent page. 0 = no parent
* @param int $depth How far down in the heirarchy to go
* @param string $thisPage The name of the page that is currently being displayed
* @returns string A <ul><li></li>...</ul> list of page navigation information
*/
function bb_list_pages($parent = 0, $depth=0, $parent_uri='', $indent=' ') {
// Initialize the output of the function
$output = "";
// Is the depth = 0?
if ($depth == 0) {
// It is. Return the empty string now
return $output;
}
// Get the child rows of $parent
$pages = get_pages($parent);
// Did we get any pages back?
if ( empty($pages) ) {
// No, we didn't. Return the empty string now
return $output;
}
// Yes, we got pages back. Loop through all of the pages in our results
foreach ( $pages as $page ) {
// Compute this page's URI
$page_uri = $parent_uri;
if (substr($page_uri, -1) != '/')
$page_uri .= "/";
$page_uri .= $page->post_name . "/";
// Build the <li> tag
$output .= "{$indent}<li class="page_item page-item-{$page->ID}";
if ($page_uri == curPageURL() ) {
$output .= " current_page_item";
}
$output .= "">";
// Now build the rest of this item's information
$output .= "<a href="{$page_uri}">".$page->post_title."</a>n";
if ($page->ID > 0) {
// Get this page's children recursively
$kids = bb_list_pages($page->ID, $depth -1, $page_uri, '', $thisPage, $indent . " ");
// Does this page have any children?
if ($kids <> "") {
// It does. Add the information for the kids surrounded by <ul></ul> tages
$output .= "{$indent}<ul>n" . $kids . "{$indent}</ul>n";
}
}
// Output the closing </li>
$output .= "</li>";
}
// Return the string to the caller
return $output;
}
?>Tony
I’m very happy with the way my bbPress them has turned out. I’ve even managed to fix my drop down menus so they work — my function that spits out the
- …
tags was putting the before the
- tag for the level below. Once I fixed the placement of the tag, they worked great.
My problem at this point is when I view a topic, my IP address shows up beneath my gravatar. That’s not in the code in topic.php. I believe it’s coming from the call to do_action(‘under_title’). This seems to be the only place that the gravatars can come into the post, as there doesn’t seem to be anything in the topic.php file related to them.
Any ideas are appreciated.
Tony
Topic: Profile page not loading!
I’ve got my forum set in German and had some trouble displaying various characters, so I followed a few hints in various topics around here and set my database collocation from utf-8_general_ci to utf-8_bin.
That in itself didn’t change the problem – that didn’t disappear until I converted the front-page.php from being encoded in ANSI to being encoded in utf-8. Since that took care of the problem, I converted all other files I’d been using lately (profile, topic, etc) to utf-8, figuring that it was my mistake for not having notepad++ set properly when I started out with it.
Everything is now displaying properly except for the profile page which simply will not load. I am getting timeout errors, e.g.
Fatal error: Maximum execution time of 30 seconds exceeded in … /forum/bb-includes/functions.bb-formatting.php on line 257
or
Fatal error: Maximum execution time of 30 seconds exceeded in …/forum/bb-includes/backpress/functions.plugin-api.php on line 136
or
Fatal error: Maximum execution time of 30 seconds exceeded in …/forum/bb-includes/functions.bb-core.php on line 844
If I hit refresh, it shows up with a different line in any of those files. They all have something to do with the encoding, from what I can see.
So I changed back the database collation, and converted the files into ANSI again, and deactivated any plugin that directly links into the profile page (the subscribe to topics plugin). No change. No profile. Still the same error messages.
Could anyone point me into the right direction of where to look? If there’s anything more you need to know, I’ll gladly mail the details.
Hi and hello.!
In my forum.php I use the following lines to show different content based on the forum-id:
<?php if ( $forum_id == '2' ) : ?>
blablabla
<?php elseif ( $forum_id == '3' ) : ?>
blablabla1
<?php else : ?>
blablabla2
<?php endif; ?>Now, I need to show different content inside the topics (topic.php) based on witch forum the topic is posted in. For example if the topic is posed in forum_id 2, I would like to show “this post was posted in forum_id 2…”
Any idea what I might use to make this come thru? I am running bbPress 1.1.
– Thanks!