I don’t know anything about your plugin, but why not put the OR in the PHP, similar to how WordPress checks for pages or posts:
<?php if(is_home() || is_single() || is_page()) {
whatever;
} ?>
Maybe you could put the logic in the PHP? I don’t understand what the plugin does, but the value in the database seems odd to me.
so, for your application:
<?php if ((bb_get_location == front-page) || (bb_get_location == topic-page)) {
give the ID;
} ?>
Yeah, I’m with chris on this one. SQL can’t determine what page you’re on. It can only get stuff from the DB. You’ll need to use php to figure out when to get the information from the db.
Okay, I changed the location value with:
is_front() || is_forum() || is_tag() || is_topic()
And changed the code with:
function get_bb_menu() {
global $bbdb;
$menutest = mysql_query("SELECT * FROM $bbdb->menu WHERE
set = 'active' ORDER BY
order ASC");
And re-written the li part with php:
<li><a <?php if ('location')
{
echo " id="current";
?>
href="<?php ('page'); ?>"><?php ('item'); ?></a>
<?php
}
?></li>
So technically I need to put this in a foreach and it wil be like:
<li><a <?php if (is_front() || is_forum() || is_tag() || is_topic())
echo " id="current"; ?>href="index.php">Forums</a> </li>
<li> <a href="search.php"> Search</a></li>
(the is_front() etc will not be shown ofcourse, but it’s to make it clear)
But how to make such a foreach?
Note: using id="current"
in this way is dodgy because plugins have to generate content that co-operates with other plugins.
If another plugin also uses id="current"
the page will not validate (because each ID (identity) should be unique).
You could just say id="X8VQm2_current"
but (a) it would look ugly and (b) regardless, you’re not changing the identity of the row, you’re just saying something about it, so using ID is still wrong.
The solution is easy: use class="current"
instead and adjust your css so that instead of #current {}
you use .current {}
The example I wrote for you before shows how to do it.
There is a painful habit of mis-using the id attribute among many theme designers and that makes it difficult to know what to do or why to do it
Well what I dont understand is that THIS works:
<li><a <?php if (is_front() || is_forum() || is_tag() || is_topic() || is_bb_feed() || is_bb_profile() || is_bb_favorites() || is_view())
{
echo "id="current"";
}?> href="index.php">Forums</a></li>
And this aint:
$current = ($rw['location']) ? ' id="current"' : '';
echo '<li ' . $first . '><a href="' . $rw['page'] . '"' . $current . '>' . $rw['item'] . '</a></li>';
Cause ($rw) will give: (is_front() || is_forum() || is_tag() || is_topic() || is_bb_feed() || is_bb_profile() || is_bb_favorites() || is_view()) too
It looks like your $rw["location"]
variable contains the text "(is_front() || is_forum() || is_tag() || is_topic() || is_bb_feed() || is_bb_profile() || is_bb_favorites() || is_view())"
Is that what you’re describing?
If so a ternary structure (the x?y:z
thing) won’t work because you need to give it a boolean value, so this may work…
$switch = eval("return ".$rw["location"]);
$current = ($switch ? ' id="current"' : "");
… but if that does work, then you seriously need to ask yourself why you have such code in a variable – why can’t it be evaluated first then the result put in the variable – and if you can’t come up with a cogent answer you need to rethink your code.
If that’s not what you’re describing then can you describe “not working” a bit better? Error messages and variable dumps help… or upload the source somewhere.
Thx going to try that, and well I am no programmer at all, learning along the way. It goes like: Hmm that would be cool for bbPress -> is it possible (YES) -> how to make it? (google ) -> try and error -> try and error -> try and error-> try and error -> getting fed up with it -> post help cry on this forum
I’ll learn along the way
And yes I want it this way, cause it’s only 1 record that looks so clumpsy, all others just have 1 record…
Hmm got this error now when entered your code:
Parse error: parse error, unexpected $ in /xxx/bbpress/my-plugins/bbmenu.php(123) : eval()’d code on line 1
Thats where the $switch begins…
If you want the beta of my plugin (for code), throw me an email and I will email it (got some uploading problems atm)
email: mauricederegt at gmail.com
Release early, release often. Release it as a non-working draft. Email is a hassle, and many eyes can benefit from the learning experience.
Okay, I’ll release bbMenu BETA 0.1 next week (I am on holiday this weekend) so we can all see the code and the way it works (it does work ) and I hope we can solve this problem I have…