- Joomla: определение главной страницы
- The Joomla! Forum™
- home page check
- home page check
- Re: home page check
- Re: home page check
- Re: home page check
- Re: home page check
- Re: home page check
- The Joomla! Forum™
- using php if else statement. (Solved)
- using php if else statement. (Solved)
- Re: using php if else statement.
- Re: using php if else statement.
- Re: using php if else statement.
- Re: using php if else statement.
- Re: using php if else statement. (Solved)
- Re: using php if else statement.
- Re: using php if else statement.
- Re: using php if else statement.
- Joomla! Developer Network™
- PHP Code
- About
- Coding Standards
- Client Side Syntax Style Guides
- Appendices
- General
- Including Code
- E_STRICT Compatible PHP Code
- Global Variables
- Error Surpression
- Control Structures (General Code)
- An if-else Example
- A do-while Example
- A for Example
- A foreach Example
- A while Example
- A switch example
- A try catch example
- Mixed language usage (e.g. at the layout files)
- Example Control Structures
- References
- Concatenation Spacing
- Arrays
- Code Commenting
- Comment Docblocks
- Function Calls
- Function Definitions
- Closures / Anonymous functions
- Class Definitions
- Class Property DocBlocks
- Class Method DocBlocks
- Class Definition Example
- Naming Conventions
- Classes
- Functions and Methods
- Namespaces
- Constants
- Regular Variables and Class Properties
- Exception Handling
- Logic Exceptions
- Runtime Exceptions
- Documenting exceptions
- SQL Queries
Joomla: определение главной страницы
Чтобы в Joomla вывести какие-либо данные только на главной странице сайта (например, рекламу Sape), надо эту главную как-то определить программно. Порывшись на просторах интернета, я нашел такой кусок кода:
Этот код функционирует, но с ошибками. Если несколько пунктов меню ссылаются на главную, то, соответственно, работать не будет. Так что этот код использовать не рекомендуется!
Правильным является такой подход:
Если у вас главная страница — это, допустим, список материалов или список товаров, тогда попробуйте так (в 2.5 работает точно):
Суровый русский тимлид. Жил в Магадане, в офисе московских веб студий и в Тульской деревне. Виртуозно знает WordPress, PHP, ООП, Vue.js и вот это вот все.
Делает крутые высоконагруженные сайты, поэтому уже почти захватил весь рынок WordPress разработки в России. Не дает никому делать сайты без спроса.
Ведет блог о разработке, дайджест в телеграмме и в ВК.
Щас редко что то вешается только на главную страницу. Сейчас все блоки сквозные.
Кто это вам сказал? Присмотритесь даже к этому сайту )
Спасибо. про метатеги напиши. например как автогенерировать их из текста, если нет прописанных тегов для статьи
Кто вам сказал, что joomla может быть только в корне проекта? Может же быть в каталоге, например, site.ru/joomla/
А что вам мешает добавить соответстующие строки в данную конструкцию?
Смысл ставить костыли, когда в API все уже предусмотрено?
Смысл напрягать API, тратя дополнительные ресурсы и память, ради простейшей операции?
У нас с вами разные взгляды на жизнь, делайте как вам удобно, никто не запрещает, я всегда следую API
Вы совершенно правы, я стараюсь никогда не следовать чужому API, именно из за взглядов на жизнь. Особенно, я категорически отказываюсь следовать API Joomla, ибо считаю что лишний раз пинать этого «слона» с монстроподобной архитектурой из роутеров, контроллеров, валидаторов и т.д. ради определения главной страницы это как минимум не профессионально. Когда у вас будет 500+ проектов на жумле под присмотром, вы то-же начнёте обращать внимание на подобные мелочи. Особенно когда они все на одном VDS. Что вы знаете о этих методах JRequest::getVar или JUri::base() ? Сколько происходит лишних обращений к БД, сколько происходит лишних операций i/o на диск? Сколько выделяется дополнительно памяти для свойств этих классов? Вот например про суперглобальную переменную $_SERVER всё известно, она и так уже существует в любом случае…
The Joomla! Forum™
home page check
home page check
Post by igd » Wed Feb 25, 2009 2:27 pm
Re: home page check
Post by ooffick » Wed Feb 25, 2009 3:11 pm
the simplest one would be to do the following:
Re: home page check
Post by igd » Wed Feb 25, 2009 9:22 pm
Re: home page check
Post by andpatton » Wed Jun 16, 2010 10:43 pm
I recently wanted to do a home page check in a template for a site that didn’t use the ‘frontpage’ view, which made Olaf’s method inapplicable.
There’s a fairly easy way to do a more robust check, however, one that checks what the default menu item is and if it’s the current menu item, rather than just checking if it’s the frontpage view:
Re: home page check
Post by safani » Sun Jan 09, 2011 6:26 pm
I have been searching the forums and have yet to find an answer to my particular issue. I need to have a php if and else statement that will output certain javascript if joomla is on a certain page only. The page is not the home page, so I can’t use that code. I have looked for ways to filter to whatever page you want, but to no avail.
If page is 2nd menu link, then print these javascripts in head, else do not print javascipts.
Re: home page check
Post by andpatton » Mon Jan 10, 2011 3:34 pm
The Joomla! Forum™
using php if else statement. (Solved)
using php if else statement. (Solved)
Post by gmarr6 » Wed Aug 01, 2007 1:10 am
I hope I ask this question correctly.
Is there a way to use an If Statement to check for the frontpage?
I would like to use a different Div structure for my front page. So, I was hoping there was a way to use php and an If/Else statement to check if I am on the frontpage.
Re: using php if else statement.
Post by AmyStephen » Wed Aug 01, 2007 1:43 am
Welcome to Joomla! gmarr6,
Re: using php if else statement.
Post by nightingale2k1 » Wed Aug 01, 2007 1:55 am
gmarr6 wrote: I hope I ask this question correctly.
Is there a way to use an If Statement to check for the frontpage?
I would like to use a different Div structure for my front page. So, I was hoping there was a way to use php and an If/Else statement to check if I am on the frontpage.
Re: using php if else statement.
Post by gmarr6 » Wed Aug 01, 2007 4:25 am
thank you
gmarr6
Re: using php if else statement.
Post by Lottario » Wed Aug 01, 2007 1:20 pm
Re: using php if else statement. (Solved)
Post by viper_iii » Mon Aug 25, 2008 11:56 pm
Helped me as well..
used the name field but same difference..
get(‘name’);
if ($user_id)
<
?>
Created special module just for the members.
changing user6 to pubhead
Re: using php if else statement.
Post by samy4movies » Tue Dec 21, 2010 6:55 pm
AmyStephen wrote: Welcome to Joomla! gmarr6,
Hi Amy,
I tried the code above but I received an error T_ENDIF,
My case is that I try to redirect the if option saying to go to welcome.php if this is the frontpage or do_nothing.php when is different.
So I don’t know what it went wrong?
Thanks,
Samy
Re: using php if else statement.
Post by viper_iii » Wed Dec 22, 2010 4:37 pm
AmyStephen wrote: Welcome to Joomla! gmarr6,
Hi Amy,
I tried the code above but I received an error T_ENDIF,
My case is that I try to redirect the if option saying to go to welcome.php if this is the frontpage or do_nothing.php when is different.
So I don’t know what it went wrong?
Thanks,
Samy
what are you looking to do.
Sounds like if you hit the home page you want to display another page completely?
why not try a popup load on first run or just change the home page? Not quite sure I understand the redirect.
My particular case was:
if user = logged in display header A
if user = public (not registered) display header B
All relative to a particular module position as well for my particular setup.
Re: using php if else statement.
Post by samy4movies » Wed Dec 22, 2010 5:58 pm
AmyStephen wrote: Welcome to Joomla! gmarr6,
Hi Amy,
I tried the code above but I received an error T_ENDIF,
My case is that I try to redirect the if option saying to go to welcome.php if this is the frontpage or do_nothing.php when is different.
So I don’t know what it went wrong?
Thanks,
Samy
what are you looking to do.
Sounds like if you hit the home page you want to display another page completely?
why not try a popup load on first run or just change the home page? Not quite sure I understand the redirect.
My particular case was:
if user = logged in display header A
if user = public (not registered) display header B
All relative to a particular module position as well for my particular setup.
Hi viper,
Thanks for looking on my request.
#1. I have a virtual person (me) that give the welcome to any visitor for the first time.
#2. Then I want to cancel if the visitor is coming back, so I don’t need to show the welcome for the first time visitors but instead a «thanks for coming back»
And #3 I want to avoid that the pop-up movie it doesn’t re-play in every single page that I open.
Joomla! Developer Network™
PHP Code
About
Coding Standards
Client Side Syntax Style Guides
Appendices
The Joomla! CMS switched in Version 4.2.0 from its own coding standard to the PSR-12 (and later to PER Coding Style) coding standard.
This document applies to Joomla! to delimit PHP code, not the shorthand. This is the most portable way to include PHP code on differing operating systems and setups.
For files that contain only PHP code, the closing tag ( ?> ) should not be included. It is not required by PHP. Leaving this out prevents trailing white space from being accidentally injected into the output that can introduce errors in the Joomla session (see the PHP manual on Instruction separation).
Files should always end with a blank new line.
General
PHP keywords MUST be in lower case.
The PHP constants true , false , and null MUST be in lower case.
Including Code
Anywhere you are unconditionally including a file, use require_once . Anywhere you are conditionally including a file (for example, factory methods), use include_once . Either of these will ensure that files are included only once. They share the same file list, so you don’t need to worry about mixing them. A file included with require_once will not be included again by include_once .
include_once and require_once are PHP language statements, not functions. The correct formatting is:
require_once JPATH_COMPONENT . ‘/helpers/helper.php’;
You should not enclose the filename in parentheses.
E_STRICT Compatible PHP Code
As of Joomla version 1.6 and for all versions of the Joomla Platform, adhering to object oriented programming practice as supported by PHP 5.3+ is required. Joomla is committed to progressively making the source code E_STRICT.
Global Variables
Global variables should not be used. Use static class properties or constants instead of globals, following OOP and factory patterns.
Error Surpression
The use of the @ for Error Surpression should be avoided and limited to use when no other approach or workaround is available.
Control Structures (General Code)
For all control structures there is a space between the keyword and an opening parenthesis, then no space either after the opening parenthesis or before the closing bracket. This is done to distinguish control keywords from function names. All control structures must contain their logic within braces.
For all all control structures, such as if , else , do , for , foreach , try , catch , switch and while , both the keyword starts a newline and the opening and closing braces are each put on a new line.
Exclamation mark ! , the logical operator not used in a condition, should not have spaces before or after the exclamation mark as shown in the examples.
An if-else Example
If a control structure goes over multiple lines, all lines must be indented with one tab and the closing brace must go on the same line as the last parameter.
A do-while Example
A for Example
A foreach Example
A while Example
A switch example
When using a switch statement, the case keywords are indented. The break statement starts on a newline assuming the indent of the code within the case.
A try catch example
Mixed language usage (e.g. at the layout files)
For layout files and all files where we use a mix of PHP and HTML (all PHP files in the view/tmpl and layout folder) we additionally wrap every line into a block and use the alternative syntax for control structures. This should make the code easier to read and make it easier to move blocks around without creating fatal errors due to missing tags.
Example Control Structures
An if-else Example
References
When using references, there should be a space before the reference operator and no space between it and the function or variable name.
In PHP 5, reference operators are not required for objects. All objects are handled by reference.
Concatenation Spacing
There should always be a space before and after the concatenation operator (‘.’). For example:
If the concatenation operator is the first or last character on a line, both spaces are not required. For example:
Arrays
Assignments (the => operator) in arrays may be aligned with spaces. When splitting array definitions onto several lines, the last value should also have a trailing comma. This is valid PHP syntax and helps to keep code diffs minimal. Joomla 3 prefers array() to be backward compatible to 5.3.10 and Joomla 4.0.0 onwards should use the short array syntax [] by default. (Short array syntax was introduced in PHP 5.4.)
Code Commenting
Inline comments to explain code follow the convention for C ( /* … */ ) and C++ single line ( // . ) comments. C-style blocks are generally restricted to documentation headers for files, classes and functions. The C++ style is generally used for making code notes. Code notes are strongly encouraged to help other people, including your future-self, follow the purpose of the code. Always provide notes where the code is performing particularly complex operations.
Perl/shell style comments ( # ) are not permitted in PHP files.
Blocks of code may, of course, be commented out for debugging purposes using any appropriate format, but should be removed before submitting patches for contribution back to the core code.
For example, do not include feature submissions like:
More details on inline code comments can be found in the chapter on Inline Code Comments.
Comment Docblocks
Documentation headers for PHP and Javascript code in files, classes, class properties, methods and functions, called the docblocks, follow a convention similar to JavaDoc or phpDOC.
These «DocBlocks» borrow from the PEAR standard but have some variations specific for Joomla and the Joomla Platform.
More details on DocBlocks comments can be found in the chapter on DocBlocks Comments.
Function Calls
Functions should be called with no spaces between the function name and the opening parenthesis, and no space between this and the first parameter; a space after the comma between each parameter (if they are present), and no space between the last parameter and the closing parenthesis. There should be space before and exactly one space after the equals sign. Tab alignment over multiple lines is permitted.
Function Definitions
Function definitions start on a new line with no spaces between the function name and the opening parenthesis. Additionally, the opening and closing braces are also placed on new lines. An empty line should precede lines specifying the return value.
Function definitions must include a documentation comment in accordance with the Commenting section of this document. More details on DocBlocks Function comments can be found in the chapter on DocBlocks Comments.
If a function definition goes over multiple lines, all lines must be indented with one tab and the closing brace must go on the same line as the last parameter.
Closures / Anonymous functions
Closures/Anonymous functions should have a space between the Closure’s/Anonymous function’s name and the opening parenthesis. Method signatures don’t have the space.
Class Definitions
Class definitions start on a new line and the opening and closing braces are also placed on new lines. Class methods must follow the guidelines for Function Definitions. Properties and methods must follow OOP standards and be declared appropriately (using public, protected, private and static as applicable).
Class definitions, properties and methods must each be provided with a DocBlock in accordance with the following sections.
More details on DocBlocks Class comments can be found in the chapter on DocBlocks Comments.
Class Property DocBlocks
More details on Class Property DocBlocks can be found in the chapter on DocBlocks Comments.
Class Method DocBlocks
The DocBlock for class methods follows the same convention as for PHP functions.
More details on DocBlocks Class Method comments can be found in the chapter on DocBlocks Comments.
Class Definition Example
Naming Conventions
Classes
Classes should be given descriptive names. Avoid using abbreviations where possible. Class names should always begin with an uppercase letter and be written in CamelCase even if using traditionally uppercase acronyms (such as XML, HTML). One exception is for Joomla Platform classes which must begin with an uppercase ‘J’ with the next letter also being uppercase.
Functions and Methods
Functions and methods should be named using the «studly caps» style (also referred to as «bumpy case» or «camel caps»). The initial letter of the name is lowercase, and each letter that starts a new «word» is capitalized. Function in the Joomla framework must begin with a lowercase ‘j’.
Private class members (meaning class members that are intended to be used only from within the same class in which they are declared) are preceded by a single underscore. Properties are to be written in underscore format (that is, logical words separated by underscores) and should be all lowercase.
Namespaces
Namespaces are formatted according to this flow. First there is the file docblock followed by the namespace the file lives in. When required, the namespace is followed by the defined check. Lastly, the imported classes using the use keyword. All namespace imports must be alphabetically ordered.
Constants
Constants should always be all-uppercase, with underscores to separate words. Prefix constant names with the uppercase name of the class/package they are used in. For example, the constants used by the JError class all begin with JERROR_ .
Regular Variables and Class Properties
Regular variables, follow the same conventions as function.
Class variables should be set to null or some other appropriate default value.
Exception Handling
Exceptions should be used for error handling.
The following sections outline how to semantically use SPL exceptions.
Logic Exceptions
The LogicException is thrown when there is an explicit problem with the way the API is being used. For example, if a dependency has failed (you try to operate on an object that has not been loaded yet).
The following child classes can also be used in appropriate situations:
BadFunctionCallException
This exception can be thrown if a callback refers to an undefined function or if some arguments are missing. For example if is_callable() , or similar, fails on a function.
BadMethodCallException
This exception can be thrown if a callback refers to an undefined method or if some arguments are missing. For example is_callable() , or similar, fails on a class method. Another example might be if arguments passed to a magic call method are missing.
InvalidArgumentException
This exception can be thrown if there is invalid input.
DomainException
This exception is similar to the InvalidArgumentException but can be thrown if a value does not adhere to a defined valid data domain. For example trying to load a database driver of type «mongodb» but that driver is not available in the API.
LengthException
This exception can be thrown is a length check on an argument fails. For example a file signature was not a specific number of characters.
OutOfRangeException
This exception has few practical applications but can be thrown when an illegal index was requested.
Runtime Exceptions
The RuntimeException is thrown when some sort of external entity or environment causes a problem that is beyond your control providing the input is valid. This exception is the default case for when the cause of an error can’t explicitly be determined. For example you tried to connect to a database but the database was not available (server down, etc). Another example might be if an SQL query failed.
UnexpectedValueException
This type of exception should be used when an unexpected result is encountered. For example a function call returned a string when a boolean was expected.
OutOfBoundsException
This exception has few practical applications but may be thrown if a value is not a valid key.
OverflowException
This exception has few practical applications but may be thrown when you add an element into a full container.
RangeException
This exception has few practical applications but may be thrown to indicate range errors during program execution. Normally this means there was an arithmetic error other than under/overflow. This is the runtime version of DomainException.
UnderflowException
This exception has few practical applications but may thrown when you try to remove an element of an empty container.
Documenting exceptions
Each function or method must annotate the type of exception that it throws using an @throws tag and any downstream exceptions types that are thrown. Each type of exception need only be annotated once. No description is necessary.
SQL Queries
SQL keywords are to be written in uppercase, while all other identifiers (with the exception of quoted text obviously) is to be in lowercase.
All table names should use the #__ prefix to access Joomla content and allow for the user defined database prefix to be applied. Queries should also use the JDatabaseQuery API. Tables should never have a static prefix such as jos_ .
To query our data source we can call a number of JDatabaseQuery methods; these methods encapsulate the data source’s query language (in most cases SQL), hiding query-specific syntax from the developer and increasing the portability of the developer’s source code.
Use Query chaining to connect a number of query methods, one after the other, with each method returning an object that can support the next method, This improves readability and simplifies the resulting code. Since the Joomla Framework was introduced «query chaining» is now the recommended method for building database queries.
Table names and table column names should always be enclosed in the quoteName() method to escape the table name and table columns.
Field values checked in a query should always be enclosed in the quote() method to escape the value before passing it to the database. Integer field values checked in a query should also be type cast to (int) .