/** * Generate an article and return it as string * * @param mixed $varId The article ID or a Model object * @param boolean $blnMultiMode If true, only teasers will be shown * @param boolean $blnIsInsertTag If true, there will be no page relation * @param string $strColumn The name of the column * * @return string|boolean The article HTML markup or false */ public static function getArticle($varId, $blnMultiMode = false, $blnIsInsertTag = false, $strColumn = 'main') { /** @var \PageModel $objPage */ global $objPage; if (is_object($varId)) { $objRow = $varId; } else { if (!$varId) { return ''; } $objRow = \ArticleModel::findByIdOrAliasAndPid($varId, !$blnIsInsertTag ? $objPage->id : null); if ($objRow === null) { return false; } } // Check the visibility (see #6311) if (!static::isVisibleElement($objRow)) { return ''; } // Print the article as PDF if (isset($_GET['pdf']) && \Input::get('pdf') == $objRow->id) { // Deprecated since Contao 4.0, to be removed in Contao 5.0 if ($objRow->printable == 1) { trigger_error('Setting tl_article.printable to "1" has been deprecated and will no longer work in Contao 5.0.', E_USER_DEPRECATED); $objArticle = new \ModuleArticle($objRow); $objArticle->generatePdf(); } elseif ($objRow->printable != '') { $options = deserialize($objRow->printable); if (is_array($options) && in_array('pdf', $options)) { $objArticle = new \ModuleArticle($objRow); $objArticle->generatePdf(); } } } $objRow->headline = $objRow->title; $objRow->multiMode = $blnMultiMode; // HOOK: add custom logic if (isset($GLOBALS['TL_HOOKS']['getArticle']) && is_array($GLOBALS['TL_HOOKS']['getArticle'])) { foreach ($GLOBALS['TL_HOOKS']['getArticle'] as $callback) { static::importStatic($callback[0])->{$callback}[1]($objRow); } } $objArticle = new \ModuleArticle($objRow, $strColumn); $strBuffer = $objArticle->generate($blnIsInsertTag); // Disable indexing if protected if ($objArticle->protected && !preg_match('/^\\s*<!-- indexer::stop/', $strBuffer)) { $strBuffer = "\n<!-- indexer::stop -->" . $strBuffer . "<!-- indexer::continue -->\n"; } return $strBuffer; }