typo3
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| typo3 [2012/02/21 15:52] – [Speaking URL] skipidar | typo3 [2020/12/27 20:35] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ===== TYPO3 usage and configuration ===== | ||
| + | ==== Where is the TYPO3 Documentation? | ||
| + | * The real english documentation is available as an Extension [[ http:// | ||
| + | * The official documentation, | ||
| + | * The more usable documentation in German language as one .pdf File is [[ http:// | ||
| + | |||
| + | |||
| + | ==== How to enable Typo3 Admin Panel for frontend editing? ==== | ||
| + | |||
| + | {{youtube> | ||
| + | \\ | ||
| + | Add the following code to TSconfig of the user or user-group, which should see the Administration Console after logging in. | ||
| + | |||
| + | < | ||
| + | admPanel { | ||
| + | enable.edit=1 | ||
| + | module.edit.forceDisplayFieldIcons=1 | ||
| + | hide=0 | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | or just add the following line into the | ||
| + | // Template > Info/Modify > Edit the whole template record > Setup-form // | ||
| + | < | ||
| + | config.admPanel = 1 | ||
| + | </ | ||
| + | ==== How to allow recursive deleting of a page Tree in the List module? ==== | ||
| + | |||
| + | Add the following customization to the current user' TSConfig: \\ | ||
| + | < | ||
| + | setup.override{ | ||
| + | recursiveDelete=1 | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ===== RTE - RichTextEditor ===== | ||
| + | The RTE is configurated in the pages TS-Config. To decide which Buttons should be displayed and in which order write the following into the root-page TS-Config. | ||
| + | < | ||
| + | # Buttons die gezeigt/ | ||
| + | RTE.default.showButtons = textstyle, textstylelabel, | ||
| + | | ||
| + | RTE.default.hideButtons = fontstyle, formatblock, | ||
| + | |||
| + | # Buttons Reihenfolge | ||
| + | RTE.default.toolbarOrder = textstyle, textstylelabel, | ||
| + | </ | ||
| + | You can see all buttons by entering | ||
| + | < | ||
| + | showButtons = * | ||
| + | </ | ||
| + | |||
| + | The TSConfig can be entered as following: | ||
| + | |||
| + | {{ http:// | ||
| + | {{ http:// | ||
| + | |||
| + | |||
| + | ===== TypoScript ===== | ||
| + | |||
| + | * TypoScript is case sensitive. | ||
| + | * The names of object types must have all letters in upper case: mypage = PAGE | ||
| + | * The names of properties must always start with a small letter and must not contain any special character: OBJECT.property NOT OBJECT.Propert&# | ||
| + | |||
| + | == Functions == | ||
| + | TypoScript has some functions, predefined in the file class.tslib_content.php like PAGE, HMENU etc. \\ | ||
| + | In the code they are written in capital letters and used to retrieve DOM objects, render html items like lists... | ||
| + | |||
| + | < | ||
| + | //page object has all integers as properties. Integers are not line numbers - they determine the order in which the content will be displayed on the page in ONE LINE | ||
| + | page.10 = TEXT | ||
| + | </ | ||
| + | |||
| + | == Objects == | ||
| + | Typo uses objects with predefined properties. The syntax to get or set the properties is. | ||
| + | < | ||
| + | page.10.value = TEXT | ||
| + | |||
| + | //to set more than one property of object at once | ||
| + | object{ | ||
| + | | ||
| + | | ||
| + | } | ||
| + | |||
| + | |||
| + | myObject = TEXT | ||
| + | //reference object | ||
| + | 10 =< myObject | ||
| + | //copy object | ||
| + | 10 < myObject | ||
| + | //delete object | ||
| + | 10 > | ||
| + | |||
| + | </ | ||
| + | |||
| + | Page has all integers as properties. Integers mean the output order, in which the assigned values will be displayed on the page **(order - not rows!** \\ | ||
| + | E.g. | ||
| + | < | ||
| + | # Default PAGE object: | ||
| + | page = PAGE | ||
| + | page.10 = TEXT | ||
| + | page.10.value = HELLO WORLD10! | ||
| + | |||
| + | page.20 = TEXT | ||
| + | page.20.value = HELLO WORLD20! | ||
| + | |||
| + | page.21 = TEXT | ||
| + | page.21.value = HELLO WORLD21! | ||
| + | |||
| + | page.30 = TEXT | ||
| + | page.30.value = HELLO WORLD30! | ||
| + | </ | ||
| + | |||
| + | results in : "HELLO WORLD10!HELLO WORLD20!HELLO WORLD21!HELLO WORLD30!" | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | == Branch== | ||
| + | Typo uses objects with predefined properties. The syntax to get or set the properties is. | ||
| + | < | ||
| + | |||
| + | [browser = msie] && [system = mac] | ||
| + | //here is the true code | ||
| + | [ELSE] | ||
| + | //here is the else code | ||
| + | [GLOBAL] | ||
| + | |||
| + | //rest | ||
| + | </ | ||
| + | |||
| + | Own branches can be defined in // | ||
| + | |||
| + | == Constants == | ||
| + | Constants can be defined in the **Constants** field of the **Template** area.\\ | ||
| + | |||
| + | {{ http:// | ||
| + | |||
| + | Constant can be retrieved as following | ||
| + | < | ||
| + | 10.value = {$myCOnstant} | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Design Templates ===== | ||
| + | \\ HTML documents, where some some places can be marked by **subparts**. Typo3 will then dynamically replace those subparts by content. \\ | ||
| + | |||
| + | ==markers== | ||
| + | **CAN' | ||
| + | Markers look like that | ||
| + | < | ||
| + | ### | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==subparts== | ||
| + | * **CAN** be embedded into HTML comments, composed of two parts. | ||
| + | * Subparts **can' | ||
| + | * Subparts | ||
| + | Markers look like that | ||
| + | < | ||
| + | <!-- ### | ||
| + | Default input | ||
| + | <!-- ### | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Templates ===== | ||
| + | // Written in Typoscript in **Backend Template> | ||
| + | |||
| + | ==Including CSS or Javascript in typoscript == | ||
| + | {{ http:// | ||
| + | |||
| + | ==Include any Code into the header== | ||
| + | Sometimes you may need to include a < | ||
| + | |||
| + | < | ||
| + | page = PAGE | ||
| + | page.headerData.10 = TEXT | ||
| + | page.headerData.10.value ( | ||
| + | <script type=" | ||
| + | MathJax.Hub.Config({ | ||
| + | config: [" | ||
| + | jax: [" | ||
| + | }); | ||
| + | </ | ||
| + | ) | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | === Use MySQL from TypoScript === | ||
| + | |||
| + | == Retrieving page properties from page table == | ||
| + | |||
| + | E.g. to read the **title** field from the database, wether the name of the DB Table, not the Database has to be specified. The value of the title-DB-field for the current page can be retrieved as following: | ||
| + | |||
| + | < | ||
| + | page.10.marks.OUTPUT= TEXT | ||
| + | page.10.marks.OUTPUT{ | ||
| + | field = title | ||
| + | } | ||
| + | </ | ||
| + | or | ||
| + | < | ||
| + | page.10.marks.RIGHT = TEXT | ||
| + | page.10.marks.RIGHT.data = field:title | ||
| + | </ | ||
| + | |||
| + | which will result in the following SQL statement | ||
| + | |||
| + | < | ||
| + | SELECT title FROM pages WHERE uid=23 | ||
| + | </ | ||
| + | |||
| + | ==Retrieving properties from other tables == | ||
| + | To specify more complicated queries use the //CONTENT// object, e.g. | ||
| + | < | ||
| + | 1 = CONTENT | ||
| + | 1.table = tt_content | ||
| + | 1.select { | ||
| + | pidInList = this | ||
| + | orderBy = sorting | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ===Menu generation=== | ||
| + | \\How to generate a menu dynamically, | ||
| + | |||
| + | ==HMENU== | ||
| + | Is not a renderable Typo3 objects, but one which contains menuitems by levels 1,2,3 ... | ||
| + | To each level a concrete menu like TMENU or GMENU can be attached. | ||
| + | |||
| + | ==IFSUB== | ||
| + | There are items, which | ||
| + | |||
| + | |||
| + | === Change Menu entries, add custom tags === | ||
| + | //To do this write a php function function($I, | ||
| + | |||
| + | ==1. Creating the function is described below== | ||
| + | |||
| + | ==2. Including of the created file with the function from the Backend works as following== | ||
| + | < | ||
| + | # lib to sort out emty-pages menu-links. | ||
| + | includeLibs.noemptymenuitems = fileadmin/ | ||
| + | </ | ||
| + | |||
| + | ==3. The defined function will be used inside of the menu objects as folowing== | ||
| + | < | ||
| + | FIRSTNAV = HMENU | ||
| + | FIRSTNAV.TMENU.1.IProcFunc = user_function_skipMenuLinksToEmptyPages | ||
| + | FIRSTNAV.TMENU.2.IProcFunc = user_function_skipMenuLinksToEmptyPages | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | ==Example of the menu changing function:== | ||
| + | checks whether there is any content on the site | ||
| + | * if yes - menuentry is displayed with a link to thesite | ||
| + | * if not - then | ||
| + | | ||
| + | | ||
| + | |||
| + | < | ||
| + | <?php | ||
| + | /** | ||
| + | * Used in the menu item state example of the " | ||
| + | * | ||
| + | * @param array The menu item array, $this->I (in the parent object) | ||
| + | * @param array TypoScript configuration for the function. Notice that the property " | ||
| + | * @return array The processed $I array returned (and stored in $this->I of the parent object again) | ||
| + | * @see tslib_menu:: | ||
| + | */ | ||
| + | function user_function_skipMenuLinksToEmptyPages($I, | ||
| + | $muid = $I[' | ||
| + | $firstLinkTag = $I[' | ||
| + | $wraper = $I[' | ||
| + | |||
| + | //check whether the site with the current pid is not empty | ||
| + | $query = " | ||
| + | $res = $GLOBALS[' | ||
| + | $rowarr = mysql_fetch_array($res); | ||
| + | | ||
| + | //if the page, which current menuitem links is empty | ||
| + | if($rowarr==false){ | ||
| + | //the current page is empty - hide its links | ||
| + | |||
| + | //check if the link has a class=" | ||
| + | if( strpos($firstLinkTag, | ||
| + | // | ||
| + | $I[' | ||
| + | $I[' | ||
| + | |||
| + | }else if(strpos($wraper, | ||
| + | //exchange link by span, for this empty menuitem with subitems in the second menu | ||
| + | $I[' | ||
| + | $I[' | ||
| + | } | ||
| + | } | ||
| + | return $I; | ||
| + | } | ||
| + | ?> | ||
| + | </ | ||
| + | ===== Extension development ===== | ||
| + | |||
| + | * Placing custom modules - and customized material in general! - in the **typo3conf/ | ||
| + | * Always prepend your user defined modules with a “u” like in “uPhotomarathon” | ||
| + | |||
| + | ==Including something into the head of a plugin page, like CSS or JS == | ||
| + | |||
| + | **$this-> | ||
| + | < | ||
| + | $GLOBALS[' | ||
| + | </ | ||
| + | |||
| + | == API for extension development == | ||
| + | |||
| + | ^Command used in class.tx_bibtexbrowser_pi1.php ^ what id does^ | ||
| + | |t3lib_extMgm:: | ||
| + | |t3lib_extMgm:: | ||
| + | |t3lib_extMgm:: | ||
| + | |function isLoaded($key, | ||
| + | |$GLOBALS[" | ||
| + | |$GLOBALS[' | ||
| + | |$GLOBALS[' | ||
| + | |||
| + | == Flexfields == | ||
| + | Flexfields define the backend-GUI, | ||
| + | Flexfields are html fields, defined in an xml file which is normally named // | ||
| + | ===== Localization (l10n) ===== | ||
| + | |||
| + | 1. First install new website language by choosing the page-root (earth or typo3 symbol) in the **Web > List** module and clicking the **add new record > Website Language**. | ||
| + | Do not add the default language. | ||
| + | |||
| + | |||
| + | {{ http:// | ||
| + | |||
| + | {{ http:// | ||
| + | |||
| + | 2. Add the following to the localconf.php file to enforce utf-8 encoding in the backend. | ||
| + | |||
| + | < | ||
| + | // For backend charset | ||
| + | $TYPO3_CONF_VARS[' | ||
| + | </ | ||
| + | |||
| + | 3. add something like that to the typoscript template: | ||
| + | < | ||
| + | # language | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | # | ||
| + | |||
| + | # deutsch | ||
| + | | ||
| + | | ||
| + | #typo internal code | ||
| + | language = de | ||
| + | | ||
| + | #country code, win:" | ||
| + | locale_all = de_DE | ||
| + | | ||
| + | #set xml:lang manually | ||
| + | htmlTag_langKey = de | ||
| + | | ||
| + | #internal id of this language, 0 default | ||
| + | sys_language_uid = 0 | ||
| + | } | ||
| + | | ||
| + | |||
| + | # english | ||
| + | | ||
| + | | ||
| + | language = en | ||
| + | locale_all = en_US | ||
| + | htmlTag_langKey = en | ||
| + | sys_language_uid = 1 | ||
| + | treeLevel = 1 | ||
| + | } | ||
| + | | ||
| + | </ | ||
| + | |||
| + | and the following to generate a language menu | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | # deutsch und englisch | ||
| + | special = language | ||
| + | special.value = 0,1 | ||
| + | 1 = TMENU | ||
| + | 1 { | ||
| + | NO = 1 | ||
| + | NO.stdWrap.cObject = TEXT | ||
| + | NO.stdWrap.cObject { | ||
| + | value = Deutsch || Englisch | ||
| + | | ||
| + | } | ||
| + | ACT < .NO | ||
| + | ACT.doNotLinkIt=1 | ||
| + | ACT.stdWrap.cObject { | ||
| + | value = DEUTSCH || Englisch | ||
| + | | ||
| + | } | ||
| + | USERDEF1 < .NO | ||
| + | USERDEF1.stdWrap.cObject { | ||
| + | value = DEUTSCH || - | ||
| + | | ||
| + | } | ||
| + | USERDEF2 < .NO | ||
| + | USERDEF2.stdWrap.cObject { | ||
| + | value = (DEUTSCH) || Englisch | ||
| + | | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | |||
| + | </ | ||
| + | |||
| + | 4. Add the following to the **User TSConfig** for default language to be named and displayed with a flag and a name (here " | ||
| + | |||
| + | < | ||
| + | #default language label in backend | ||
| + | mod.SHARED.defaultLanguageLabel=Deutsch | ||
| + | |||
| + | #default language flag file in gfx/flags/ | ||
| + | mod.SHARED.defaultLanguageFlag=de.gif | ||
| + | </ | ||
| + | |||
| + | {{ http:// | ||
| + | |||
| + | {{ http:// | ||
| + | |||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | \\ | ||
| + | ** If there are double content entries, after localization - add the following to the CONTENT TypoScript, to filter thecontent: ** | ||
| + | < | ||
| + | select.languageField = sys_language_uid | ||
| + | </ | ||
| + | e.g | ||
| + | < | ||
| + | |||
| + | | ||
| + | | ||
| + | table = tt_content | ||
| + | select.orderBy = sorting | ||
| + | select.where = colPos = 0 | ||
| + | select.languageField = sys_language_uid | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | 5. To activate the browser-language detection install the extension [[http:// | ||
| + | |||
| + | When both extensions **rlmp_language_detection** and **static_info_tables** are installed, configure the default language in the Teplate Setup (e.g. german): | ||
| + | < | ||
| + | # language in rlmp_language_detection plugin | ||
| + | plugin.tx_rlmplanguagedetection_pi1 { | ||
| + | | ||
| + | | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | **ATTENTION: | ||
| + | |||
| + | {{ http:// | ||
| + | |||
| + | ===== Speaking URL ===== | ||
| + | The URL can be configured to be more human and search engine friendly by using the **realurl** extension. | ||
| + | The following configuration is for multiple languages: Language 0 is German, Language 1 is English. | ||
| + | |||
| + | ==1. Extension == | ||
| + | Install the **realurl** extension | ||
| + | |||
| + | ==2. Typoscript template == | ||
| + | Add the following typoscript to the template. | ||
| + | < | ||
| + | ## REALURL ## | ||
| + | config { | ||
| + | simulateStaticDocuments = 0 | ||
| + | tx_realurl_enable = 1 | ||
| + | } | ||
| + | config.baseURL = http:// | ||
| + | [globalString = ENV: | ||
| + | config.baseURL = http:// | ||
| + | [globalString = ENV: | ||
| + | config.baseURL = http:// | ||
| + | [global] | ||
| + | </ | ||
| + | |||
| + | ==3. Edit ext_localconf.php== | ||
| + | Configure the extension in the **\typo3conf\ext\realurl\ext_localconf.php** | ||
| + | < | ||
| + | $TYPO3_CONF_VARS[' | ||
| + | ' | ||
| + | ' | ||
| + | ), | ||
| + | ' | ||
| + | array( | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ), | ||
| + | ' | ||
| + | # ' | ||
| + | ), | ||
| + | array( | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ), | ||
| + | ' | ||
| + | ), | ||
| + | ), | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ) | ||
| + | ), | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ) | ||
| + | ), | ||
| + | ), | ||
| + | ), | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | array( | ||
| + | ' | ||
| + | ), | ||
| + | array( | ||
| + | ' | ||
| + | ), | ||
| + | ), | ||
| + | ' | ||
| + | array( | ||
| + | ' | ||
| + | ), | ||
| + | ), | ||
| + | ' | ||
| + | array( | ||
| + | ' | ||
| + | ), | ||
| + | ), | ||
| + | ), | ||
| + | ), | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ), | ||
| + | ); | ||
| + | </ | ||
| + | |||
| + | ==4. htaccess== | ||
| + | Add the following configuration to the **.htaccess** in the root folder of typo3. | ||
| + | |||
| + | < | ||
| + | RewriteEngine On | ||
| + | |||
| + | RewriteRule ^typo3$ - [L] | ||
| + | RewriteRule ^typo3/.*$ - [L] | ||
| + | RewriteCond %{REQUEST_FILENAME} !-f | ||
| + | RewriteCond %{REQUEST_FILENAME} !-d | ||
| + | RewriteCond %{REQUEST_FILENAME} !-l | ||
| + | RewriteRule .* index.php | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | ===== Backend customization by TYPOSCRIPT ===== | ||
| + | Here the Backend customizations are done for a specific user inside of the TSConfig: | ||
| + | |||
| + | {{ http:// | ||
| + | |||
| + | {{ http:// | ||
| + | |||
| + | == Hide columns == | ||
| + | Left 1 | ||
| + | Normal 0 | ||
| + | Right 2 | ||
| + | Border 3 | ||
| + | |||
| + | < | ||
| + | #shows only columns Normal and Right | ||
| + | mod.SHARED.colPos_list = 0,2 | ||
| + | </ | ||
| + | |||
| + | == Language == | ||
| + | If multiple languages are used on the side - cusomize the default language | ||
| + | |||
| + | < | ||
| + | #default language label in backend | ||
| + | mod.SHARED.defaultLanguageLabel=Deutsch | ||
| + | |||
| + | #default language flag file in gfx/flags/ | ||
| + | mod.SHARED.defaultLanguageFlag=de.gif | ||
| + | </ | ||
| + | |||
| + | == Allow recursive deleting of pages== | ||
| + | If multiple languages are used on the side - cusomize the default language | ||
| + | |||
| + | < | ||
| + | setup.override.recursiveDelete=1 | ||
| + | </ | ||
| + | |||
| + | ===== Backend customization by BACKEND LAYOUT ===== | ||
| + | |||
| + | Since Typo 4.5 it is possible to customize the column names and positions in the backend: | ||
| + | |||
| + | 1. First create a new Backend column Layout: | ||
| + | |||
| + | by choosing the root page **Web> | ||
| + | |||
| + | {{ http:// | ||
| + | |||
| + | and adding a new **Backend Layout** | ||
| + | |||
| + | {{ http:// | ||
| + | |||
| + | by choosing a Title and clicking the Wizard button | ||
| + | |||
| + | {{ http:// | ||
| + | |||
| + | and creating a custom column layout, | ||
| + | by using the following column numbers: | ||
| + | |||
| + | ^Column^ Column Number^ | ||
| + | |NORMAL|0| | ||
| + | |LEFT|1| | ||
| + | |RIGHT|2| | ||
| + | |BORDER|3| | ||
| + | |||
| + | {{ http:// | ||
| + | |||
| + | finally add th layout to the chosen page in the **web> | ||
| + | |||
| + | {{ http:// | ||
| + | |||
| + | {{ http:// | ||
| + | |||
| + | so that the backend will look as following, if you defined a top column and a bottom column | ||
| + | |||
| + | {{ http:// | ||
| + | |||
| + | |||
| + | |||
| + | ===== localconf.php ===== | ||
| + | In the file localconf.php, | ||
| + | |||
| + | ==Set the encoding== | ||
| + | < | ||
| + | // For backend charset | ||
| + | $TYPO3_CONF_VARS[' | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Search ===== | ||
| + | |||
| + | |||
| + | |||
| + | === Indexed Search (indexed_search) === | ||
| + | Indexed search is an extension, which can check the site content and provide a searchbox. It needs severalt extensions to work fine: | ||
| + | - // | ||
| + | - //crawler// | ||
| + | - // | ||
| + | Install them all and configure them as given below. | ||
| + | |||
| + | |||
| + | == 1. Search results site == | ||
| + | Create a special page, where the search results will be displayed. | ||
| + | Check it's pid. | ||
| + | Assuming the pid is 133. | ||
| + | You wil need this below. | ||
| + | Hide the result page in the menu, so that it is not listed as a menu entry. | ||
| + | |||
| + | == 2. Add the results plugin to the results site == | ||
| + | |||
| + | Add the **general plugin** | ||
| + | |||
| + | {{http:// | ||
| + | |||
| + | {{http:// | ||
| + | |||
| + | == 3. new search results template == | ||
| + | Create a new search results template. Examples can be found in // \typo3\sysext\indexed_search\pi\ // | ||
| + | Assuming that a new template is named \\ fileadmin/ | ||
| + | You wil need this below. | ||
| + | |||
| + | |||
| + | |||
| + | == 3. Entry into the main template== | ||
| + | Use the pid and the path to the template. | ||
| + | |||
| + | < | ||
| + | # search - enable indexed search | ||
| + | | ||
| + | # search - set the search-result page id | ||
| + | | ||
| + | # set a new template for search results | ||
| + | | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | == 3. Retrieve the information from your site by using crawler== | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | === Site crawler (crawler) === | ||
| + | |||
| + | == 1. Create an index configuration == | ||
| + | Use the **List** module on the root page. Click "Add new record" | ||
| + | {{http:// | ||
| + | |||
| + | {{http:// | ||
| + | |||
| + | == 2. Crawl the site == | ||
| + | Use the **Info** module on the page you want to crawl (root? | ||
| + | Choose the **Site crawler** in the upper dropdown. | ||
| + | Choose the crawler configuration, | ||
| + | Click crawl site to start crawling. | ||
| + | |||
| + | {{http:// | ||
| + | |||
| + | == 3. Add a backend user == | ||
| + | The crawler needs a backend user named " | ||
| + | Add the user by using the **User Admin** module. | ||
| + | The password is not important. | ||
| + | |||
| + | == 3. Add searchbox == | ||
| + | The searchbox can be added by using the **macina_searchbox** extension. | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | === Searchbox (macina_searchbox) === | ||
| + | To add the searchbox somewhere into the design template. | ||
| + | |||
| + | == 1. Add a new section somewhere into the template == | ||
| + | < | ||
| + | <!-- ### | ||
| + | </ | ||
| + | |||
| + | == 2. Edit the the template to replace teh section by the searchbox == | ||
| + | < | ||
| + | | ||
| + | | ||
| + | </ | ||
