官术网_书友最值得收藏!

  • concrete5 Cookbook
  • David Strack
  • 392字
  • 2021-08-13 16:15:56

Creating a page type

You can easily add new page types through the concrete5 user interface, but there are some situations that can require you to create page types dynamically using PHP code.

Getting ready

First, you will need to create an associative array that contains the data of the page type that you are creating.

The array can contain the following fields:

How to do it...

We will create a page type using only the required fields: ctHandle and ctName. The steps are as follows:

  1. Open /config/site_post.php in your preferred code editor.
  2. Declare the handle of the new page type to be created.
    $handle = 'page_type_handle';
  3. Declare the array that contains the data for the ctHandle and ctName fields.
    $data = array(
      'ctHandle' => $handle,
      'ctName' => 'Page Type Name'
    );
  4. Check to see if the page type already exists by loading it by the new handle.
    $pageType = CollectionType::getByHandle($handle);
  5. If the page type does not exist, create it.
    if (!$pageType) {
      $newPageType = CollectionType::add($data);
    }
  6. If it does exist, assign the existing page type to the new page type variable.
    else {
      $newPageType = $pageType;
    }
  7. Dump the new page type variable to ensure that it worked.
    my_debug($newPageType);

How it works...

concrete5 will take the data array that you pass in and use it to create a new CollectionType record in the database. concrete5 will also automatically generate a Master Collection page in the database. The Master Collection is a template page that concrete5 will use as base for all pages of that type. Any blocks, attributes, or other data assigned to the Master Collection will automatically be added to any new pages created with that page type.

There's more...

If you are creating this page type in a custom package, you will need to pass in your package object to the add() function, so concrete5 knows that this page type belongs to your package. That way, when users uninstall your package, they will have the option of removing all of the page types that it created.

Assuming that you know the handle of your package, use the following code to create a page type with it:

$data = array(
  'ctHandle' => $handle,
  'ctName' => 'Page Type Name'
);
$pkg = Package::getByHandle('my_package');
$newPageType = CollectionType::add($data, $pkg);

See also

  • The Creating custom add-on package recipe
  • The Updating a page type recipe
主站蜘蛛池模板: 林芝县| 周至县| 通江县| 巨野县| 桐柏县| 阜宁县| 徐水县| 陇南市| 蓝山县| 大丰市| 定远县| 曲靖市| 古蔺县| 明水县| 徐水县| 西乌珠穆沁旗| 福清市| 苍梧县| 伊宁市| 灵璧县| 台江县| 逊克县| 泗阳县| 雅安市| 宁晋县| 商河县| 新晃| 陇川县| 泰安市| 句容市| 龙川县| 炉霍县| 柳河县| 望谟县| 海兴县| 威海市| 小金县| 类乌齐县| 大悟县| 青川县| 喜德县|