XF 1.4 "Create Pages for Categories" option for certain categories only

#3
Is there a creative way to do this in another way? For example, I tried using route filters to undo the category page link for the categories I didn't want pages for, although the route filter added a / on the end of my redirects and so it was an imperfect fix. Another way might be to remove the link functionality with a template edit.
 

Jake Bunce

XenForo moderator
Staff member
#4
This should be possible with an addon that extends the category route handler.

Or you can hack it with a file edit.

Untested, but it should work:

library/XenForo/Route/Prefix/Categories.php

Add the red code, and specify the list of node_ids in blue (ids which will have their own pages):

Rich (BB code):
	/**
	 * Method to build a link to the specified page/action with the provided
	 * data and params.
	 *
	 * @see XenForo_Route_BuilderInterface
	 */
	public function buildLink($originalPrefix, $outputPrefix, $action, $extension, $data, array &$extraParams)
	{
		// for situations such as an array with thread and node info
		if (isset($data['node_title']))
		{
			$data['title'] = $data['node_title'];
		}

		if ($data && isset($data['node_id']) && $data['depth'] === 0)
		{
			if (!XenForo_Application::get('options')->categoryOwnPage AND !in_array($data['node_id'], array(1,2,3)))
			{
				$prefix = XenForo_Link::buildPublicLink('forums', null, $extraParams);
				$extraParams = array();
				return new XenForo_Link(
					$prefix . '#' . XenForo_Link::buildIntegerAndTitleUrlComponent($data['node_id'], $data['title'], true)
				);
			}
		}

		return XenForo_Link::buildBasicLinkWithIntegerParam($outputPrefix, $action, $extension, $data, 'node_id', 'title');
	}
But a file edit will be overwritten when you upgrade XF.
 
Top