Logikos
03-02-2006, 07:49 AM
I would like to create a simple category tree using the vbulletin templates. Seems though I can't add a bit template to a bit template which would both be part of the main template. I'll try to explaine better...
Database Setup for table Categories with the following fields:
id, title, description, and display order. I have 3 Categories inserted that I'm testing with.
Category 1
Category 2
Category 3
I have another table setup called items with the following fields:
id, catid, title, description, and display order. I have 6 items inserted that I'm testing with.
Item 1 (catid1)
Item 2 (catid1)
Item 3 (catid1)
Item 4 (catid2)
Item 5 (catid2)
Item 6 (catid3)
Now with this code it would work right obvisoulsy because I'm just echoing:
$var1data = $db->query_read("
SELECT *
FROM " . TABLE_PREFIX . "category
");
while ($var1 = $db->fetch_array($var1data))
{
echo "<b>" . $var1['title'] . "</b><br />";
$var2data = $db->query_read("
SELECT *
FROM " . TABLE_PREFIX . "items
WHERE catid = $var1[id]
");
while ($var2 = $db->fetch_array($var2data))
{
echo "----<i>" . $var2['title'] . "</i><br />";
}
}
What will display the following:
Category 1
------ Item 1
------ Item 2
------ Item 3
Category 2
------ Item 4
------ Item 5
Category 3
------ Item 6
Though adding this to the templates like that would mean using 3 templates. A main template that will hold the main code and the category bit variable, the category bit template, which would hold the item bit variable, and the item bit template that would hold the item info. Like so...
$var1data = $db->query_read("
SELECT *
FROM " . TABLE_PREFIX . "category
");
while ($var1 = $db->fetch_array($var1data))
{
eval('$Categories .= "' . fetch_template('categories') . '";');
$var2data = $db->query_read("
SELECT *
FROM " . TABLE_PREFIX . "items
WHERE catid = $var1[id]
");
while ($var2 = $db->fetch_array($var2data))
{
eval('$Items .= "' . fetch_template('items') . '";');
}
}
eval('print_output("' . fetch_template('maintemplate') . '");');
But that won't work because I'm adding a bit variable inside another templatebit. Anyone know what can be done to do something like this. The screenshot it what I'm trying to get out of this. Thanks!! :)
I think using the cache system would be a better approach
Database Setup for table Categories with the following fields:
id, title, description, and display order. I have 3 Categories inserted that I'm testing with.
Category 1
Category 2
Category 3
I have another table setup called items with the following fields:
id, catid, title, description, and display order. I have 6 items inserted that I'm testing with.
Item 1 (catid1)
Item 2 (catid1)
Item 3 (catid1)
Item 4 (catid2)
Item 5 (catid2)
Item 6 (catid3)
Now with this code it would work right obvisoulsy because I'm just echoing:
$var1data = $db->query_read("
SELECT *
FROM " . TABLE_PREFIX . "category
");
while ($var1 = $db->fetch_array($var1data))
{
echo "<b>" . $var1['title'] . "</b><br />";
$var2data = $db->query_read("
SELECT *
FROM " . TABLE_PREFIX . "items
WHERE catid = $var1[id]
");
while ($var2 = $db->fetch_array($var2data))
{
echo "----<i>" . $var2['title'] . "</i><br />";
}
}
What will display the following:
Category 1
------ Item 1
------ Item 2
------ Item 3
Category 2
------ Item 4
------ Item 5
Category 3
------ Item 6
Though adding this to the templates like that would mean using 3 templates. A main template that will hold the main code and the category bit variable, the category bit template, which would hold the item bit variable, and the item bit template that would hold the item info. Like so...
$var1data = $db->query_read("
SELECT *
FROM " . TABLE_PREFIX . "category
");
while ($var1 = $db->fetch_array($var1data))
{
eval('$Categories .= "' . fetch_template('categories') . '";');
$var2data = $db->query_read("
SELECT *
FROM " . TABLE_PREFIX . "items
WHERE catid = $var1[id]
");
while ($var2 = $db->fetch_array($var2data))
{
eval('$Items .= "' . fetch_template('items') . '";');
}
}
eval('print_output("' . fetch_template('maintemplate') . '");');
But that won't work because I'm adding a bit variable inside another templatebit. Anyone know what can be done to do something like this. The screenshot it what I'm trying to get out of this. Thanks!! :)
I think using the cache system would be a better approach