1

I need to create a website for my software and I'm researching Joomla as a tool to make it a reality.

I want to integrate my documentation directly into the website. The documentation is a huge doxygen-generated pile of hundreds of HTML files. Here is what it looks like on its own - I want everything with exception of the main banner and footer to become part of the Joomla website as seamlessly as possible (so that the documentation pages have the same navigation top portion and footer as the rest of the website, in addition to their own navigation bar).

The documentation will be regenerated with each version of the software (so it needs to be easy to update the content from the HTML files).

Is there a practical way to do this? I can modify templates for the documentation in any way necessary.

EDIT: Also, is there a way to integrate such static content with Joomla search?

3

Assuming you know PHP, there are a number of tools to assist you, but here are the general steps you'd use to get your static content into a Joomla database. In short, each page you import will be an article in the Joomla table #__content. It's important that you use the Joomla models, as there are a great deal of database relationships that must be correct (i.e. Permissions, tags, searches, etc.) that the Model takes care of.

Crawl your site: Assuming you don't want to manually process each page, I've used PHPCrawl to crawl our sites to find the pages I'm interested in

Parse the content from your HTML With each page that you want imported, you'll need to parse the HTML of that page to locate the content you want on the Joomla site. There are a number of ways to do this, but this question/answer will give you a starting point if you don't have your own ideas.

Create Categories: Depending on how many categories you have, and whether you want to create them manually, or automatically based on your extracted information above, this code will create a new Joomla Category from PHP. There is more data that is needed for a category, but you get the idea:

$basePath = JPATH_ADMINISTRATOR.'/components/com_categories';
require_once $basePath.'/models/category.php';
$catmodel = new CategoriesModelCategory(array('table_path' => $basePath.'/tables'));

$catData = array();
$catData['id'] = 0;
$catData['parent_id'] = 'your_parent_category_id';
$catData['title'] = 'your_category_title';
... continue with remaining data from #__categories
if(!$catmodel->save($catData)){
    echo 'Saved Category';
}

Create Articles: For each page that you parse, you then create a Joomla article to contain the HTML. That HTML can/should be split into the introtext or fulltext columns, but that's up to you. Creating an article is similiar to creating a category.

$basePath = JPATH_ADMINISTRATOR.'/components/com_content';
require_once $basePath.'/models/article.php';
$article_model = new ContentModelArticle(array('table_path' => $basePath.'/tables'));

$articleData = array();
$articleData ['id'] = 0;
$articleData ['catid'] = 'the_category_id_of_the_article';
$articleData ['title'] = 'your_category_title';
$articleData ['introtext'] = 'the_HTML_parsed_from_your_webpage';
... continue with remaining data from #__content
if(!$article_model ->save($articleData )){
    echo 'Saved Article';
}
0

Doxygen has a lot of tools to process and generate the output in several formats. Thus, a static subdomain or subdirectory mini site is straightforward.

If you want to load all content items into Joomla, you can import them as articles into specific categories. It is not a simple solution (like an extension). You have automate it with a script. In addition, you have to also reimport content into Joomla on every modification.

After being in a similar place, writing documentation on Markdown, I have opted for a subdirectory mini site.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.