Difference between revisions of "Variables you can use in theme files"

From JReviews Documentation
Jump to: navigation, search
(Discovery through the Dump and Die function)
(Accessing data in the listing array)
Line 49: Line 49:
 
| <source lang="php"><?php echo $listing['Listing']['slug'];?></source> || Listing Alias
 
| <source lang="php"><?php echo $listing['Listing']['slug'];?></source> || Listing Alias
 
|-
 
|-
| <source lang="php"><?php echo $listing['Listing']['url'];?></source> || Listing URL. In Joomla you need to pass it through JRoute:_() to convert it into a SEF URL.
+
| <source lang="php"><?php echo $listing['Listing']['url'];?></source> || Listing URL. In Joomla you need to pass it through JRoute::_() to convert it into a SEF URL.
 
|-
 
|-
 
| <source lang="php"><?php echo $listing['Listing']['summary'];?></source> || Listing summary text
 
| <source lang="php"><?php echo $listing['Listing']['summary'];?></source> || Listing summary text

Revision as of 20:51, 7 February 2020

Discovery through the Dump and Die function

If are looking into customizing theme files, one important trick you should learn is the ability to look into a complex array to find out what its contents are so you can access those contents directly. Below we provide a list of common variables that can be used in theme files, but it's not meant to be exhaustive. Using this trick should get you further.

In the listing detail page you can add this code to the theme file to look into the $listing array. Of course this breaks the page, but the purpose is only to show you the contents of the array.

<?php dd($listing); ?>

If you want to access a piece of information deep inside the array, you can use the S2Array helper class with dot notation as follows:

<?php echo S2Array::get($listing, 'Listing.title'); ?>

In list pages (theme files), you can check the $listings array like this:

<?php dd($listings); ?>

Accessing data in the listing array

The $listing array contains a lot of useful information about a particular listing.

It is used in these files:

  • /listings/detail.thtml
  • /listings/detail_tabs.thtml
  • /listings/detail_compact.thtml
  • /listings/listings_blogview.thtml
  • /listings/listings_blogview_compact.thtml
  • /listings/listings_tableview.thtml
  • /listings/listings_thumbview.thtml
  • /listings/listings_masonry.thtml
  • /modules/listings.thtml

In these files you can add any data from the $listing array. Here is a list of the most commonly used variables.


<?php echo $listing['Listing']['listing_id'];?>
Listing ID
<?php echo $listing['Listing']['title'];?>
Listing Title
<?php echo $listing['Listing']['slug'];?>
Listing Alias
<?php echo $listing['Listing']['url'];?>
Listing URL. In Joomla you need to pass it through JRoute::_() to convert it into a SEF URL.
<?php echo $listing['Listing']['summary'];?>
Listing summary text
<?php echo $listing['Listing']['description'];?>
Listing description text
<?php echo $listing['Listing']['text'];?>
Summary + Description
<?php echo $listing['Listing']['media_count'];?>
Media count
<?php echo $listing['Listing']['photo_count'];?>
Photo count
<?php echo $listing['Listing']['video_count'];?>
Video count
<?php echo $listing['Listing']['audio_count'];?>
Audio count
<?php echo $listing['Listing']['attachment_count'];?>
Attachment count
<?php echo $listing['Listing']['hits'];?>
Number of visits
<?php echo $Time->nice($listing['Listing']['created']);?>
Created date
<?php echo $Time->nice($listing['Listing']['modified']);?>
Modified date
<?php echo $listing['Category']['cat_id'];?>
Category ID
<?php echo $listing['Category']['title'];?>
Category Title
<?php echo $listing['Category']['slug'];?>
Category Alias
<?php echo $listing['Directory']['dir_id'];?>
Directory ID
<?php echo $listing['Directory']['title'];?>
Directory Title
<?php echo $listing['ListingType']['listing_type_id'];?>
Listing Type ID
<?php echo $listing['User']['user_id'];?>
Listing author's ID
<?php echo $listing['User']['name'];?>
Listing author's real name
<?php echo $listing['User']['username'];?>
Listing author's username
<?php echo $listing['User']['email'];?>
Listing author's email
<?php echo $listing['Review']['user_rating'];?>
User rating
<?php echo $listing['Review']['user_rating_count'];?>
Number of user ratings
<?php echo $listing['Review']['user_review_count'];?>
Number of user reviews
<?php echo $listing['Review']['editor_rating'];?>
Editor rating
<?php echo $listing['Review']['editor_rating_count'];?>
Number of editor ratings
<?php echo $listing['Review']['editor_review_count'];?>
Number of editor reviews
<?php echo $listing['MainMedia']['media_info']['image']['url'];?>
Main Media URL
<?php echo $listing['Favorite']['favored'];?>
Number of users who added listing to their favorite list
<?php echo $listing['Claim']['approved'];?>
The listing's current claim status

Conditionals

You can use any of the above variables to create conditionals, for example:

<?php if($listing['Review']['user_review_count']): // if user review exists ?>
  // display something
<?php else: ?>
  // display something else
<?php endif;?>

Accessing the Listing Type title

If you need to get the listing type title for a particular listing use the code below in listing detail pages:

<?php echo $this->listing_type->title;?>

In list pages or modules where there's more than one listing you need to access the title directly from the ListingTypes service container like this:

<?php echo $this->listing_type->getById($listing['ListingType']['listing_type_id'])['ListingType']['title'];?>

The code above can also be written in a more readable way shown below:

<?php
$listingTypeId = $listing['ListingType']['listing_type_id'];
$listingType = $this->listing_type->getById($listingTypeId);
echo $listingType['ListingType']['title'];
?>