Two variables that are available in all templates are:
$visitor - This is like $bbuserinfo in vB. It is an array that contains values for the current logged in user. It pulls from the fields of the xf_user table. For example, you can use these references in the templates and in template conditionals:
{$visitor.user_id}
{$visitor.username}
{$visitor.user_group_id}
$xenOptions - This is like $vboptions in vB. It contains settings from the xf_option table in the database. The indexes are the option_id values from each record in that table. For example, here are some references that work in the templates and in template conditionals:
{$xenOptions.attachmentExtensions}
{$xenOptions.boardActive}
{$xenOptions.contactEmailAddress}
How To Find Other Variables
In xF the variables that are available to each template are explicitly defined in the code. All front end templates are called from this directory:
library/XenForo/ControllerPublic
There is a section below to help you find the relevant ControllerPublic file. For now we are just looking at a specific example. For example, the thread view pages use the thread_view template which is called from this file:
library/XenForo/ControllerPublic/Thread.php
Code:
$viewParams = array( 'thread' => $thread, 'forum' => $forum, 'nodeBreadCrumbs' => $ftpHelper->getNodeBreadCrumbs($forum), 'canReply' => $threadModel->canReplyToThread($thread, $forum), 'canQuickReply' => $threadModel->canQuickReply($thread, $forum), 'canEditThread' => $threadModel->canEditThread($thread, $forum), 'canDeleteThread' => $threadModel->canDeleteThread($thread, $forum, 'soft'), 'canMoveThread' => $threadModel->canMoveThread($thread, $forum), 'canWatchThread' => $threadModel->canWatchThread($thread, $forum), 'deletedPosts' => $deletedPosts, 'moderatedPots' => $moderatedPosts, 'inlineModOptions' => $inlineModOptions, 'posts' => $posts, 'page' => $page, 'postsPerPage' => $postsPerPage, 'totalPosts' => $thread['reply_count'] + 1, 'postsRemaining' => max(0, $thread['reply_count'] + 1 - ($page * $postsPerPage)), 'firstPost' => reset($posts), 'lastPost' => end($posts), 'unreadLink' => $unreadLink, 'poll' => $poll, 'attachmentParams' => $attachmentParams, 'attachmentConstraints' => $this->getModelFromCache('XenForo_Model_Attachment')->getAttachmentConstraints(), 'canViewAttachments' => $threadModel->canViewAttachmentsInThread($thread, $forum) ); return $this->responseView('XenForo_ViewPublic_Thread_View', 'thread_view', $viewParams); }
As an example, you can see thread and forum defined for use in this template, so you can use references like this in the thread_view template to access the current thread and forum records for the page:
{$thread.thread_id}
{$thread.title}
{$thread.view_count}
{$forum.node_id}
{$forum.title}
{$forum.message_count}
As you might expect, these records pull from the xf_thread and xf_forum tables in the database.
There are many other $viewParams defined here. If you don't know what all of the variables contain then you can debug them.
Debugging The $viewParams
To see what a particular variable contains you can use a template helper called dump.
Building on the previous example, we can debug $thread by adding this code to the thread_view template:
Code:
{xen:helper dump, $thread}
Code:
array(30) { ["thread_id"] => int(10906) ["node_id"] => int(2) ["title"] => string(11) "asdfasdfads" ["reply_count"] => int(0) ["view_count"] => int(32) ["user_id"] => int(1) ["username"] => string(5) "admin" ["post_date"] => int(1286739559) ["sticky"] => int(0) ["discussion_state"] => string(7) "visible" ["discussion_open"] => int(1) ["discussion_type"] => string(0) "" ["first_post_id"] => int(133983) ["first_post_likes"] => int(0) ["last_post_date"] => int(1286739559) ["last_post_id"] => int(133983) ["last_post_user_id"] => int(1) ["last_post_username"] => string(5) "admin" ["thread_read_date"] => int(1286739559) ["thread_is_watched"] => int(0) ["lastPostInfo"] => array(4) { ["post_date"] => int(1286739559) ["post_id"] => int(133983) ["user_id"] => int(1) ["username"] => string(5) "admin" } ["canInlineMod"] => bool(true) ["canEditThread"] => bool(true) ["isNew"] => bool(false) ["hasPreview"] => bool(true) ["isRedirect"] => bool(false) ["isDeleted"] => bool(false) ["isModerated"] => bool(false) ["titleCensored"] => bool(true) ["lastPageNumbers"] => bool(false) }
Code:
{xen:helper dump, $visitor}
Using Debug Mode To Find The Relevant ControllerPublic File
Enable debug mode on your forum by adding this line to your library/config.php file:
Code:
$config['debug'] = 1;
Timing: 0.2365 seconds Memory: 9.117 MB DB Queries: 11
Scroll to the bottom of the debug output where included files are listed. Look for the library/XenForo/ControllerPublic file.
Related Links
Here is a guide for identifying the root template of a page if you don't know the name of the template you are looking for.
No comments:
Post a Comment