# Directories
As the essential part, Directories are the system's main body; they represent the structure of dynamic routes and hold the content of related web pages so that everything shown in the e-commerce is a part of one or more directories or placed underneath one.
Directory is a Laravel model that extends Eloquent BaseModel to manage the content of directories existing in the system. Let's take a shallow look at the properties and relationships of the Directory class.
# Directories properties table
Num | Property | Datatype | Description |
---|---|---|---|
1 | id | integer | Primary key. |
2 | title | string | Specifies the title of the directory. |
3 | url_part | string | url_part is the title or URL style title of a specific directory which is referring just to that directory and not containing it's parents or is children. |
4 | url_full | string | url_full A title or URL style title is a list that refers to the entire directory and includes its parents or children. |
5 | url_landing | string | Stores the landing path or landing address of a specific page. |
6 | is_internal_link | boolean | Specifies that a directory is pointing to an internal link1 or not. |
7 | is_anonymously_accessible | boolean | It is a boolean that will be visible to the public if its value is "true" and will not be visible to the public if it is "false". |
8 | has_discount | boolean | Specifies whether the discount is set for directory products. |
9 | has_web_page | boolean | Specifies if the directory has a viewable web page. |
10 | priority | integer | Specifies the priority of a page. |
11 | content_type | integer | Stores the contents of the directory, which are three types. You can see them at the bottom of the table. |
12 | directory_id | integer | Specifies the parent of a the directory. |
13 | created_at | DateTime | Specifies directory creation date. |
14 | updated_at | DateTime | Specifies directory update date. |
15 | show_in_navbar | boolean | Specifies whether a directory is displayed in the navbar by displaying it if the boolean value is "true" and does not display it if it is "false". |
16 | show_in_footer | boolean | Specifies whether a directory is displayed in the footer by displaying it if the boolean value is "true" and does not display it if it is "false". |
17 | show_in_app_navbar | boolean | Specifies whether a directory is displayed in the app navbar by displaying it if the boolean value is "true" and does not display it if it is "false". |
18 | cover_image_path | string | Specifies the cover image of each directory. |
19 | is_location_limited | boolean | Specifies the restriction of sales of some products for the provinces. |
20 | description | string | Specifies the product directory description. |
21 | cmc_id | integer | CMC (Customer Meta Category), checks whether information should be taken from the customer when buying the product or not purchasing the product. |
22 | force_show_landing | boolean | Specifies whether this directory is displayed on the landing page by default or non-landing. |
23 | inaccessibility_type | integer | Shows the different ways you deal with the non-existence of this directory. |
24 | notice | string | Specifies a notification for each product in the directory. |
NOTE: Example of URL part and URL full:
directory
is the url_part
for the directory.
/path/to/the/specific/directory
/path/to/the/specific/directory
is the url_full
for the directory.
/path/to/the/specific/directory
NOTE: content_type
stores the contents of the directory, which are three types. You can see them below:
namespace App\Models\Enums;
use App\Utils\Common\BaseEnum;
class DirectoryType extends BaseEnum
{
const REAL=1;
const BLOG=2;
const PRODUCT=3;
}
2
3
4
5
6
7
8
9
10
11
# Relationship directory table
A Directory
has some relationships with other entity types existing in the system as shown below:
Num | Property | Datatype | Description |
---|---|---|---|
1 | parentDirectory | Directory | Shows the parent directory. |
2 | directories | Directory[] | Specifies hierarchically all the parents of a directory. |
3 | leafProducts | Product[] | Specifies product nodes that has a link from its parent node. |
4 | products | Product[] | Shows products connected to this directory. |
5 | leafArticles | Article[] | Specifies article nodes that has a link from its parent node. |
6 | articles | Article[] | Shows articles connected to this directory. |
7 | tags | Tag[] | Specifies tags. |
8 | badges | Badge[] | Specifies badges. |
9 | customerMetaCategory | CustomerMetaCategory | CMC (Customer Meta Category). |
10 | discountGroup | DiscountGroup | Specifies a price reduction plan for a directory products. |
# Show directory properties
$directory
and $web_page
variable is passed from the controller to the blade, and the content of the directory can be displayed using this variables.
NOTE: If you are considering to show the SEO contents in the web pages, It's important to know that seo_keywords
and seo_description
of each web page is stored in the $web_page
variable. So that if you want to get desired data use $directory->webPage
or $web_page
directly.
# getParentDirectories()
This function returns a list of parents to which the current directory belongs. Also, please note that the result list also consists of the current directory.
@foreach($directory->getParentDirectories() as $parentDirectory)
<li>
<a href="{{directory_url($parentDirectory)."/?landing=true"}}"
title="{{$parentDirectory->title}}">{{$parentDirectory->title}}
</a>
</li>
@endforeach
2
3
4
5
6
7
Below you can see three SEO-related functions that are obtained using the $web_page
object:
# getSeoDescription()
This function Shows the description related to seo.
<meta name="description" content="{{ $web_page->getSeoDescription() }}">
# getSeoKeywords()
This function shows the keywords related to seo.
<meta name="keywords" content="{{ $web_page->getSeoKeywords() }}">
# getSeoTitle()
This function shows the title related to seo.
<meta itemprop="name" content="{{ $web_page->getSeoTitle() }}">
# Reference
1. What are internal links? (opens new window)