@@ -49,7 +49,7 @@ class Pages
49
49
/**
50
50
* @var array|string[]
51
51
*/
52
- protected $ baseUrl = [];
52
+ protected $ baseRoute = [];
53
53
54
54
/**
55
55
* @var array|string[]
@@ -120,47 +120,69 @@ public function base($path = null)
120
120
if ($ path !== null ) {
121
121
$ path = trim ($ path , '/ ' );
122
122
$ this ->base = $ path ? '/ ' . $ path : null ;
123
- $ this ->baseUrl = [];
123
+ $ this ->baseRoute = [];
124
124
}
125
125
126
126
return $ this ->base ;
127
127
}
128
128
129
129
/**
130
130
*
131
- * Get base URL for Grav pages.
131
+ * Get base route for Grav pages.
132
132
*
133
- * @param string $lang Optional language code for multilingual links.
134
- * @param bool $absolute If true, return absolute url, if false, return relative url. Otherwise return default.
133
+ * @param string $lang Optional language code for multilingual routes.
135
134
*
136
135
* @return string
137
136
*/
138
- public function baseUrl ($ lang = null , $ absolute = null )
137
+ public function baseRoute ($ lang = null )
139
138
{
140
- $ lang = (string ) $ lang ;
141
- $ type = $ absolute === null ? 'base_url ' : ($ absolute ? 'base_url_absolute ' : 'base_url_relative ' );
142
- $ key = "{$ lang } {$ type }" ;
143
-
144
- if (!isset ($ this ->baseUrl [$ key ])) {
145
- /** @var Config $config */
146
- $ config = $ this ->grav ['config ' ];
139
+ $ key = $ lang ?: 'default ' ;
147
140
141
+ if (!isset ($ this ->baseRoute [$ key ])) {
148
142
/** @var Language $language */
149
143
$ language = $ this ->grav ['language ' ];
150
144
151
- if (!$ lang ) {
152
- $ lang = $ language ->getActive ();
153
- }
145
+ $ path_base = rtrim ($ this ->base (), '/ ' );
146
+ $ path_lang = $ language ->enabled () ? $ language ->getLanguageURLPrefix ($ lang ) : '' ;
154
147
155
- $ path_append = rtrim ($ this ->grav ['pages ' ]->base (), '/ ' );
156
- if ($ language ->getDefault () !== $ lang || $ config ->get ('system.languages.include_default_lang ' ) === true ) {
157
- $ path_append .= $ lang ? '/ ' . $ lang : '' ;
158
- }
148
+ $ this ->baseRoute [$ key ] = $ path_base . $ path_lang ;
149
+ }
150
+
151
+ return $ this ->baseRoute [$ key ];
152
+ }
159
153
160
- $ this ->baseUrl [$ key ] = $ this ->grav [$ type ] . $ path_append ;
154
+ /**
155
+ *
156
+ * Get route for Grav site.
157
+ *
158
+ * @param string $route Optional route to the page.
159
+ * @param string $lang Optional language code for multilingual links.
160
+ *
161
+ * @return string
162
+ */
163
+ public function route ($ route = '/ ' , $ lang = null )
164
+ {
165
+ if (!$ route || $ route === '/ ' ) {
166
+ return $ this ->baseRoute ($ lang ) ?: '/ ' ;
161
167
}
162
168
163
- return $ this ->baseUrl [$ key ];
169
+ return $ this ->baseRoute ($ lang ) . $ route ;
170
+ }
171
+
172
+ /**
173
+ *
174
+ * Get base URL for Grav pages.
175
+ *
176
+ * @param string $lang Optional language code for multilingual links.
177
+ * @param bool|null $absolute If true, return absolute url, if false, return relative url. Otherwise return default.
178
+ *
179
+ * @return string
180
+ */
181
+ public function baseUrl ($ lang = null , $ absolute = null )
182
+ {
183
+ $ type = $ absolute === null ? 'base_url ' : ($ absolute ? 'base_url_absolute ' : 'base_url_relative ' );
184
+
185
+ return $ this ->grav [$ type ] . $ this ->baseRoute ($ lang );
164
186
}
165
187
166
188
/**
@@ -179,7 +201,7 @@ public function homeUrl($lang = null, $absolute = null)
179
201
180
202
/**
181
203
*
182
- * Get home URL for Grav site.
204
+ * Get URL for Grav site.
183
205
*
184
206
* @param string $route Optional route to the page.
185
207
* @param string $lang Optional language code for multilingual links.
@@ -189,7 +211,7 @@ public function homeUrl($lang = null, $absolute = null)
189
211
*/
190
212
public function url ($ route = '/ ' , $ lang = null , $ absolute = null )
191
213
{
192
- if ($ route === '/ ' ) {
214
+ if (! $ route || $ route === '/ ' ) {
193
215
return $ this ->homeUrl ($ lang , $ absolute );
194
216
}
195
217
0 commit comments