code: public function generateArticle(Contao\DataContainer $dc)
  	{
  		// Return if there is no active record (override all)
  		if (!$dc->activeRecord)
  		{
  			return;
  		}
  
  		// No title or not a regular page
  		if ($dc->activeRecord->title == '' || !\in_array($dc->activeRecord->type, array('regular', 'error_401', 'error_403', 'error_404')))
  		{
  			return;
  		}
  
  		/** @var Symfony\Component\HttpFoundation\Session\Attribute\AttributeBagInterface $objSessionBag */
  		$objSessionBag = Contao\System::getContainer()->get('session')->getBag('contao_backend');
  
  		$new_records = $objSessionBag->get('new_records');
  
  		// Not a new page
  		if (!$new_records || !\is_array($new_records[$dc->table]) || !\in_array($dc->id, $new_records[$dc->table]))
  		{
  			return;
  		}
  
  		// Check whether there are articles (e.g. on copied pages)
  		$objTotal = $this->Database->prepare("SELECT COUNT(*) AS count FROM tl_article WHERE pid=?")
  								   ->execute($dc->id);
  
  		if ($objTotal->count > 0)
  		{
  			return;
  		}
  
  		// Create article
  		$arrSet['pid'] = $dc->id;
  		$arrSet['sorting'] = 128;
  		$arrSet['tstamp'] = time();
  		$arrSet['author'] = $this->User->id;
  		$arrSet['inColumn'] = 'main';
  		$arrSet['title'] = $dc->activeRecord->title;
  		$arrSet['alias'] = str_replace('/', '-', $dc->activeRecord->alias); // see #5168
  		$arrSet['published'] = $dc->activeRecord->published;
  
  		$this->Database->prepare("INSERT INTO tl_article %s")->set($arrSet)->execute();
  	}
docs: Automatically create an article in the main column of a new page
  
  @param Contao\DataContainer $dc