{"id":19335702,"url":"https://github.com/buttercms/buttercms-php","last_synced_at":"2025-04-04T19:13:40.691Z","repository":{"id":9601896,"uuid":"62729718","full_name":"ButterCMS/buttercms-php","owner":"ButterCMS","description":"PHP API client for ButterCMS (https://buttercms.com)","archived":false,"fork":false,"pushed_at":"2024-12-10T14:15:58.000Z","size":67,"stargazers_count":40,"open_issues_count":0,"forks_count":10,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-04-03T05:10:01.402Z","etag":null,"topics":["api","api-client","cms","laravel","php"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ButterCMS.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-07-06T14:58:46.000Z","updated_at":"2025-04-01T01:29:32.000Z","dependencies_parsed_at":"2025-01-04T22:11:13.952Z","dependency_job_id":"3c12ab5e-df76-4f12-b3bb-7e2fd9b3e0dc","html_url":"https://github.com/ButterCMS/buttercms-php","commit_stats":{"total_commits":62,"total_committers":11,"mean_commits":5.636363636363637,"dds":0.5,"last_synced_commit":"75b1a42c1a8561b3671542a303d16e78a4159cc2"},"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ButterCMS%2Fbuttercms-php","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ButterCMS%2Fbuttercms-php/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ButterCMS%2Fbuttercms-php/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ButterCMS%2Fbuttercms-php/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ButterCMS","download_url":"https://codeload.github.com/ButterCMS/buttercms-php/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247234923,"owners_count":20905854,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","api-client","cms","laravel","php"],"created_at":"2024-11-10T03:08:32.391Z","updated_at":"2025-04-04T19:13:40.657Z","avatar_url":"https://github.com/ButterCMS.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ButterCMS PHP API Wrapper\n\nThis wrapper enables PHP developers to quickly and easily get up and running with [ButterCMS](https://buttercms.com/). It is based of off the [API documentation](https://buttercms.com/docs/api/).\n\n## Requirements\n\nPHP 5.3.0 and later.\n\n## Composer\n\nYou can install the bindings via [Composer](http://getcomposer.org/). Run the following command:\n\n```bash\ncomposer require buttercms/buttercms-php\n```\n\nTo use the bindings, use Composer's [autoload](https://getcomposer.org/doc/00-intro.md#autoloading):\n\n```php\nrequire_once('vendor/autoload.php');\n```\n\n## Manual Installation\n\nIf you do not wish to use Composer, you can download the [latest release](https://github.com/buttercms/buttercms-php/releases). Then, to use the bindings, include the `src/ButterCMS.php` file.\n\n```php\nrequire_once('/path/to/buttercms-php/src/ButterCMS.php');\n```\n\n## Authentication\n\nBy default the ButterCMS client expects a valid authentication token for all READ operations. For instructions on how to obtain a valid READ authentication token see the [API documentation](https://buttercms.com/docs/api/#authentication).\n\nOptionally, the ButterCMS client additionally accepts a valid authentication token for all WRITE operations. For instructions on how to obtain a valid WRITE authentication token see the [API documentation](https://buttercms.com/docs/api/#write-authentication).\n\n```php\nuse ButterCMS\\ButterCMS;\n\n$butterCms = new ButterCMS(\n    '\u003cauth_token\u003e',\n    '\u003cwrite_auth_token\u003e'    // Optional\n);\n```\n\n## Pages\n\nFor a list of `params` see the [API documentation](https://buttercms.com/docs/api/?php#pages)\n\n```php\nuse ButterCMS\\ButterCMS;\n\n$butterCms = new ButterCMS('\u003cauth_token\u003e', '\u003cwrite_auth_token\u003e');\n\n// Create a Page\n$writeApiStatus = $butterCms-\u003ecreatePage($params);\n\n// Fetch a Page\n$page = $butterCms-\u003efetchPage('about', 'welcome-to-the-site');\n\n// Update a Page\n$pageData = json_decode(json_encode($page), true);\n$pageData['title'] = 'New Page Title';\n$writeApiStatus = $butterCms-\u003eupdatePage('welcome-to-the-site', $pageData);\n\n// These are equivalent\necho $page-\u003egetFields()['some-field'];\necho $page-\u003egetField('some-field');\n\n$pagesResponse = $butterCms-\u003efetchPages('news', ['breaking-news' =\u003e true]);\nvar_dump($pagesResponse-\u003egetMeta()['count']);\nforeach ($pagesResponse-\u003egetPages() as $page) {\n    echo $page-\u003egetSlug();\n}\n// Error Handling\ntry {\n    $butterCms-\u003efetchPage('about', 'non-existent-page');\n} catch (GuzzleHttp\\Exception\\BadResponseException $e) {\n    // Happens for any non-200 response from the API\n    var_dump($e-\u003egetMessage());\n} catch (\\UnexpectedValueException $e) {\n    // Happens if there is an issue parsing the JSON response\n    var_dump($e-\u003egetMessage());\n}\n```\n\n## Collections\n\nFor a list of `params` and functionality see the [API documentation](https://buttercms.com/docs/api/#collections)\n\n```php\nuse ButterCMS\\ButterCMS;\n\n$butterCms = new ButterCMS('\u003cauth_token\u003e', '\u003cwrite_auth_token\u003e');\n\n$writeApiStatus = $butterCms-\u003ecreateCollectionItem('collection_key', [\n    'status' =\u003e 'published',\n    'fields' =\u003e [\n        [\n          'field1_key': 'Field value',\n          'field2_key': 'Field value',\n        ]\n    ]\n]);\n\n// Get list of specific collections\n$collectionsResponse = $butterCms-\u003efetchCollections(['collection_key'], ['locale' =\u003e 'en']);\n\n// Get a collection from the list\n$collection = $collectionsResponse-\u003egetCollection('collection_key');\n\n// Get collection items\n$items = $collection-\u003egetItems();\n\n// Update a specific item\n$item = $items[0];\n$itemData = json_decode(json_encode($item), true);\n$itemData['fields']['field1_key'] = 'New field value';\n$writeApiStatus = $butterCms-\u003eupdateCollectionItem($collection-\u003egetKey(), $item-\u003egetId(), $itemData);\n\n// Delete a specific item\n$deleteSuccess = $butterCms-\u003edeleteCollectionItem($collection-\u003egetKey(), $item-\u003egetId());\n\n// Legacy - deprecated\n$contentFields = $butterCms-\u003efetchContentFields(['collection_key'], ['locale' =\u003e 'en']);\n\n```\n\n## Blog Engine\n\nFor a list of `params` see the [API documentation](https://buttercms.com/docs/api/?php#blog-engine)\n\n```php\nuse ButterCMS\\ButterCMS;\n\n$butterCms = new ButterCMS('\u003cauth_token\u003e', '\u003cwrite_auth_token\u003e');\n\n// Posts\n$result = $butterCms-\u003efetchPosts(['page' =\u003e 1]);\n\n$meta = $result-\u003egetMeta(); // Meta information like pagination\nprint_r($meta);\n\n$posts = $result-\u003egetPosts(); // Get posts array off of result\n\n$post = $posts[0]; // Get the first post\necho $post-\u003egetTitle(); // Access attributes using getXxxx() format.\necho $post-\u003egetSlug();\n\n$author = $post-\u003egetAuthor(); // Access nested objects: Author, Tags, Categories like so\necho $author-\u003egetFirstName();\necho $author-\u003egetLastName();\n\n// Loop through posts\nforeach ($posts as $post) {\n    echo $post-\u003egetTitle();\n}\n\n// Create a Post\n$writeApiStatus = $butterCms-\u003ecreatePost($params);\n\n// Query for one post\n$response = $butterCms-\u003efetchPost('post-slug');\n$post = $response-\u003egetPost();\necho $post-\u003egetTitle();\n\n// Update a Post\n$postData = json_decode(json_encode($post), true);\n$postData['title'] = 'New Post Title';\n$writeApiStatus = $butterCms-\u003eupdatePost('post-slug', $postData);\n\n// Authors\n$butterCms-\u003efetchAuthor('author-slug');\n$butterCms-\u003efetchAuthors(['include' =\u003e 'recent_posts']);\n\n// Categories\n$butterCms-\u003efetchCategory('category-slug');\n$butterCms-\u003efetchCategories(['include' =\u003e 'recent_posts']);\n\n// Tags\n$butterCms-\u003efetchTag('tag-slug');\n$butterCms-\u003efetchTags();\n\n// Feeds - returns a SimpleXMLElement object\n$feed = $butterCms-\u003efetchFeed('rss');\n\n// Search\n$butterCms-\u003esearchPosts('query', ['page' =\u003e 1]);\n```\n\n### Other\n\nView PHP [Blog engine](https://buttercms.com/php-blog-engine/) and [Full CMS](https://buttercms.com/php-cms/) for other examples of using ButterCMS with PHP.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbuttercms%2Fbuttercms-php","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbuttercms%2Fbuttercms-php","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbuttercms%2Fbuttercms-php/lists"}